blob: 757b84ed6510f9d54ec5cbaebe0cbc40e831f4cd [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 */
schangd82195a2013-03-13 18:41:24 -0700397 /*-------------------------------------------------------------------------
398 Indications
399 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700400 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800401 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530402 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
403 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700404#ifdef WLAN_FEATURE_11W
405 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
406#else
407 NULL,
408#endif
Yue Ma365933a2013-08-14 15:59:08 -0700409 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
410 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700411};
412
413
Jeff Johnsone7245742012-09-05 17:12:55 -0700414/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700415 DAL Request Processing Array - the functions in this table will only be
416 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700417 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700418 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700419WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700420{
421 /*INIT*/
422 WDI_ProcessStartRsp, /* WDI_START_RESP */
423 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
424 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
425
426 /*SCAN*/
427 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
428 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
429 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
430 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
431
432 /* ASSOCIATION*/
433 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
434 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
435 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
436 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
437 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
438
439 /* Security */
440 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
441 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
442 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
443 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
444
445 /* QoS and BA APIs */
446 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
447 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
448 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
449 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
450 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
451
452 /* Miscellaneous Control APIs */
453 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
454 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
455 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
456 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
457 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
458
459 /* BA APIs*/
460 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
461 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700462
Jeff Johnson295189b2012-06-20 16:38:30 -0700463 /* IBSS APIs*/
464 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
465 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
466
467 /*Soft AP APIs*/
468 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
469 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
470 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
471 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
472
473 /* PowerSave APIs */
474 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
475 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
476 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
477 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
478 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
479 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
480 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
481 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
482 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
483 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
484 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
485 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
486 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
487 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
488 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
489 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
490 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
491 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700492
Jeff Johnson295189b2012-06-20 16:38:30 -0700493
494 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
495
496 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
497 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
498#ifdef WLAN_FEATURE_VOWIFI_11R
499 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
500#else
501 NULL,
502#endif /* WLAN_FEATURE_VOWIFI_11R */
503 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
504 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700505#ifdef FEATURE_OEM_DATA_SUPPORT
506 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
507#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700508 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700509#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700510 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
511
Jeff Johnson295189b2012-06-20 16:38:30 -0700512 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700513
Jeff Johnson295189b2012-06-20 16:38:30 -0700514 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700515
Jeff Johnsone7245742012-09-05 17:12:55 -0700516 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
517
Jeff Johnson295189b2012-06-20 16:38:30 -0700518#ifdef FEATURE_WLAN_SCAN_PNO
519 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
520 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
521 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
522#else
523 NULL,
524 NULL,
525 NULL,
526#endif // FEATURE_WLAN_SCAN_PNO
527
528 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
529
530 /*---------------------------------------------------------------------
531 Indications
532 ---------------------------------------------------------------------*/
533#ifdef WLAN_FEATURE_PACKET_FILTERING
534 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700535 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700536 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700537 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700538 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700539 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700540 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700541 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700542#else
543 NULL,
544 NULL,
545 NULL,
546 NULL,
547#endif // WLAN_FEATURE_PACKET_FILTERING
548
549 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
550 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
551
552 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
553#ifdef FEATURE_WLAN_CCX
554 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
555#else
556 NULL,
557#endif
558
559#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700560 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
561 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700562#else
563 NULL,
564 NULL,
565#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700566 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
567 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700568#ifdef WLAN_FEATURE_11AC
569 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700570#else
571 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700572#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800573#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
574 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
575#else
576 NULL,
577#endif
schangd82195a2013-03-13 18:41:24 -0700578 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700579#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700580 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700581#else
582 NULL,
583#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530584#ifdef FEATURE_WLAN_TDLS
585 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
586#else
587 NULL,
588#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700589#ifdef FEATURE_WLAN_LPHB
590 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
591#else
592 NULL,
593#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700594 /*---------------------------------------------------------------------
595 Indications
596 ---------------------------------------------------------------------*/
597 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
598 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
599 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
600 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
601 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
602 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
603
604 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
605
606 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
607
Jeff Johnson295189b2012-06-20 16:38:30 -0700608 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700609
610#ifdef FEATURE_WLAN_SCAN_PNO
611 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
612#else
613 NULL,
614#endif // FEATURE_WLAN_SCAN_PNO
615
616#ifdef WLAN_WAKEUP_EVENTS
617 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
618#else // WLAN_WAKEUP_EVENTS
619 NULL,
620#endif // WLAN_WAKEUP_EVENTS
621
622 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800623
Viral Modi9dc288a2012-12-10 13:09:21 -0800624 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530625#ifdef FEATURE_WLAN_TDLS
626 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
627#else
628 NULL,
629#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700630
631#ifdef FEATURE_WLAN_LPHB
632 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
633#else
634 NULL,
635#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700636
637 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700638
639 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700640};
641
642
Jeff Johnsone7245742012-09-05 17:12:55 -0700643/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700644 WLAN DAL Global Control Block
645 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700646WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700647static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
648
Jeff Johnsone7245742012-09-05 17:12:55 -0700649const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700650
651/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700652WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700653void* WDI_GET_PAL_CTX( void )
654{
Jeff Johnsone7245742012-09-05 17:12:55 -0700655 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700656}/*WDI_GET_PAL_CTX*/
657
Jeff Johnsone7245742012-09-05 17:12:55 -0700658/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700659 Helper inline converters
660 ============================================================================*/
661/*Convert WDI driver type into HAL driver type*/
662WPT_STATIC WPT_INLINE WDI_Status
663WDI_HAL_2_WDI_STATUS
664(
665 eHalStatus halStatus
666);
667
668/*Convert WDI request type into HAL request type*/
669WPT_STATIC WPT_INLINE tHalHostMsgType
670WDI_2_HAL_REQ_TYPE
671(
672 WDI_RequestEnumType wdiReqType
673);
674
675/*Convert WDI response type into HAL response type*/
676WPT_STATIC WPT_INLINE WDI_ResponseEnumType
677HAL_2_WDI_RSP_TYPE
678(
679 tHalHostMsgType halMsg
680);
681
682/*Convert WDI driver type into HAL driver type*/
683WPT_STATIC WPT_INLINE tDriverType
684WDI_2_HAL_DRV_TYPE
685(
686 WDI_DriverType wdiDriverType
687);
688
689/*Convert WDI stop reason into HAL stop reason*/
690WPT_STATIC WPT_INLINE tHalStopType
691WDI_2_HAL_STOP_REASON
692(
693 WDI_StopType wdiStopType
694);
695
696/*Convert WDI scan mode type into HAL scan mode type*/
697WPT_STATIC WPT_INLINE eHalSysMode
698WDI_2_HAL_SCAN_MODE
699(
700 WDI_ScanMode wdiScanMode
701);
702
703/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700704WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700705WDI_2_HAL_SEC_CH_OFFSET
706(
707 WDI_HTSecondaryChannelOffset wdiSecChOffset
708);
709
710/*Convert WDI BSS type into HAL BSS type*/
711WPT_STATIC WPT_INLINE tSirBssType
712WDI_2_HAL_BSS_TYPE
713(
714 WDI_BssType wdiBSSType
715);
716
717/*Convert WDI NW type into HAL NW type*/
718WPT_STATIC WPT_INLINE tSirNwType
719WDI_2_HAL_NW_TYPE
720(
721 WDI_NwType wdiNWType
722);
723
724/*Convert WDI chanel bonding type into HAL cb type*/
725WPT_STATIC WPT_INLINE ePhyChanBondState
726WDI_2_HAL_CB_STATE
727(
728 WDI_PhyChanBondState wdiCbState
729);
730
731/*Convert WDI chanel bonding type into HAL cb type*/
732WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
733WDI_2_HAL_HT_OPER_MODE
734(
735 WDI_HTOperatingMode wdiHTOperMode
736);
737
738/*Convert WDI mimo PS type into HAL mimo PS type*/
739WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
740WDI_2_HAL_MIMO_PS
741(
742 WDI_HTMIMOPowerSaveState wdiHTOperMode
743);
744
745/*Convert WDI ENC type into HAL ENC type*/
746WPT_STATIC WPT_INLINE tAniEdType
747WDI_2_HAL_ENC_TYPE
748(
749 WDI_EncryptType wdiEncType
750);
751
752/*Convert WDI WEP type into HAL WEP type*/
753WPT_STATIC WPT_INLINE tAniWepType
754WDI_2_HAL_WEP_TYPE
755(
756 WDI_WepType wdiWEPType
757);
758
759/*Convert WDI Link State into HAL Link State*/
760WPT_STATIC WPT_INLINE tSirLinkState
761WDI_2_HAL_LINK_STATE
762(
763 WDI_LinkStateType wdiLinkState
764);
765
Jeff Johnsone7245742012-09-05 17:12:55 -0700766/*Translate a STA Context from WDI into HAL*/
767WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700768void
769WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700770(
Jeff Johnson295189b2012-06-20 16:38:30 -0700771 tConfigStaParams* phalConfigSta,
772 WDI_ConfigStaReqInfoType* pwdiConfigSta
773);
Jeff Johnsone7245742012-09-05 17:12:55 -0700774
775/*Translate a Rate set info from WDI into HAL*/
776WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700777WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700778(
Jeff Johnson295189b2012-06-20 16:38:30 -0700779 tSirMacRateSet* pHalRateSet,
780 WDI_RateSet* pwdiRateSet
781);
782
783/*Translate an EDCA Parameter Record from WDI into HAL*/
784WPT_STATIC WPT_INLINE void
785WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700786(
Jeff Johnson295189b2012-06-20 16:38:30 -0700787 tSirMacEdcaParamRecord* phalEdcaParam,
788 WDI_EdcaParamRecord* pWDIEdcaParam
789);
790
791/*Copy a management frame header from WDI fmt into HAL fmt*/
792WPT_STATIC WPT_INLINE void
793WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
794(
795 tSirMacMgmtHdr* pmacMgmtHdr,
796 WDI_MacMgmtHdr* pwdiMacMgmtHdr
797);
798
799/*Copy config bss parameters from WDI fmt into HAL fmt*/
800WPT_STATIC WPT_INLINE void
801WDI_CopyWDIConfigBSSToHALConfigBSS
802(
803 tConfigBssParams* phalConfigBSS,
804 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
805);
806
Jeff Johnsone7245742012-09-05 17:12:55 -0700807/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 pointed to by user data */
809WPT_STATIC WPT_INLINE void
810WDI_ExtractRequestCBFromEvent
811(
812 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700813 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700814 void** ppUserData
815);
816
817wpt_uint8
818WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700819(
Jeff Johnson295189b2012-06-20 16:38:30 -0700820 WDI_ControlBlockType* pWDICtx,
821 WDI_BSSSessionType** ppSession
822);
823
824void
825WDI_AddBcastSTAtoSTATable
826(
827 WDI_ControlBlockType* pWDICtx,
828 WDI_AddStaParams * staParams,
829 wpt_uint16 usBcastStaIdx
830);
831
832WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700833(
Jeff Johnson295189b2012-06-20 16:38:30 -0700834 WDI_ControlBlockType* pWDICtx,
835 WDI_EventInfoType* pEventData
836);
837
838void
839WDI_SetPowerStateCb
840(
841 wpt_status status,
842 unsigned int dxePhyAddr,
843 void *pContext
844);
845
846#define CASE_RETURN_STRING( str ) \
847 case ( ( str ) ): return( #str ); break \
848
849/**
850 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700851
852 @param wdiReqMsgId: WDI Message request Id
853
854 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700855 @return Result of the function call
856*/
857static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
858{
859 switch (wdiReqMsgId)
860 {
861 CASE_RETURN_STRING( WDI_START_REQ );
862 CASE_RETURN_STRING( WDI_STOP_REQ );
863 CASE_RETURN_STRING( WDI_CLOSE_REQ );
864 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
865 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
866 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
867 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
868 CASE_RETURN_STRING( WDI_JOIN_REQ );
869 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
870 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
871 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
872 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
873 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
874 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
875 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
876 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
877 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
878 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
879 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
880 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
881 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
882 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
883 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
884 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
885 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
886 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
887 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
888 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
889 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
890 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
891 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
892 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
893 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
894 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
895 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530896#ifdef FEATURE_WLAN_TDLS
897 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
898#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700899 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
900 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
901 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
902 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
903 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
904 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
905 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
906 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
907 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
908 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
909 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
910 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
911 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
912 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
913 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
914 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
915 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
916 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
917 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
918 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
919 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
920 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
921 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
922 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
923 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700924 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700925 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
926 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
927 #ifdef FEATURE_WLAN_SCAN_PNO
928 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
929 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
930 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
931 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700932#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700933 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700934#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700935 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
936 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
937 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
938 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
939 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
940 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
941 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
942 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
943 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800944 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800945 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700946#ifdef WLAN_FEATURE_11W
947 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
948#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700949 default:
950 return "Unknown WDI MessageId";
951 }
952}
953
954
955
956/**
957 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700958
959 @param wdiRespMsgId: WDI Message response Id
960
961 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700962 @return Result of the function call
963*/
964static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
965{
966 switch (wdiRespMsgId)
967 {
968 CASE_RETURN_STRING( WDI_START_RESP );
969 CASE_RETURN_STRING( WDI_STOP_RESP );
970 CASE_RETURN_STRING( WDI_CLOSE_RESP );
971 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
972 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
973 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
974 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
975 CASE_RETURN_STRING( WDI_JOIN_RESP );
976 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
977 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
978 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
979 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
980 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
981 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
982 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
983 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
984 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
985 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
986 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
987 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
988 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
989 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
990 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
991 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
992 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
993 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
994 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
995 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
996 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
997 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
998 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
999 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1000 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1001 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1002 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301003#ifdef FEATURE_WLAN_TDLS
1004 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1005 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1006#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001007 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1008 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1009 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1010 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1011 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1012 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1013 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1014 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1015 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1016 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1017 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1018 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1019 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1020 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1021 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1022 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1023 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1024 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1025 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1026 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1027 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1028 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1029 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1030 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1031 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001032 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001033 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1034 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1035 #ifdef FEATURE_WLAN_SCAN_PNO
1036 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1037 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1038 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1039 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001040#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001041 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001042#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001043 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1044 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1045 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1046 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1047 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1048 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1049 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1050 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001051 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 default:
1053 return "Unknown WDI MessageId";
1054 }
1055}
1056
1057/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301058 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1059 Capability bitmap array.
1060 @param capabilityBitmap - Base address of Bitmap array
1061 @see
1062 @returns None
1063 */
1064void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1065{
1066 int i;
1067 char capStr[512];
1068 char *pCapStr = capStr;
1069 for (i = 0; i < 32; i++) {
1070 if ((*(capabilityBitmap + 0) & (1 << i))) {
1071 switch(i) {
1072 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1073 pCapStr += strlen("MCC");
1074 break;
1075 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1076 pCapStr += strlen("P2P");
1077 break;
1078 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1079 pCapStr += strlen("DOT11AC");
1080 break;
1081 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1082 pCapStr += strlen("SLM_SESSIONIZATION");
1083 break;
1084 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1085 pCapStr += strlen("DOT11AC_OPMODE");
1086 break;
1087 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1088 pCapStr += strlen("SAP32STA");
1089 break;
1090 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1091 pCapStr += strlen("TDLS");
1092 break;
1093 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1094 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1095 break;
1096 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1097 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1098 break;
1099 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1100 pCapStr += strlen("BEACON_OFFLOAD");
1101 break;
1102 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1103 pCapStr += strlen("SCAN_OFFLOAD");
1104 break;
1105 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1106 pCapStr += strlen("ROAM_OFFLOAD");
1107 break;
1108 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1109 pCapStr += strlen("BCN_MISS_OFFLOAD");
1110 break;
1111 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1112 pCapStr += strlen("STA_POWERSAVE");
1113 break;
1114 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1115 pCapStr += strlen("AP_UAPSD");
1116 break;
1117 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1118 pCapStr += strlen("AP_DFS");
1119 break;
1120 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1121 pCapStr += strlen("BLOCKACK");
1122 break;
1123 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1124 pCapStr += strlen("PHY_ERR");
1125 break;
1126 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1127 pCapStr += strlen("BCN_FILTER");
1128 break;
1129 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1130 pCapStr += strlen("RTT");
1131 break;
1132 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1133 pCapStr += strlen("RATECTRL");
1134 break;
1135 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1136 pCapStr += strlen("WOW");
1137 break;
1138 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1139 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1140 break;
1141 }
1142 *pCapStr++ = ',';
1143 *pCapStr++ = ' ';
1144 }
1145 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301146 pCapStr -= 2;
1147 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301148 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301150}
1151
1152/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001153 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001154
1155 @param halStatusId: HAL status Id
1156
1157 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001158 @return Result of the function call
1159*/
1160static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1161{
1162 switch (halStatusId)
1163 {
1164 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1165 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1166 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1167 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1168 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1169 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1170 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1171 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1172 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1173 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1174 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1175 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1176 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1177 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1178 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1179 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1180 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1181 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1182 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1183 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1184 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1185 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1186 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1187 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1188 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1189 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1190 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1191 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1192 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1193 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1194 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1195 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1196 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1197 default:
1198 return "Unknown HAL status";
1199 }
1200}
1201
Jeff Johnsone7245742012-09-05 17:12:55 -07001202/*========================================================================
1203
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001205
Jeff Johnson295189b2012-06-20 16:38:30 -07001206==========================================================================*/
1207
1208/**
1209 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001210
Jeff Johnson295189b2012-06-20 16:38:30 -07001211 DAL will allocate all the resources it needs. It will open PAL, it will also
1212 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001213 DXE/SMD or any other drivers that they need.
1214
Jeff Johnson295189b2012-06-20 16:38:30 -07001215 @param pOSContext: pointer to the OS context provided by the UMAC
1216 will be passed on to PAL on Open
1217 ppWDIGlobalCtx: output pointer of Global Context
1218 pWdiDevCapability: output pointer of device capability
1219
1220 @return Result of the function call
1221*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001223WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001224(
Jeff Johnson295189b2012-06-20 16:38:30 -07001225 void* pOSContext,
1226 void** ppWDIGlobalCtx,
1227 WDI_DeviceCapabilityType* pWdiDevCapability,
1228 unsigned int driverType
1229)
1230{
1231 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001232 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001233 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001234 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1236
1237 /*---------------------------------------------------------------------
1238 Sanity check
1239 ---------------------------------------------------------------------*/
1240 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1241 {
1242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1243 "Invalid input parameters in WDI_Init");
1244
Jeff Johnsone7245742012-09-05 17:12:55 -07001245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001246 }
1247
1248 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 ---------------------------------------------------------------------*/
1251 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1252 {
1253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1254 "WDI module already initialized - return");
1255
Jeff Johnsone7245742012-09-05 17:12:55 -07001256 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001257 }
1258
1259 /*Module is now initialized - this flag is to ensure the fact that multiple
1260 init will not happen on WDI
1261 !! - potential race does exist because read and set are not atomic,
1262 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001263 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001264
1265 /*Setup the control block */
1266 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001267 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001268
1269 /*Setup the STA Table*/
1270 wdiStatus = WDI_STATableInit(&gWDICb);
1271 if ( WDI_STATUS_SUCCESS != wdiStatus )
1272 {
1273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1274 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001275 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 goto fail_STATableInit;
1277 }
1278
1279 /*------------------------------------------------------------------------
1280 Open the PAL
1281 ------------------------------------------------------------------------*/
1282 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1283 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1284 {
1285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1286 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001287 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001288 goto fail_wpalOpen;
1289 }
1290
1291 /*Initialize main synchro mutex - it will be used to ensure integrity of
1292 the main WDI Control Block*/
1293 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1294 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1295 {
1296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1297 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001298 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001299 goto fail_mutex;
1300 }
1301
1302 /*Initialize the response timer - it will be used to time all messages
1303 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001304 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1305 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001306 &gWDICb);
1307 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1308 {
1309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1310 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001311 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001312 goto fail_timer;
1313 }
1314
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001315 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1316 WDI_SsrTimerCB,
1317 &gWDICb);
1318 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1319 {
1320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1321 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001322 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001323 goto fail_timer2;
1324 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 /* Initialize the WDI Pending Request Queue*/
1326 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1327 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1328 {
1329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1330 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001331 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001332 goto fail_pend_queue;
1333 }
1334
1335 /*Init WDI Pending Assoc Id Queue */
1336 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1337 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1338 {
1339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1340 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001341 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001342 goto fail_assoc_queue;
1343 }
1344
1345 /*Initialize the BSS sessions pending Queue */
1346 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1347 {
1348 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1349 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1350 {
1351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1352 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001353 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001354 goto fail_bss_queue;
1355 }
1356 }
1357
1358 /*Indicate the control block is sufficiently initialized for callbacks*/
1359 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1360
1361 /*------------------------------------------------------------------------
1362 Initialize the Data Path Utility Module
1363 ------------------------------------------------------------------------*/
1364 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1365 if ( WDI_STATUS_SUCCESS != wdiStatus )
1366 {
1367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1368 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001369 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001370 goto fail_dp_util_init;
1371 }
1372
1373 /* Init Set power state event */
1374 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001375 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001376 {
1377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1378 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001379 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001380 goto fail_power_event;
1381 }
1382
1383 /* Init WCTS action event */
1384 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001385 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001386 {
1387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1388 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001389 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 goto fail_wcts_event;
1391 }
1392
1393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001394 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 ------------------------------------------------------------------------*/
1396 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1397 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001398 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001399 wctsCBs.wctsRxMsgCBData = &gWDICb;
1400
Jeff Johnsone7245742012-09-05 17:12:55 -07001401 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001403 WDI_CT_CHANNEL_SIZE,
1404 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001405
1406 if ( NULL == gWDICb.wctsHandle )
1407 {
1408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001409 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 goto fail_wcts_open;
1411 }
1412
1413 gWDICb.driverMode = (tDriverType)driverType;
1414 /* FTM mode not need to open Transport Driver */
1415 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001416 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001417 /*------------------------------------------------------------------------
1418 Open the Data Transport
1419 ------------------------------------------------------------------------*/
1420 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1421 {
1422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001423 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001424 goto fail_wdts_open;
1425 }
1426 }
1427
1428 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001429 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001430
1431 /*Send the context as a ptr to the global WDI Control Block*/
1432 *ppWDIGlobalCtx = &gWDICb;
1433
1434 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1437 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1438 return WDI_STATUS_SUCCESS;
1439
1440 /* ERROR handlers
1441 Undo everything that completed successfully */
1442
1443 fail_wdts_open:
1444 {
1445 wpt_status eventStatus;
1446
1447 /* Closing WCTS in this scenario is tricky since it has to close
1448 the SMD channel and then we get notified asynchronously when
1449 the channel has been closed. So we take some of the logic from
1450 the "normal" close procedure in WDI_Close()
1451 */
1452
1453 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001454 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 {
1456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001457 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001458 }
1459
1460 WCTS_CloseTransport(gWDICb.wctsHandle);
1461
1462 /* Wait for WCTS to close the control transport. If we were able
1463 to reset the event flag, then we'll wait for the event,
1464 otherwise we'll wait for a maximum amount of time required for
1465 the channel to be closed */
1466 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1467 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 WDI_WCTS_ACTION_TIMEOUT);
1470 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1471 {
1472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001473 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001474 }
1475 }
1476 else
1477 {
1478 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1479 }
1480 }
1481 fail_wcts_open:
1482 wpalEventDelete(&gWDICb.wctsActionEvent);
1483 fail_wcts_event:
1484 wpalEventDelete(&gWDICb.setPowerStateEvent);
1485 fail_power_event:
1486 WDI_DP_UtilsExit(&gWDICb);
1487 fail_dp_util_init:
1488 gWDICb.magic = 0;
1489 fail_bss_queue:
1490 /* entries 0 thru i-1 were successfully initialized */
1491 while (0 < i)
1492 {
1493 i--;
1494 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1495 }
1496 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1497 fail_assoc_queue:
1498 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1499 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001500 wpalTimerDelete(&gWDICb.ssrTimer);
1501 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 wpalTimerDelete(&gWDICb.wptResponseTimer);
1503 fail_timer:
1504 wpalMutexDelete(&gWDICb.wptMutex);
1505 fail_mutex:
1506 wpalClose(gWDICb.pPALContext);
1507 fail_wpalOpen:
1508 WDI_STATableClose(&gWDICb);
1509 fail_STATableInit:
1510 gWDIInitialized = eWLAN_PAL_FALSE;
1511
1512 return WDI_STATUS_E_FAILURE;
1513
1514}/*WDI_Init*/;
1515
1516/**
1517 @brief WDI_Start will be called when the upper MAC is ready to
1518 commence operation with the WLAN Device. Upon the call
1519 of this API the WLAN DAL will pack and send a HAL Start
1520 message to the lower RIVA sub-system if the SMD channel
1521 has been fully opened and the RIVA subsystem is up.
1522
1523 If the RIVA sub-system is not yet up and running DAL
1524 will queue the request for Open and will wait for the
1525 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001526 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001527
1528 WDI_Init must have been called.
1529
Jeff Johnsone7245742012-09-05 17:12:55 -07001530 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001531 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001532
Jeff Johnson295189b2012-06-20 16:38:30 -07001533 wdiStartRspCb: callback for passing back the response of
1534 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001535
Jeff Johnson295189b2012-06-20 16:38:30 -07001536 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001537 callback
1538
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 @see WDI_Start
1540 @return Result of the function call
1541*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001542WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001543WDI_Start
1544(
1545 WDI_StartReqParamsType* pwdiStartParams,
1546 WDI_StartRspCb wdiStartRspCb,
1547 void* pUserData
1548)
1549{
1550 WDI_EventInfoType wdiEventData;
1551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1552
1553 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001554 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 ------------------------------------------------------------------------*/
1556 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1557 {
1558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1559 "WDI API call before module is initialized - Fail request");
1560
Jeff Johnsone7245742012-09-05 17:12:55 -07001561 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001562 }
1563
1564 /*------------------------------------------------------------------------
1565 Fill in Event data and post to the Main FSM
1566 ------------------------------------------------------------------------*/
1567 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001568 wdiEventData.pEventData = pwdiStartParams;
1569 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1570 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 wdiEventData.pUserData = pUserData;
1572
1573 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1574
1575}/*WDI_Start*/
1576
1577/**
1578 @brief WDI_Stop will be called when the upper MAC is ready to
1579 stop any operation with the WLAN Device. Upon the call
1580 of this API the WLAN DAL will pack and send a HAL Stop
1581 message to the lower RIVA sub-system if the DAL Core is
1582 in started state.
1583
1584 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001585
1586 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001587
1588 WDI_Start must have been called.
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001592
Jeff Johnson295189b2012-06-20 16:38:30 -07001593 wdiStopRspCb: callback for passing back the response of
1594 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001595
Jeff Johnson295189b2012-06-20 16:38:30 -07001596 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001597 callback
1598
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 @see WDI_Start
1600 @return Result of the function call
1601*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001603WDI_Stop
1604(
1605 WDI_StopReqParamsType* pwdiStopParams,
1606 WDI_StopRspCb wdiStopRspCb,
1607 void* pUserData
1608)
1609{
1610 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001611 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1613
1614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001616 ------------------------------------------------------------------------*/
1617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1618 {
1619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1620 "WDI API call before module is initialized - Fail request");
1621
Jeff Johnsone7245742012-09-05 17:12:55 -07001622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001623 }
1624
Jeff Johnson43971f52012-07-17 12:26:56 -07001625 /*Access to the global state must be locked before cleaning */
1626 wpalMutexAcquire(&pWDICtx->wptMutex);
1627
1628 /*Clear all pending request*/
1629 WDI_ClearPendingRequests(pWDICtx);
1630
1631 /*We have completed cleaning unlock now*/
1632 wpalMutexRelease(&pWDICtx->wptMutex);
1633
Jeff Johnson295189b2012-06-20 16:38:30 -07001634 /* Free the global variables */
1635 wpalMemoryFree(gpHostWlanFeatCaps);
1636 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001637 gpHostWlanFeatCaps = NULL;
1638 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001639
1640 /*------------------------------------------------------------------------
1641 Fill in Event data and post to the Main FSM
1642 ------------------------------------------------------------------------*/
1643 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001644 wdiEventData.pEventData = pwdiStopParams;
1645 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1646 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001647 wdiEventData.pUserData = pUserData;
1648
1649 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1650
1651}/*WDI_Stop*/
1652
1653
1654
1655/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001656 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 needs to interact with DAL. DAL will free its control
1658 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001659
1660 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001661
1662 WDI_Stop must have been called.
1663
1664 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001665
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 @see WDI_Stop
1667 @return Result of the function call
1668*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001670WDI_Close
1671(
1672 void
1673)
1674{
1675 wpt_uint8 i;
1676 WDI_EventInfoType wdiEventData;
1677 wpt_status wptStatus;
1678 wpt_status eventStatus;
1679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1680
1681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001683 ------------------------------------------------------------------------*/
1684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1687 "WDI API call before module is initialized - Fail request");
1688
Jeff Johnsone7245742012-09-05 17:12:55 -07001689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 }
1691
1692 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1693 (the control transport will be closed by the FSM and we'll want
1694 to wait until that completes)*/
1695 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001696 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001697 {
1698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001699 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001700 /* fall through and try to finish closing via the FSM */
1701 }
1702
1703 /*------------------------------------------------------------------------
1704 Fill in Event data and post to the Main FSM
1705 ------------------------------------------------------------------------*/
1706 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001707 wdiEventData.pEventData = NULL;
1708 wdiEventData.uEventDataSize = 0;
1709 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001710 wdiEventData.pUserData = NULL;
1711
1712 gWDIInitialized = eWLAN_PAL_FALSE;
1713
1714 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1715
1716 /*Wait for WCTS to close the control transport
1717 (but only if we were able to reset the event flag*/
1718 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1719 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001720 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 WDI_WCTS_ACTION_TIMEOUT);
1722 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1723 {
1724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001725 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001726 }
1727 }
1728
1729 /* Destroy the WCTS action event */
1730 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1731 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1732 {
1733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1734 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 }
1737
1738 /* Destroy the Set Power State event */
1739 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1740 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1741 {
1742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1743 "WDI Close failed to destroy an event");
1744
Jeff Johnsone7245742012-09-05 17:12:55 -07001745 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001746 }
1747
1748 /*------------------------------------------------------------------------
1749 Closes the Data Path Utility Module
1750 ------------------------------------------------------------------------*/
1751 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1752 {
1753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1754 "WDI Init failed to close the DP Util Module");
1755
Jeff Johnsone7245742012-09-05 17:12:55 -07001756 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 }
1758
1759 /*destroy the BSS sessions pending Queue */
1760 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1761 {
1762 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1763 }
1764
1765 /* destroy the WDI Pending Assoc Id Request Queue*/
1766 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1767
1768 /* destroy the WDI Pending Request Queue*/
1769 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001770
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 /*destroy the response timer */
1772 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1773
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001774 /*destroy the SSR timer */
1775 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1776
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 /*invalidate the main synchro mutex */
1778 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1779 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1780 {
1781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1782 "Failed to delete mutex %d", wptStatus);
1783 WDI_ASSERT(0);
1784 }
1785
1786 /*Clear control block. note that this will clear the "magic"
1787 which will inhibit all asynchronous callbacks*/
1788 WDI_CleanCB(&gWDICb);
1789
1790 return wptStatus;
1791
1792}/*WDI_Close*/
1793
1794/**
1795 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1796 This will do most of the WDI stop & close
1797 operations without doing any handshake with Riva
1798
1799 This will also make sure that the control transport
1800 will NOT be closed.
1801
1802 This request will not be queued.
1803
1804
1805 WDI_Start must have been called.
1806
1807 @param closeTransport: Close control channel if this is set
1808
1809 @return Result of the function call
1810*/
1811WDI_Status
1812WDI_Shutdown
1813(
1814 wpt_boolean closeTransport
1815)
1816{
1817 WDI_EventInfoType wdiEventData;
1818 wpt_status wptStatus;
1819 int i = 0;
1820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1821
1822 /*------------------------------------------------------------------------
1823 Sanity Check
1824 ------------------------------------------------------------------------*/
1825 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1826 {
1827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1828 "WDI API call before module is initialized - Fail request");
1829
1830 return WDI_STATUS_E_NOT_ALLOWED;
1831 }
1832
1833 /*------------------------------------------------------------------------
1834 Fill in Event data and post to the Main FSM
1835 ------------------------------------------------------------------------*/
1836 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1837 wdiEventData.pEventData = NULL;
1838 wdiEventData.uEventDataSize = 0;
1839
1840 /* Shutdown will not be queued, if the state is busy timer will be
1841 * stopped & this message will be processed.*/
1842 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1843 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1844 {
1845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001846 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 }
1848 /* Destroy the Set Power State event */
1849 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1850 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1851 {
1852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1853 "WDI Close failed to destroy an event");
1854
1855 WDI_ASSERT(0);
1856 }
1857 /*------------------------------------------------------------------------
1858 Closes the Data Path Utility Module
1859 ------------------------------------------------------------------------*/
1860 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1861 {
1862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1863 "WDI Init failed to close the DP Util Module");
1864
1865 WDI_ASSERT(0);
1866 }
1867 if ( closeTransport )
1868 {
1869 /* Close control transport, called from module unload */
1870 WCTS_CloseTransport(gWDICb.wctsHandle);
1871 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001872 else
1873 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001874 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001875 the pending messages in the transport queue */
1876 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1877 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 /*destroy the BSS sessions pending Queue */
1879 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1880 {
1881 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1882 }
1883
1884 /* destroy the WDI Pending Assoc Id Request Queue*/
1885 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1886 /* destroy the WDI Pending Request Queue*/
1887 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1888 /*destroy the response timer */
1889 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001890 /*destroy the SSR timer */
1891 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001892
1893 /*invalidate the main synchro mutex */
1894 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1895 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1896 {
1897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001898 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 WDI_ASSERT(0);
1900 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001901 /* Free the global variables */
1902 wpalMemoryFree(gpHostWlanFeatCaps);
1903 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001904 gpHostWlanFeatCaps = NULL;
1905 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001906 /*Clear control block. note that this will clear the "magic"
1907 which will inhibit all asynchronous callbacks*/
1908 WDI_CleanCB(&gWDICb);
1909 return wptStatus;
1910
1911}/*WDI_Shutdown*/
1912
1913
Jeff Johnsone7245742012-09-05 17:12:55 -07001914/*========================================================================
1915
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001917
Jeff Johnson295189b2012-06-20 16:38:30 -07001918==========================================================================*/
1919
1920/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001921 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001922 the WLAN Device to get ready for a scan procedure. Upon
1923 the call of this API the WLAN DAL will pack and send a
1924 HAL Init Scan request message to the lower RIVA
1925 sub-system if DAL is in state STARTED.
1926
1927 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001928 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001929
1930 WDI_Start must have been called.
1931
1932 @param wdiInitScanParams: the init scan parameters as specified
1933 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001934
Jeff Johnson295189b2012-06-20 16:38:30 -07001935 wdiInitScanRspCb: callback for passing back the response
1936 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001939 callback
1940
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 @see WDI_Start
1942 @return Result of the function call
1943*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001944WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001945WDI_InitScanReq
1946(
1947 WDI_InitScanReqParamsType* pwdiInitScanParams,
1948 WDI_InitScanRspCb wdiInitScanRspCb,
1949 void* pUserData
1950)
1951{
1952 WDI_EventInfoType wdiEventData;
1953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1954
1955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001956 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 ------------------------------------------------------------------------*/
1958 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1959 {
1960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1961 "WDI API call before module is initialized - Fail request");
1962
Jeff Johnsone7245742012-09-05 17:12:55 -07001963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 }
1965
1966 /*------------------------------------------------------------------------
1967 Fill in Event data and post to the Main FSM
1968 ------------------------------------------------------------------------*/
1969 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001970 wdiEventData.pEventData = pwdiInitScanParams;
1971 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1972 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 wdiEventData.pUserData = pUserData;
1974
1975 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1976
1977}/*WDI_InitScanReq*/
1978
1979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001980 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 wishes to change the Scan channel on the WLAN Device.
1982 Upon the call of this API the WLAN DAL will pack and
1983 send a HAL Start Scan request message to the lower RIVA
1984 sub-system if DAL is in state STARTED.
1985
1986 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001987 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001988
1989 WDI_InitScanReq must have been called.
1990
Jeff Johnsone7245742012-09-05 17:12:55 -07001991 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001993
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 wdiStartScanRspCb: callback for passing back the
1995 response of the start scan operation received from the
1996 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001997
Jeff Johnson295189b2012-06-20 16:38:30 -07001998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 callback
2000
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 @see WDI_InitScanReq
2002 @return Result of the function call
2003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002005WDI_StartScanReq
2006(
2007 WDI_StartScanReqParamsType* pwdiStartScanParams,
2008 WDI_StartScanRspCb wdiStartScanRspCb,
2009 void* pUserData
2010)
2011{
2012 WDI_EventInfoType wdiEventData;
2013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2014
2015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 ------------------------------------------------------------------------*/
2018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2019 {
2020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2021 "WDI API call before module is initialized - Fail request");
2022
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002024 }
2025
2026 /*------------------------------------------------------------------------
2027 Fill in Event data and post to the Main FSM
2028 ------------------------------------------------------------------------*/
2029 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002030 wdiEventData.pEventData = pwdiStartScanParams;
2031 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2032 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002033 wdiEventData.pUserData = pUserData;
2034
2035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2036
2037}/*WDI_StartScanReq*/
2038
2039
2040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 wants to end scanning for a particular channel that it
2043 had set before by calling Scan Start on the WLAN Device.
2044 Upon the call of this API the WLAN DAL will pack and
2045 send a HAL End Scan request message to the lower RIVA
2046 sub-system if DAL is in state STARTED.
2047
2048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002050
2051 WDI_StartScanReq must have been called.
2052
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 wdiEndScanRspCb: callback for passing back the response
2057 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002058
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002060 callback
2061
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 @see WDI_StartScanReq
2063 @return Result of the function call
2064*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002066WDI_EndScanReq
2067(
2068 WDI_EndScanReqParamsType* pwdiEndScanParams,
2069 WDI_EndScanRspCb wdiEndScanRspCb,
2070 void* pUserData
2071)
2072{
2073 WDI_EventInfoType wdiEventData;
2074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2075
2076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 ------------------------------------------------------------------------*/
2079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2080 {
2081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2082 "WDI API call before module is initialized - Fail request");
2083
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 }
2086
2087 /*------------------------------------------------------------------------
2088 Fill in Event data and post to the Main FSM
2089 ------------------------------------------------------------------------*/
2090 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 wdiEventData.pEventData = pwdiEndScanParams;
2092 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2093 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002094 wdiEventData.pUserData = pUserData;
2095
2096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2097
2098}/*WDI_EndScanReq*/
2099
2100
2101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002102 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 completed the scan process on the WLAN Device. Upon the
2104 call of this API the WLAN DAL will pack and send a HAL
2105 Finish Scan Request request message to the lower RIVA
2106 sub-system if DAL is in state STARTED.
2107
2108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002110
2111 WDI_InitScanReq must have been called.
2112
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 wdiFinishScanRspCb: callback for passing back the
2117 response of the finish scan operation received from the
2118 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002119
Jeff Johnson295189b2012-06-20 16:38:30 -07002120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002121 callback
2122
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 @see WDI_InitScanReq
2124 @return Result of the function call
2125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002127WDI_FinishScanReq
2128(
2129 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2130 WDI_FinishScanRspCb wdiFinishScanRspCb,
2131 void* pUserData
2132)
2133{
2134 WDI_EventInfoType wdiEventData;
2135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2136
2137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 ------------------------------------------------------------------------*/
2140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2141 {
2142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2143 "WDI API call before module is initialized - Fail request");
2144
Jeff Johnsone7245742012-09-05 17:12:55 -07002145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002146 }
2147
2148 /*------------------------------------------------------------------------
2149 Fill in Event data and post to the Main FSM
2150 ------------------------------------------------------------------------*/
2151 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002152 wdiEventData.pEventData = pwdiFinishScanParams;
2153 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2154 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 wdiEventData.pUserData = pUserData;
2156
2157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2158
2159}/*WDI_FinishScanReq*/
2160
Jeff Johnsone7245742012-09-05 17:12:55 -07002161/*========================================================================
2162
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002164
Jeff Johnson295189b2012-06-20 16:38:30 -07002165==========================================================================*/
2166
2167/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002169 to start an association procedure to a BSS. Upon the
2170 call of this API the WLAN DAL will pack and send a HAL
2171 Join request message to the lower RIVA sub-system if
2172 DAL is in state STARTED.
2173
2174 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002175 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002176
2177 WDI_Start must have been called.
2178
Jeff Johnsone7245742012-09-05 17:12:55 -07002179 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002181
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 wdiJoinRspCb: callback for passing back the response of
2183 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002184
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 callback
2187
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 @see WDI_Start
2189 @return Result of the function call
2190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002192WDI_JoinReq
2193(
2194 WDI_JoinReqParamsType* pwdiJoinParams,
2195 WDI_JoinRspCb wdiJoinRspCb,
2196 void* pUserData
2197)
2198{
2199 WDI_EventInfoType wdiEventData;
2200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2201
2202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 ------------------------------------------------------------------------*/
2205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2206 {
2207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2208 "WDI API call before module is initialized - Fail request");
2209
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 }
2212
2213 /*------------------------------------------------------------------------
2214 Fill in Event data and post to the Main FSM
2215 ------------------------------------------------------------------------*/
2216 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 wdiEventData.pEventData = pwdiJoinParams;
2218 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2219 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 wdiEventData.pUserData = pUserData;
2221
2222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2223
2224}/*WDI_JoinReq*/
2225
2226/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 wishes to configure the newly acquired or in process of
2229 being acquired BSS to the HW . Upon the call of this API
2230 the WLAN DAL will pack and send a HAL Config BSS request
2231 message to the lower RIVA sub-system if DAL is in state
2232 STARTED.
2233
2234 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002235 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002236
2237 WDI_JoinReq must have been called.
2238
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002241
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 wdiConfigBSSRspCb: callback for passing back the
2243 response of the config BSS operation received from the
2244 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002245
Jeff Johnson295189b2012-06-20 16:38:30 -07002246 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002247 callback
2248
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 @see WDI_JoinReq
2250 @return Result of the function call
2251*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002252WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002253WDI_ConfigBSSReq
2254(
2255 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2256 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2257 void* pUserData
2258)
2259{
2260 WDI_EventInfoType wdiEventData;
2261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2262
2263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 ------------------------------------------------------------------------*/
2266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2267 {
2268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2269 "WDI API call before module is initialized - Fail request");
2270
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 }
2273
2274 /*------------------------------------------------------------------------
2275 Fill in Event data and post to the Main FSM
2276 ------------------------------------------------------------------------*/
2277 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002278 wdiEventData.pEventData = pwdiConfigBSSParams;
2279 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2280 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 wdiEventData.pUserData = pUserData;
2282
2283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2284
2285}/*WDI_ConfigBSSReq*/
2286
2287/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 disassociating from the BSS and wishes to notify HW.
2290 Upon the call of this API the WLAN DAL will pack and
2291 send a HAL Del BSS request message to the lower RIVA
2292 sub-system if DAL is in state STARTED.
2293
2294 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002295 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002296
2297 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2298
Jeff Johnsone7245742012-09-05 17:12:55 -07002299 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002301
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 wdiDelBSSRspCb: callback for passing back the response
2303 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002304
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 callback
2307
2308 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 @return Result of the function call
2310*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002312WDI_DelBSSReq
2313(
2314 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2315 WDI_DelBSSRspCb wdiDelBSSRspCb,
2316 void* pUserData
2317)
2318{
2319 WDI_EventInfoType wdiEventData;
2320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2321
2322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 ------------------------------------------------------------------------*/
2325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2326 {
2327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2328 "WDI API call before module is initialized - Fail request");
2329
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 }
2332
2333 /*------------------------------------------------------------------------
2334 Fill in Event data and post to the Main FSM
2335 ------------------------------------------------------------------------*/
2336 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 wdiEventData.pEventData = pwdiDelBSSParams;
2338 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2339 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 wdiEventData.pUserData = pUserData;
2341
2342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2343
2344}/*WDI_DelBSSReq*/
2345
2346/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002347 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 associated to a BSS and wishes to configure HW for
2349 associated state. Upon the call of this API the WLAN DAL
2350 will pack and send a HAL Post Assoc request message to
2351 the lower RIVA sub-system if DAL is in state STARTED.
2352
2353 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002355
2356 WDI_JoinReq must have been called.
2357
2358 @param wdiPostAssocReqParams: the assoc parameters as specified
2359 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 wdiPostAssocRspCb: callback for passing back the
2362 response of the post assoc operation received from the
2363 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002364
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 callback
2367
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 @see WDI_JoinReq
2369 @return Result of the function call
2370*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002372WDI_PostAssocReq
2373(
2374 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2375 WDI_PostAssocRspCb wdiPostAssocRspCb,
2376 void* pUserData
2377)
2378{
2379 WDI_EventInfoType wdiEventData;
2380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2381
2382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 ------------------------------------------------------------------------*/
2385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2386 {
2387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2388 "WDI API call before module is initialized - Fail request");
2389
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 }
2392
2393 /*------------------------------------------------------------------------
2394 Fill in Event data and post to the Main FSM
2395 ------------------------------------------------------------------------*/
2396 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 wdiEventData.pEventData = pwdiPostAssocReqParams;
2398 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2399 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 wdiEventData.pUserData = pUserData;
2401
2402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2403
2404}/*WDI_PostAssocReq*/
2405
2406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 association with another STA has ended and the station
2409 must be deleted from HW. Upon the call of this API the
2410 WLAN DAL will pack and send a HAL Del STA request
2411 message to the lower RIVA sub-system if DAL is in state
2412 STARTED.
2413
2414 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002416
2417 WDI_PostAssocReq must have been called.
2418
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002421
Jeff Johnson295189b2012-06-20 16:38:30 -07002422 wdiDelSTARspCb: callback for passing back the response
2423 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002424
Jeff Johnson295189b2012-06-20 16:38:30 -07002425 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002426 callback
2427
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 @see WDI_PostAssocReq
2429 @return Result of the function call
2430*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002431WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002432WDI_DelSTAReq
2433(
2434 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2435 WDI_DelSTARspCb wdiDelSTARspCb,
2436 void* pUserData
2437)
2438{
2439 WDI_EventInfoType wdiEventData;
2440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2441
2442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 ------------------------------------------------------------------------*/
2445 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2446 {
2447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2448 "WDI API call before module is initialized - Fail request");
2449
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 }
2452
2453 /*------------------------------------------------------------------------
2454 Fill in Event data and post to the Main FSM
2455 ------------------------------------------------------------------------*/
2456 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 wdiEventData.pEventData = pwdiDelSTAParams;
2458 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2459 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 wdiEventData.pUserData = pUserData;
2461
2462 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2463
2464}/*WDI_DelSTAReq*/
2465
Jeff Johnsone7245742012-09-05 17:12:55 -07002466/*========================================================================
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002469
Jeff Johnson295189b2012-06-20 16:38:30 -07002470==========================================================================*/
2471
2472/**
2473 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2474 install a BSS encryption key on the HW. Upon the call of this
2475 API the WLAN DAL will pack and send a Set BSS Key request
2476 message to the lower RIVA sub-system if DAL is in state
2477 STARTED.
2478
2479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002481
2482 WDI_PostAssocReq must have been called.
2483
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 wdiSetBSSKeyRspCb: callback for passing back the
2488 response of the set BSS Key operation received from the
2489 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002490
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002492 callback
2493
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 @see WDI_PostAssocReq
2495 @return Result of the function call
2496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002498WDI_SetBSSKeyReq
2499(
2500 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2501 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2502 void* pUserData
2503)
2504{
2505 WDI_EventInfoType wdiEventData;
2506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2507
2508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 ------------------------------------------------------------------------*/
2511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2512 {
2513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2514 "WDI API call before module is initialized - Fail request");
2515
Jeff Johnsone7245742012-09-05 17:12:55 -07002516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002517 }
2518
2519 /*------------------------------------------------------------------------
2520 Fill in Event data and post to the Main FSM
2521 ------------------------------------------------------------------------*/
2522 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002523 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2524 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2525 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 wdiEventData.pUserData = pUserData;
2527
2528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2529
2530}/*WDI_SetBSSKeyReq*/
2531
2532/**
2533 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2534 uninstall a BSS key from HW. Upon the call of this API the
2535 WLAN DAL will pack and send a HAL Remove BSS Key request
2536 message to the lower RIVA sub-system if DAL is in state
2537 STARTED.
2538
2539 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002540 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002541
2542 WDI_SetBSSKeyReq must have been called.
2543
Jeff Johnsone7245742012-09-05 17:12:55 -07002544 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002545 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002546
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 wdiRemoveBSSKeyRspCb: callback for passing back the
2548 response of the remove BSS key operation received from
2549 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002550
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 callback
2553
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 @see WDI_SetBSSKeyReq
2555 @return Result of the function call
2556*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002557WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002558WDI_RemoveBSSKeyReq
2559(
2560 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2561 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2562 void* pUserData
2563)
2564{
2565 WDI_EventInfoType wdiEventData;
2566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2567
2568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 ------------------------------------------------------------------------*/
2571 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2572 {
2573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2574 "WDI API call before module is initialized - Fail request");
2575
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002577 }
2578
2579 /*------------------------------------------------------------------------
2580 Fill in Event data and post to the Main FSM
2581 ------------------------------------------------------------------------*/
2582 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2584 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2585 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002586 wdiEventData.pUserData = pUserData;
2587
2588 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2589
2590}/*WDI_RemoveBSSKeyReq*/
2591
2592
2593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 ready to install a STA(ast) encryption key in HW. Upon
2596 the call of this API the WLAN DAL will pack and send a
2597 HAL Set STA Key request message to the lower RIVA
2598 sub-system if DAL is in state STARTED.
2599
2600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002602
2603 WDI_PostAssocReq must have been called.
2604
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002607
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 wdiSetSTAKeyRspCb: callback for passing back the
2609 response of the set STA key operation received from the
2610 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002611
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 callback
2614
Jeff Johnson295189b2012-06-20 16:38:30 -07002615 @see WDI_PostAssocReq
2616 @return Result of the function call
2617*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002618WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002619WDI_SetSTAKeyReq
2620(
2621 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2622 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2623 void* pUserData
2624)
2625{
2626 WDI_EventInfoType wdiEventData;
2627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2628
2629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002631 ------------------------------------------------------------------------*/
2632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2633 {
2634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2635 "WDI API call before module is initialized - Fail request");
2636
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002638 }
2639
2640 /*------------------------------------------------------------------------
2641 Fill in Event data and post to the Main FSM
2642 ------------------------------------------------------------------------*/
2643 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2645 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2646 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 wdiEventData.pUserData = pUserData;
2648
2649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2650
2651}/*WDI_SetSTAKeyReq*/
2652
2653
2654/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 wants to uninstall a previously set STA key in HW. Upon
2657 the call of this API the WLAN DAL will pack and send a
2658 HAL Remove STA Key request message to the lower RIVA
2659 sub-system if DAL is in state STARTED.
2660
2661 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002663
2664 WDI_SetSTAKeyReq must have been called.
2665
Jeff Johnsone7245742012-09-05 17:12:55 -07002666 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002668
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 wdiRemoveSTAKeyRspCb: callback for passing back the
2670 response of the remove STA key operation received from
2671 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002672
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 callback
2675
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 @see WDI_SetSTAKeyReq
2677 @return Result of the function call
2678*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002680WDI_RemoveSTAKeyReq
2681(
2682 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2683 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2684 void* pUserData
2685)
2686{
2687 WDI_EventInfoType wdiEventData;
2688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2689
2690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 ------------------------------------------------------------------------*/
2693 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2694 {
2695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2696 "WDI API call before module is initialized - Fail request");
2697
Jeff Johnsone7245742012-09-05 17:12:55 -07002698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002699 }
2700
2701 /*------------------------------------------------------------------------
2702 Fill in Event data and post to the Main FSM
2703 ------------------------------------------------------------------------*/
2704 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002705 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2706 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2707 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002708 wdiEventData.pUserData = pUserData;
2709
2710 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2711
2712}/*WDI_RemoveSTAKeyReq*/
2713
2714
2715/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 wants to install a STA Bcast encryption key on the HW.
2718 Upon the call of this API the WLAN DAL will pack and
2719 send a HAL Start request message to the lower RIVA
2720 sub-system if DAL is in state STARTED.
2721
2722 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002723 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002724
2725 WDI_PostAssocReq must have been called.
2726
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002728 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002729
Jeff Johnson295189b2012-06-20 16:38:30 -07002730 wdiSetSTABcastKeyRspCb: callback for passing back the
2731 response of the set BSS Key operation received from the
2732 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002733
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 callback
2736
Jeff Johnson295189b2012-06-20 16:38:30 -07002737 @see WDI_PostAssocReq
2738 @return Result of the function call
2739*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002740WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002741WDI_SetSTABcastKeyReq
2742(
2743 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2744 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2745 void* pUserData
2746)
2747
2748{
2749 WDI_EventInfoType wdiEventData;
2750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2751
2752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 ------------------------------------------------------------------------*/
2755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2756 {
2757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2758 "WDI API call before module is initialized - Fail request");
2759
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002761 }
2762
2763 /*------------------------------------------------------------------------
2764 Fill in Event data and post to the Main FSM
2765 ------------------------------------------------------------------------*/
2766 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002767 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2768 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2769 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 wdiEventData.pUserData = pUserData;
2771
2772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2773
2774}/*WDI_SetSTABcastKeyReq*/
2775
2776/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002777 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 MAC wants to uninstall a STA Bcast key from HW. Upon the
2779 call of this API the WLAN DAL will pack and send a HAL
2780 Remove STA Bcast Key request message to the lower RIVA
2781 sub-system if DAL is in state STARTED.
2782
2783 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002784 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002785
2786 WDI_SetSTABcastKeyReq must have been called.
2787
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 parameters as specified by the Device
2790 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002791
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2793 response of the remove STA Bcast key operation received
2794 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002795
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002797 callback
2798
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 @see WDI_SetSTABcastKeyReq
2800 @return Result of the function call
2801*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002802WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002803WDI_RemoveSTABcastKeyReq
2804(
2805 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2806 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2807 void* pUserData
2808)
2809{
2810 WDI_EventInfoType wdiEventData;
2811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2812
2813 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 ------------------------------------------------------------------------*/
2816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2817 {
2818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2819 "WDI API call before module is initialized - Fail request");
2820
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 }
2823
2824 /*------------------------------------------------------------------------
2825 Fill in Event data and post to the Main FSM
2826 ------------------------------------------------------------------------*/
2827 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002828 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2829 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2830 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002831 wdiEventData.pUserData = pUserData;
2832
2833 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2834
2835}/*WDI_RemoveSTABcastKeyReq*/
2836
2837/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002838 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 MAC wants to set Max Tx Power to HW. Upon the
2840 call of this API the WLAN DAL will pack and send a HAL
2841 Remove STA Bcast Key request message to the lower RIVA
2842 sub-system if DAL is in state STARTED.
2843
2844 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002846
2847 WDI_SetSTABcastKeyReq must have been called.
2848
Jeff Johnsone7245742012-09-05 17:12:55 -07002849 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 parameters as specified by the Device
2851 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002852
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2854 response of the remove STA Bcast key operation received
2855 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002856
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 callback
2859
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 @see WDI_SetMaxTxPowerReq
2861 @return Result of the function call
2862*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002863WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002864WDI_SetMaxTxPowerReq
2865(
2866 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2867 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2868 void* pUserData
2869)
2870{
2871 WDI_EventInfoType wdiEventData;
2872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2873
2874 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 ------------------------------------------------------------------------*/
2877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2878 {
2879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2880 "WDI API call before module is initialized - Fail request");
2881
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002883 }
2884
2885 /*------------------------------------------------------------------------
2886 Fill in Event data and post to the Main FSM
2887 ------------------------------------------------------------------------*/
2888 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2890 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2891 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiEventData.pUserData = pUserData;
2893
2894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2895}
2896
schangd82195a2013-03-13 18:41:24 -07002897/**
2898 @brief WDI_SetTxPowerReq will be called when the upper
2899 MAC wants to set Tx Power to HW.
2900 In state BUSY this request will be queued. Request won't
2901 be allowed in any other state.
2902
2903
2904 @param pwdiSetTxPowerParams: set TS Power parameters
2905 BSSID and target TX Power with dbm included
2906
2907 wdiReqStatusCb: callback for passing back the response
2908
2909 pUserData: user data will be passed back with the
2910 callback
2911
2912 @return Result of the function call
2913*/
2914WDI_Status
2915WDI_SetTxPowerReq
2916(
2917 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2918 WDA_SetTxPowerRspCb wdiReqStatusCb,
2919 void* pUserData
2920)
2921{
2922 WDI_EventInfoType wdiEventData;
2923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2924
2925 /*------------------------------------------------------------------------
2926 Sanity Check
2927 ------------------------------------------------------------------------*/
2928 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2929 {
2930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2931 "WDI API call before module is initialized - Fail request");
2932
2933 return WDI_STATUS_E_NOT_ALLOWED;
2934 }
2935
2936 /*------------------------------------------------------------------------
2937 Fill in Event data and post to the Main FSM
2938 ------------------------------------------------------------------------*/
2939 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2940 wdiEventData.pEventData = pwdiSetTxPowerParams;
2941 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2942 wdiEventData.pCBfnc = wdiReqStatusCb;
2943 wdiEventData.pUserData = pUserData;
2944
2945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2946}
2947
Jeff Johnson295189b2012-06-20 16:38:30 -07002948#ifdef FEATURE_WLAN_CCX
2949WDI_Status
2950WDI_TSMStatsReq
2951(
2952 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2953 WDI_TsmRspCb wdiReqStatusCb,
2954 void* pUserData
2955)
2956{
2957 WDI_EventInfoType wdiEventData;
2958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 /*------------------------------------------------------------------------
2960 Sanity Check
2961 ------------------------------------------------------------------------*/
2962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2963 {
2964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2965 "WDI API call before module is initialized - Fail request");
2966
2967 return WDI_STATUS_E_NOT_ALLOWED;
2968 }
2969
2970 /*------------------------------------------------------------------------
2971 Fill in Event data and post to the Main FSM
2972 ------------------------------------------------------------------------*/
2973 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2974 wdiEventData.pEventData = pwdiTsmReqParams;
2975 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2976 wdiEventData.pCBfnc = wdiReqStatusCb;
2977 wdiEventData.pUserData = pUserData;
2978
2979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2980
2981}
2982#endif
2983
2984/*========================================================================
2985
2986 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002987
Jeff Johnson295189b2012-06-20 16:38:30 -07002988==========================================================================*/
2989
2990/**
2991 @brief WDI_AddTSReq will be called when the upper MAC to inform
2992 the device of a successful add TSpec negotiation. HW
2993 needs to receive the TSpec Info from the UMAC in order
2994 to configure properly the QoS data traffic. Upon the
2995 call of this API the WLAN DAL will pack and send a HAL
2996 Add TS request message to the lower RIVA sub-system if
2997 DAL is in state STARTED.
2998
2999 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003001
3002 WDI_PostAssocReq must have been called.
3003
3004 @param wdiAddTsReqParams: the add TS parameters as specified by
3005 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003006
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 wdiAddTsRspCb: callback for passing back the response of
3008 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003009
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 callback
3012
Jeff Johnson295189b2012-06-20 16:38:30 -07003013 @see WDI_PostAssocReq
3014 @return Result of the function call
3015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003017WDI_AddTSReq
3018(
3019 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3020 WDI_AddTsRspCb wdiAddTsRspCb,
3021 void* pUserData
3022)
3023{
3024 WDI_EventInfoType wdiEventData;
3025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3026
3027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 ------------------------------------------------------------------------*/
3030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3031 {
3032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3033 "WDI API call before module is initialized - Fail request");
3034
Jeff Johnsone7245742012-09-05 17:12:55 -07003035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 }
3037
3038 /*------------------------------------------------------------------------
3039 Fill in Event data and post to the Main FSM
3040 ------------------------------------------------------------------------*/
3041 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003042 wdiEventData.pEventData = pwdiAddTsReqParams;
3043 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3044 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003045 wdiEventData.pUserData = pUserData;
3046
3047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3048
3049}/*WDI_AddTSReq*/
3050
3051
3052
3053/**
3054 @brief WDI_DelTSReq will be called when the upper MAC has ended
3055 admission on a specific AC. This is to inform HW that
3056 QoS traffic parameters must be rest. Upon the call of
3057 this API the WLAN DAL will pack and send a HAL Del TS
3058 request message to the lower RIVA sub-system if DAL is
3059 in state STARTED.
3060
3061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003063
3064 WDI_AddTSReq must have been called.
3065
3066 @param wdiDelTsReqParams: the del TS parameters as specified by
3067 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003068
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 wdiDelTsRspCb: callback for passing back the response of
3070 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003071
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003073 callback
3074
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 @see WDI_AddTSReq
3076 @return Result of the function call
3077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003079WDI_DelTSReq
3080(
3081 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3082 WDI_DelTsRspCb wdiDelTsRspCb,
3083 void* pUserData
3084)
3085{
3086 WDI_EventInfoType wdiEventData;
3087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3088
3089 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003090 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 ------------------------------------------------------------------------*/
3092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3093 {
3094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3095 "WDI API call before module is initialized - Fail request");
3096
Jeff Johnsone7245742012-09-05 17:12:55 -07003097 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003098 }
3099
3100 /*------------------------------------------------------------------------
3101 Fill in Event data and post to the Main FSM
3102 ------------------------------------------------------------------------*/
3103 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003104 wdiEventData.pEventData = pwdiDelTsReqParams;
3105 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3106 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 wdiEventData.pUserData = pUserData;
3108
3109 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3110
3111}/*WDI_DelTSReq*/
3112
3113
3114
3115/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 wishes to update the EDCA parameters used by HW for QoS
3118 data traffic. Upon the call of this API the WLAN DAL
3119 will pack and send a HAL Update EDCA Params request
3120 message to the lower RIVA sub-system if DAL is in state
3121 STARTED.
3122
3123 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003124 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003125
3126 WDI_PostAssocReq must have been called.
3127
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003130
Jeff Johnson295189b2012-06-20 16:38:30 -07003131 wdiUpdateEDCAParamsRspCb: callback for passing back the
3132 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003133
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003135 callback
3136
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 @see WDI_PostAssocReq
3138 @return Result of the function call
3139*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003140WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003141WDI_UpdateEDCAParams
3142(
3143 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3144 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3145 void* pUserData
3146)
3147{
3148 WDI_EventInfoType wdiEventData;
3149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3150
3151 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 ------------------------------------------------------------------------*/
3154 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3155 {
3156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3157 "WDI API call before module is initialized - Fail request");
3158
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 }
3161
3162 /*------------------------------------------------------------------------
3163 Fill in Event data and post to the Main FSM
3164 ------------------------------------------------------------------------*/
3165 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3167 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3168 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003169 wdiEventData.pUserData = pUserData;
3170
3171 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3172
3173}/*WDI_UpdateEDCAParams*/
3174
3175
3176/**
3177 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3178 successfully a BA session and needs to notify the HW for
3179 the appropriate settings to take place. Upon the call of
3180 this API the WLAN DAL will pack and send a HAL Add BA
3181 request message to the lower RIVA sub-system if DAL is
3182 in state STARTED.
3183
3184 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003185 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003186
3187 WDI_PostAssocReq must have been called.
3188
3189 @param wdiAddBAReqParams: the add BA parameters as specified by
3190 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003191
Jeff Johnson295189b2012-06-20 16:38:30 -07003192 wdiAddBARspCb: callback for passing back the response of
3193 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003194
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 callback
3197
Jeff Johnson295189b2012-06-20 16:38:30 -07003198 @see WDI_PostAssocReq
3199 @return Result of the function call
3200*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003201WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003202WDI_AddBASessionReq
3203(
3204 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3205 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3206 void* pUserData
3207)
3208{
3209 WDI_EventInfoType wdiEventData;
3210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3211
3212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003214 ------------------------------------------------------------------------*/
3215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3216 {
3217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3218 "WDI API call before module is initialized - Fail request");
3219
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 }
3222
3223 /*------------------------------------------------------------------------
3224 Fill in Event data and post to the Main FSM
3225 ------------------------------------------------------------------------*/
3226 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3228 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3229 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003230 wdiEventData.pUserData = pUserData;
3231
3232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3233
3234}/*WDI_AddBASessionReq*/
3235
3236/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003237 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003238 inform HW that it has deleted a previously created BA
3239 session. Upon the call of this API the WLAN DAL will
3240 pack and send a HAL Del BA request message to the lower
3241 RIVA sub-system if DAL is in state STARTED.
3242
3243 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003244 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003245
3246 WDI_AddBAReq must have been called.
3247
3248 @param wdiDelBAReqParams: the del BA parameters as specified by
3249 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003250
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 wdiDelBARspCb: callback for passing back the response of
3252 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003253
Jeff Johnson295189b2012-06-20 16:38:30 -07003254 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003255 callback
3256
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 @see WDI_AddBAReq
3258 @return Result of the function call
3259*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003260WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003261WDI_DelBAReq
3262(
3263 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3264 WDI_DelBARspCb wdiDelBARspCb,
3265 void* pUserData
3266)
3267{
3268 WDI_EventInfoType wdiEventData;
3269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3270
3271 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003272 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003273 ------------------------------------------------------------------------*/
3274 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3275 {
3276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3277 "WDI API call before module is initialized - Fail request");
3278
Jeff Johnsone7245742012-09-05 17:12:55 -07003279 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 }
3281
3282 /*------------------------------------------------------------------------
3283 Fill in Event data and post to the Main FSM
3284 ------------------------------------------------------------------------*/
3285 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003286 wdiEventData.pEventData = pwdiDelBAReqParams;
3287 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3288 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 wdiEventData.pUserData = pUserData;
3290
3291 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3292
3293}/*WDI_DelBAReq*/
3294
Jeff Johnsone7245742012-09-05 17:12:55 -07003295/*========================================================================
3296
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003298
Jeff Johnson295189b2012-06-20 16:38:30 -07003299==========================================================================*/
3300
3301/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003303 wants to set the power save related configurations of
3304 the WLAN Device. Upon the call of this API the WLAN DAL
3305 will pack and send a HAL Update CFG request message to
3306 the lower RIVA sub-system if DAL is in state STARTED.
3307
3308 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003310
3311 WDI_Start must have been called.
3312
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003315
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 wdiSetPwrSaveCfgCb: callback for passing back the
3317 response of the set power save cfg operation received
3318 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003319
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003321 callback
3322
Jeff Johnson295189b2012-06-20 16:38:30 -07003323 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003324 @return Result of the function call
3325*/
3326WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003327WDI_SetPwrSaveCfgReq
3328(
3329 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3330 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3331 void* pUserData
3332)
3333{
3334 WDI_EventInfoType wdiEventData;
3335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3336
3337 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 ------------------------------------------------------------------------*/
3340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3341 {
3342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3343 "WDI API call before module is initialized - Fail request");
3344
Jeff Johnsone7245742012-09-05 17:12:55 -07003345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 }
3347
3348 /*------------------------------------------------------------------------
3349 Fill in Event data and post to the Main FSM
3350 ------------------------------------------------------------------------*/
3351 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 wdiEventData.pEventData = pwdiPowerSaveCfg;
3353 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3354 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 wdiEventData.pUserData = pUserData;
3356
3357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3358
3359}/*WDI_SetPwrSaveCfgReq*/
3360
3361/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003362 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003363 request the device to get into IMPS power state. Upon
3364 the call of this API the WLAN DAL will send a HAL Enter
3365 IMPS request message to the lower RIVA sub-system if DAL
3366 is in state STARTED.
3367
3368 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003370
Jeff Johnsone7245742012-09-05 17:12:55 -07003371
3372 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003373 response of the Enter IMPS operation received from the
3374 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003375
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003377 callback
3378
Jeff Johnson295189b2012-06-20 16:38:30 -07003379 @see WDI_Start
3380 @return Result of the function call
3381*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003382WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003383WDI_EnterImpsReq
3384(
3385 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3386 void* pUserData
3387)
3388{
3389 WDI_EventInfoType wdiEventData;
3390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3391
3392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 ------------------------------------------------------------------------*/
3395 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3396 {
3397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3398 "WDI API call before module is initialized - Fail request");
3399
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003401 }
3402
3403 /*------------------------------------------------------------------------
3404 Fill in Event data and post to the Main FSM
3405 ------------------------------------------------------------------------*/
3406 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003407 wdiEventData.pEventData = NULL;
3408 wdiEventData.uEventDataSize = 0;
3409 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 wdiEventData.pUserData = pUserData;
3411
3412 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3413
3414}/*WDI_EnterImpsReq*/
3415
3416/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 request the device to get out of IMPS power state. Upon
3419 the call of this API the WLAN DAL will send a HAL Exit
3420 IMPS request message to the lower RIVA sub-system if DAL
3421 is in state STARTED.
3422
3423 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003424 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003425
Jeff Johnson295189b2012-06-20 16:38:30 -07003426
Jeff Johnsone7245742012-09-05 17:12:55 -07003427
3428 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003430
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003432 callback
3433
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 @see WDI_Start
3435 @return Result of the function call
3436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003438WDI_ExitImpsReq
3439(
3440 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3441 void* pUserData
3442)
3443{
3444 WDI_EventInfoType wdiEventData;
3445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3446
3447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003449 ------------------------------------------------------------------------*/
3450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3451 {
3452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3453 "WDI API call before module is initialized - Fail request");
3454
Jeff Johnsone7245742012-09-05 17:12:55 -07003455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003456 }
3457
3458 /*------------------------------------------------------------------------
3459 Fill in Event data and post to the Main FSM
3460 ------------------------------------------------------------------------*/
3461 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 wdiEventData.pEventData = NULL;
3463 wdiEventData.uEventDataSize = 0;
3464 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 wdiEventData.pUserData = pUserData;
3466
3467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3468
3469}/*WDI_ExitImpsReq*/
3470
3471/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 request the device to get into BMPS power state. Upon
3474 the call of this API the WLAN DAL will pack and send a
3475 HAL Enter BMPS request message to the lower RIVA
3476 sub-system if DAL is in state STARTED.
3477
3478 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003479 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003480
3481 WDI_PostAssocReq must have been called.
3482
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003485
Jeff Johnson295189b2012-06-20 16:38:30 -07003486 wdiEnterBmpsRspCb: callback for passing back the
3487 response of the Enter BMPS operation received from the
3488 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003489
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 callback
3492
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 @see WDI_PostAssocReq
3494 @return Result of the function call
3495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003497WDI_EnterBmpsReq
3498(
3499 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3500 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3501 void* pUserData
3502)
3503{
3504 WDI_EventInfoType wdiEventData;
3505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3506
3507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 ------------------------------------------------------------------------*/
3510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3511 {
3512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3513 "WDI API call before module is initialized - Fail request");
3514
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 }
3517
3518 /*------------------------------------------------------------------------
3519 Fill in Event data and post to the Main FSM
3520 ------------------------------------------------------------------------*/
3521 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3523 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3524 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 wdiEventData.pUserData = pUserData;
3526
3527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3528
3529}/*WDI_EnterBmpsReq*/
3530
3531/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003532 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 request the device to get out of BMPS power state. Upon
3534 the call of this API the WLAN DAL will pack and send a
3535 HAL Exit BMPS request message to the lower RIVA
3536 sub-system if DAL is in state STARTED.
3537
3538 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003539 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003540
3541 WDI_PostAssocReq must have been called.
3542
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003545
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 wdiExitBmpsRspCb: callback for passing back the response
3547 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003548
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 callback
3551
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 @see WDI_PostAssocReq
3553 @return Result of the function call
3554*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003555WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003556WDI_ExitBmpsReq
3557(
3558 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3559 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3560 void* pUserData
3561)
3562{
3563 WDI_EventInfoType wdiEventData;
3564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3565
3566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 ------------------------------------------------------------------------*/
3569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3570 {
3571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3572 "WDI API call before module is initialized - Fail request");
3573
Jeff Johnsone7245742012-09-05 17:12:55 -07003574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 }
3576
3577 /*------------------------------------------------------------------------
3578 Fill in Event data and post to the Main FSM
3579 ------------------------------------------------------------------------*/
3580 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003581 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3582 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3583 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 wdiEventData.pUserData = pUserData;
3585
3586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3587
3588}/*WDI_ExitBmpsReq*/
3589
3590/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 request the device to get into UAPSD power state. Upon
3593 the call of this API the WLAN DAL will pack and send a
3594 HAL Enter UAPSD request message to the lower RIVA
3595 sub-system if DAL is in state STARTED.
3596
3597 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003598 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003599
3600 WDI_PostAssocReq must have been called.
3601 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003602
3603 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003605
Jeff Johnson295189b2012-06-20 16:38:30 -07003606 wdiEnterUapsdRspCb: callback for passing back the
3607 response of the Enter UAPSD operation received from the
3608 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003609
Jeff Johnson295189b2012-06-20 16:38:30 -07003610 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 callback
3612
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3614 @return Result of the function call
3615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003617WDI_EnterUapsdReq
3618(
3619 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3620 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3621 void* pUserData
3622)
3623{
3624 WDI_EventInfoType wdiEventData;
3625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3626
3627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 ------------------------------------------------------------------------*/
3630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3631 {
3632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3633 "WDI API call before module is initialized - Fail request");
3634
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003636 }
3637
3638 /*------------------------------------------------------------------------
3639 Fill in Event data and post to the Main FSM
3640 ------------------------------------------------------------------------*/
3641 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003642 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3643 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3644 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 wdiEventData.pUserData = pUserData;
3646
3647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3648
3649}/*WDI_EnterUapsdReq*/
3650
3651/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 request the device to get out of UAPSD power state. Upon
3654 the call of this API the WLAN DAL will send a HAL Exit
3655 UAPSD request message to the lower RIVA sub-system if
3656 DAL is in state STARTED.
3657
3658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003660
3661 WDI_PostAssocReq must have been called.
3662
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 response of the Exit UAPSD operation received from the
3665 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003666
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003668 callback
3669
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 @see WDI_PostAssocReq
3671 @return Result of the function call
3672*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003674WDI_ExitUapsdReq
3675(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003676 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003677 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3678 void* pUserData
3679)
3680{
3681 WDI_EventInfoType wdiEventData;
3682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3683
3684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 ------------------------------------------------------------------------*/
3687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3688 {
3689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3690 "WDI API call before module is initialized - Fail request");
3691
Jeff Johnsone7245742012-09-05 17:12:55 -07003692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003693 }
3694
3695 /*------------------------------------------------------------------------
3696 Fill in Event data and post to the Main FSM
3697 ------------------------------------------------------------------------*/
3698 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003699 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3700 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiEventData.pUserData = pUserData;
3703
3704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3705
3706}/*WDI_ExitUapsdReq*/
3707
3708/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003709 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 MAC wants to set the UAPSD related configurations
3711 of an associated STA (while acting as an AP) to the WLAN
3712 Device. Upon the call of this API the WLAN DAL will pack
3713 and send a HAL Update UAPSD params request message to
3714 the lower RIVA sub-system if DAL is in state STARTED.
3715
3716 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003718
3719 WDI_ConfigBSSReq must have been called.
3720
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 wdiUpdateUapsdParamsCb: callback for passing back the
3725 response of the update UAPSD params operation received
3726 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003727
Jeff Johnson295189b2012-06-20 16:38:30 -07003728 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 callback
3730
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 @see WDI_ConfigBSSReq
3732 @return Result of the function call
3733*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003734WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003735WDI_UpdateUapsdParamsReq
3736(
3737 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3738 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3739 void* pUserData
3740)
3741{
3742 WDI_EventInfoType wdiEventData;
3743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3744
3745 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 ------------------------------------------------------------------------*/
3748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3749 {
3750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3751 "WDI API call before module is initialized - Fail request");
3752
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003754 }
3755
3756 /*------------------------------------------------------------------------
3757 Fill in Event data and post to the Main FSM
3758 ------------------------------------------------------------------------*/
3759 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003761 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003762 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 wdiEventData.pUserData = pUserData;
3764
3765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3766
3767}/*WDI_UpdateUapsdParamsReq*/
3768
3769/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 MAC wants to set the UAPSD related configurations before
3772 requesting for enter UAPSD power state to the WLAN
3773 Device. Upon the call of this API the WLAN DAL will pack
3774 and send a HAL Set UAPSD params request message to
3775 the lower RIVA sub-system if DAL is in state STARTED.
3776
3777 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003779
3780 WDI_PostAssocReq must have been called.
3781
3782 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3783 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003784
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 wdiSetUapsdAcParamsCb: callback for passing back the
3786 response of the set UAPSD params operation received from
3787 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003788
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 callback
3791
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 @see WDI_PostAssocReq
3793 @return Result of the function call
3794*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003795WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003796WDI_SetUapsdAcParamsReq
3797(
3798 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3799 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3800 void* pUserData
3801)
3802{
3803 WDI_EventInfoType wdiEventData;
3804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3805
3806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 ------------------------------------------------------------------------*/
3809 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3810 {
3811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3812 "WDI API call before module is initialized - Fail request");
3813
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003815 }
3816
3817 /*------------------------------------------------------------------------
3818 Fill in Event data and post to the Main FSM
3819 ------------------------------------------------------------------------*/
3820 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003821 wdiEventData.pEventData = pwdiUapsdInfo;
3822 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3823 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 wdiEventData.pUserData = pUserData;
3825
3826 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3827
3828}/*WDI_SetUapsdAcParamsReq*/
3829
3830/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003832 MAC wants to set/reset the RXP filters for received pkts
3833 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3834 and send a HAL configure RXP filter request message to
3835 the lower RIVA sub-system.
3836
3837 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003839
Jeff Johnsone7245742012-09-05 17:12:55 -07003840
3841 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 filter as specified by the Device
3843 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 wdiConfigureRxpFilterCb: callback for passing back the
3846 response of the configure RXP filter operation received
3847 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003848
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 callback
3851
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 @return Result of the function call
3853*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003854WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003855WDI_ConfigureRxpFilterReq
3856(
3857 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3858 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3859 void* pUserData
3860)
3861{
3862 WDI_EventInfoType wdiEventData;
3863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3864
3865 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 ------------------------------------------------------------------------*/
3868 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3869 {
3870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3871 "WDI API call before module is initialized - Fail request");
3872
Jeff Johnsone7245742012-09-05 17:12:55 -07003873 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003874 }
3875
3876 /*------------------------------------------------------------------------
3877 Fill in Event data and post to the Main FSM
3878 ------------------------------------------------------------------------*/
3879 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003880 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3881 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3882 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 wdiEventData.pUserData = pUserData;
3884
3885 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3886}/*WDI_ConfigureRxpFilterReq*/
3887
3888/**
3889 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3890 wants to set the beacon filters while in power save.
3891 Upon the call of this API the WLAN DAL will pack and
3892 send a Beacon filter request message to the
3893 lower RIVA sub-system.
3894
3895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003897
Jeff Johnsone7245742012-09-05 17:12:55 -07003898
3899 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 filter as specified by the Device
3901 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 wdiBeaconFilterCb: callback for passing back the
3904 response of the set beacon filter operation received
3905 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003906
Jeff Johnson295189b2012-06-20 16:38:30 -07003907 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 callback
3909
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 @return Result of the function call
3911*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003913WDI_SetBeaconFilterReq
3914(
3915 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3916 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3917 void* pUserData
3918)
3919{
3920 WDI_EventInfoType wdiEventData;
3921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3922
3923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 ------------------------------------------------------------------------*/
3926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3927 {
3928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3929 "WDI API call before module is initialized - Fail request");
3930
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 }
3933
3934 /*------------------------------------------------------------------------
3935 Fill in Event data and post to the Main FSM
3936 ------------------------------------------------------------------------*/
3937 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003938 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003939 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 wdiEventData.pUserData = pUserData;
3942
3943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3944}/*WDI_SetBeaconFilterReq*/
3945
3946/**
3947 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3948 wants to remove the beacon filter for particular IE
3949 while in power save. Upon the call of this API the WLAN
3950 DAL will pack and send a remove Beacon filter request
3951 message to the lower RIVA sub-system.
3952
3953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003955
Jeff Johnsone7245742012-09-05 17:12:55 -07003956
3957 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003958 filter as specified by the Device
3959 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003960
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 wdiBeaconFilterCb: callback for passing back the
3962 response of the remove beacon filter operation received
3963 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003964
Jeff Johnson295189b2012-06-20 16:38:30 -07003965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003966 callback
3967
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 @return Result of the function call
3969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003971WDI_RemBeaconFilterReq
3972(
3973 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3974 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3975 void* pUserData
3976)
3977{
3978 WDI_EventInfoType wdiEventData;
3979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3980
3981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 ------------------------------------------------------------------------*/
3984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3985 {
3986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3987 "WDI API call before module is initialized - Fail request");
3988
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003990 }
3991
3992 /*------------------------------------------------------------------------
3993 Fill in Event data and post to the Main FSM
3994 ------------------------------------------------------------------------*/
3995 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003997 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 wdiEventData.pUserData = pUserData;
4000
4001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4002}/*WDI_RemBeaconFilterReq*/
4003
4004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004005 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 MAC wants to set the RSSI thresholds related
4007 configurations while in power save. Upon the call of
4008 this API the WLAN DAL will pack and send a HAL Set RSSI
4009 thresholds request message to the lower RIVA
4010 sub-system if DAL is in state STARTED.
4011
4012 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004014
4015 WDI_PostAssocReq must have been called.
4016
4017 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4018 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004019
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 wdiSetUapsdAcParamsCb: callback for passing back the
4021 response of the set UAPSD params operation received from
4022 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004023
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 callback
4026
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 @see WDI_PostAssocReq
4028 @return Result of the function call
4029*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004031WDI_SetRSSIThresholdsReq
4032(
4033 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4034 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4035 void* pUserData
4036)
4037{
4038 WDI_EventInfoType wdiEventData;
4039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4040
4041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 ------------------------------------------------------------------------*/
4044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4045 {
4046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4047 "WDI API call before module is initialized - Fail request");
4048
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004050 }
4051
4052 /*------------------------------------------------------------------------
4053 Fill in Event data and post to the Main FSM
4054 ------------------------------------------------------------------------*/
4055 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004056 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004057 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 wdiEventData.pUserData = pUserData;
4060
4061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4062}/* WDI_SetRSSIThresholdsReq*/
4063
4064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004065 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 wants to set the filter to minimize unnecessary host
4067 wakeup due to broadcast traffic while in power save.
4068 Upon the call of this API the WLAN DAL will pack and
4069 send a HAL host offload request message to the
4070 lower RIVA sub-system if DAL is in state STARTED.
4071
4072 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004073 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004074
4075 WDI_PostAssocReq must have been called.
4076
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004079
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 wdiHostOffloadCb: callback for passing back the response
4081 of the host offload operation received from the
4082 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004083
Jeff Johnson295189b2012-06-20 16:38:30 -07004084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 callback
4086
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 @see WDI_PostAssocReq
4088 @return Result of the function call
4089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004091WDI_HostOffloadReq
4092(
4093 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4094 WDI_HostOffloadCb wdiHostOffloadCb,
4095 void* pUserData
4096)
4097{
4098 WDI_EventInfoType wdiEventData;
4099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4100
4101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 ------------------------------------------------------------------------*/
4104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4105 {
4106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4107 "WDI API call before module is initialized - Fail request");
4108
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 }
4111
4112 /*------------------------------------------------------------------------
4113 Fill in Event data and post to the Main FSM
4114 ------------------------------------------------------------------------*/
4115 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004117 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004119 wdiEventData.pUserData = pUserData;
4120
4121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4122}/*WDI_HostOffloadReq*/
4123
4124/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 @brief WDI_KeepAliveReq will be called when the upper MAC
4126 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 and minimize unnecessary host wakeups due to while in power save.
4128 Upon the call of this API the WLAN DAL will pack and
4129 send a HAL Keep Alive request message to the
4130 lower RIVA sub-system if DAL is in state STARTED.
4131
4132 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004133 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004134
4135 WDI_PostAssocReq must have been called.
4136
Jeff Johnsone7245742012-09-05 17:12:55 -07004137 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004139
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 wdiKeepAliveCb: callback for passing back the response
4141 of the Keep Alive operation received from the
4142 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004143
Jeff Johnson295189b2012-06-20 16:38:30 -07004144 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 callback
4146
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 @see WDI_PostAssocReq
4148 @return Result of the function call
4149*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004150WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004151WDI_KeepAliveReq
4152(
4153 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4154 WDI_KeepAliveCb wdiKeepAliveCb,
4155 void* pUserData
4156)
4157{
4158 WDI_EventInfoType wdiEventData;
4159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4160
4161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 ------------------------------------------------------------------------*/
4164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4165 {
4166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4167 "WDI_KeepAliveReq: WDI API call before module "
4168 "is initialized - Fail request");
4169
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 }
4172
4173 /*------------------------------------------------------------------------
4174 Fill in Event data and post to the Main FSM
4175 ------------------------------------------------------------------------*/
4176 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004177 wdiEventData.pEventData = pwdiKeepAliveParams;
4178 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4179 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wdiEventData.pUserData = pUserData;
4181
4182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4183}/*WDI_KeepAliveReq*/
4184
4185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 wants to set the Wowl Bcast ptrn to minimize unnecessary
4188 host wakeup due to broadcast traffic while in power
4189 save. Upon the call of this API the WLAN DAL will pack
4190 and send a HAL Wowl Bcast ptrn request message to the
4191 lower RIVA sub-system if DAL is in state STARTED.
4192
4193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004195
4196 WDI_PostAssocReq must have been called.
4197
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 wdiWowlAddBcPtrnCb: callback for passing back the
4202 response of the add Wowl bcast ptrn operation received
4203 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004204
Jeff Johnson295189b2012-06-20 16:38:30 -07004205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 callback
4207
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 @see WDI_PostAssocReq
4209 @return Result of the function call
4210*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004211WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004212WDI_WowlAddBcPtrnReq
4213(
4214 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4215 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4216 void* pUserData
4217)
4218{
4219 WDI_EventInfoType wdiEventData;
4220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4221
4222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 ------------------------------------------------------------------------*/
4225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4226 {
4227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4228 "WDI API call before module is initialized - Fail request");
4229
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004231 }
4232
4233 /*------------------------------------------------------------------------
4234 Fill in Event data and post to the Main FSM
4235 ------------------------------------------------------------------------*/
4236 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004238 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 wdiEventData.pUserData = pUserData;
4241
4242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4243}/*WDI_WowlAddBcPtrnReq*/
4244
4245/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004246 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004247 wants to clear the Wowl Bcast ptrn. Upon the call of
4248 this API the WLAN DAL will pack and send a HAL delete
4249 Wowl Bcast ptrn request message to the lower RIVA
4250 sub-system if DAL is in state STARTED.
4251
4252 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004253 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004254
4255 WDI_WowlAddBcPtrnReq must have been called.
4256
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004259
Jeff Johnson295189b2012-06-20 16:38:30 -07004260 wdiWowlDelBcPtrnCb: callback for passing back the
4261 response of the del Wowl bcast ptrn operation received
4262 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004263
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 callback
4266
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 @see WDI_WowlAddBcPtrnReq
4268 @return Result of the function call
4269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004271WDI_WowlDelBcPtrnReq
4272(
4273 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4274 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4275 void* pUserData
4276)
4277{
4278 WDI_EventInfoType wdiEventData;
4279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4280
4281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 ------------------------------------------------------------------------*/
4284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4285 {
4286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4287 "WDI API call before module is initialized - Fail request");
4288
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004290 }
4291
4292 /*------------------------------------------------------------------------
4293 Fill in Event data and post to the Main FSM
4294 ------------------------------------------------------------------------*/
4295 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004296 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004297 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 wdiEventData.pUserData = pUserData;
4300
4301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4302}/*WDI_WowlDelBcPtrnReq*/
4303
4304/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 wants to enter the Wowl state to minimize unnecessary
4307 host wakeup while in power save. Upon the call of this
4308 API the WLAN DAL will pack and send a HAL Wowl enter
4309 request message to the lower RIVA sub-system if DAL is
4310 in state STARTED.
4311
4312 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004313 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004314
4315 WDI_PostAssocReq must have been called.
4316
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004318 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004319
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 wdiWowlEnterReqCb: callback for passing back the
4321 response of the enter Wowl operation received from the
4322 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004323
Jeff Johnson295189b2012-06-20 16:38:30 -07004324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 callback
4326
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 @see WDI_PostAssocReq
4328 @return Result of the function call
4329*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004331WDI_WowlEnterReq
4332(
4333 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4334 WDI_WowlEnterReqCb wdiWowlEnterCb,
4335 void* pUserData
4336)
4337{
4338 WDI_EventInfoType wdiEventData;
4339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4340
4341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 ------------------------------------------------------------------------*/
4344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4345 {
4346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4347 "WDI API call before module is initialized - Fail request");
4348
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004350 }
4351
4352 /*------------------------------------------------------------------------
4353 Fill in Event data and post to the Main FSM
4354 ------------------------------------------------------------------------*/
4355 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004356 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004357 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004358 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 wdiEventData.pUserData = pUserData;
4360
4361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4362}/*WDI_WowlEnterReq*/
4363
4364/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 wants to exit the Wowl state. Upon the call of this API
4367 the WLAN DAL will pack and send a HAL Wowl exit request
4368 message to the lower RIVA sub-system if DAL is in state
4369 STARTED.
4370
4371 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004372 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004373
4374 WDI_WowlEnterReq must have been called.
4375
Jeff Johnsone7245742012-09-05 17:12:55 -07004376 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004377 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004378
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 wdiWowlExitReqCb: callback for passing back the response
4380 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004381
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004383 callback
4384
Jeff Johnson295189b2012-06-20 16:38:30 -07004385 @see WDI_WowlEnterReq
4386 @return Result of the function call
4387*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004388WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004389WDI_WowlExitReq
4390(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004391 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 WDI_WowlExitReqCb wdiWowlExitCb,
4393 void* pUserData
4394)
4395{
4396 WDI_EventInfoType wdiEventData;
4397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4398
4399 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004400 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004401 ------------------------------------------------------------------------*/
4402 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4403 {
4404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4405 "WDI API call before module is initialized - Fail request");
4406
Jeff Johnsone7245742012-09-05 17:12:55 -07004407 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004408 }
4409
4410 /*------------------------------------------------------------------------
4411 Fill in Event data and post to the Main FSM
4412 ------------------------------------------------------------------------*/
4413 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004414 wdiEventData.pEventData = pwdiWowlExitParams;
4415 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 wdiEventData.pUserData = pUserData;
4418
4419 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4420}/*WDI_WowlExitReq*/
4421
4422/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004424 the upper MAC wants to dynamically adjusts the listen
4425 interval based on the WLAN/MSM activity. Upon the call
4426 of this API the WLAN DAL will pack and send a HAL
4427 configure Apps Cpu Wakeup State request message to the
4428 lower RIVA sub-system.
4429
4430 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004432
Jeff Johnsone7245742012-09-05 17:12:55 -07004433
4434 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004435 Apps Cpu Wakeup State as specified by the
4436 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4439 back the response of the configure Apps Cpu Wakeup State
4440 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004441
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004443 callback
4444
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 @return Result of the function call
4446*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004447WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004448WDI_ConfigureAppsCpuWakeupStateReq
4449(
4450 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4451 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4452 void* pUserData
4453)
4454{
4455 WDI_EventInfoType wdiEventData;
4456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4457
4458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 ------------------------------------------------------------------------*/
4461 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4462 {
4463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4464 "WDI API call before module is initialized - Fail request");
4465
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 }
4468
4469 /*------------------------------------------------------------------------
4470 Fill in Event data and post to the Main FSM
4471 ------------------------------------------------------------------------*/
4472 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4474 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4475 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004476 wdiEventData.pUserData = pUserData;
4477
4478 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4479}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4480/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 to to perform a flush operation on a given AC. Upon the
4483 call of this API the WLAN DAL will pack and send a HAL
4484 Flush AC request message to the lower RIVA sub-system if
4485 DAL is in state STARTED.
4486
4487 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004489
4490 WDI_AddBAReq must have been called.
4491
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004494
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 wdiFlushAcRspCb: callback for passing back the response
4496 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004497
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 callback
4500
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 @see WDI_AddBAReq
4502 @return Result of the function call
4503*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004504WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004505WDI_FlushAcReq
4506(
4507 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4508 WDI_FlushAcRspCb wdiFlushAcRspCb,
4509 void* pUserData
4510)
4511{
4512 WDI_EventInfoType wdiEventData;
4513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4514
4515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 ------------------------------------------------------------------------*/
4518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4519 {
4520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4521 "WDI API call before module is initialized - Fail request");
4522
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 }
4525
4526 /*------------------------------------------------------------------------
4527 Fill in Event data and post to the Main FSM
4528 ------------------------------------------------------------------------*/
4529 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 wdiEventData.pEventData = pwdiFlushAcReqParams;
4531 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4532 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004533 wdiEventData.pUserData = pUserData;
4534
4535 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4536
4537}/*WDI_FlushAcReq*/
4538
4539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004540 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 wants to notify the lower mac on a BT AMP event. This is
4542 to inform BTC-SLM that some BT AMP event occurred. Upon
4543 the call of this API the WLAN DAL will pack and send a
4544 HAL BT AMP event request message to the lower RIVA
4545 sub-system if DAL is in state STARTED.
4546
4547 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004549
Jeff Johnsone7245742012-09-05 17:12:55 -07004550
4551 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004553
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 wdiBtAmpEventRspCb: callback for passing back the
4555 response of the BT AMP event operation received from the
4556 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004557
Jeff Johnson295189b2012-06-20 16:38:30 -07004558 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 callback
4560
Jeff Johnson295189b2012-06-20 16:38:30 -07004561 @return Result of the function call
4562*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004563WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004564WDI_BtAmpEventReq
4565(
4566 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4567 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4568 void* pUserData
4569)
4570{
4571 WDI_EventInfoType wdiEventData;
4572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4573
4574 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 ------------------------------------------------------------------------*/
4577 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4578 {
4579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4580 "WDI API call before module is initialized - Fail request");
4581
Jeff Johnsone7245742012-09-05 17:12:55 -07004582 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 }
4584
4585 /*------------------------------------------------------------------------
4586 Fill in Event data and post to the Main FSM
4587 ------------------------------------------------------------------------*/
4588 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4590 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4591 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004592 wdiEventData.pUserData = pUserData;
4593
4594 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4595
4596}/*WDI_BtAmpEventReq*/
4597
Jeff Johnsone7245742012-09-05 17:12:55 -07004598#ifdef FEATURE_OEM_DATA_SUPPORT
4599/**
4600 @brief WDI_Start Oem Data Req will be called when the upper MAC
4601 wants to notify the lower mac on a oem data Req event.Upon
4602 the call of this API the WLAN DAL will pack and send a
4603 HAL OEM Data Req event request message to the lower RIVA
4604 sub-system if DAL is in state STARTED.
4605
4606 In state BUSY this request will be queued. Request won't
4607 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004608
4609
Jeff Johnsone7245742012-09-05 17:12:55 -07004610
4611 @param pwdiOemDataReqParams: the Oem Data Req as
4612 specified by the Device Interface
4613
4614 wdiStartOemDataRspCb: callback for passing back the
4615 response of the Oem Data Req received from the
4616 device
4617
4618 pUserData: user data will be passed back with the
4619 callback
4620
4621 @return Result of the function call
4622*/
4623WDI_Status
4624WDI_StartOemDataReq
4625(
4626 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4627 WDI_oemDataRspCb wdiOemDataRspCb,
4628 void* pUserData
4629)
4630{
4631 WDI_EventInfoType wdiEventData;
4632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4633
4634 /*------------------------------------------------------------------------
4635 Sanity Check
4636 ------------------------------------------------------------------------*/
4637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4638 {
4639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4640 "WDI API call before module is initialized - Fail request");
4641
4642 return WDI_STATUS_E_NOT_ALLOWED;
4643 }
4644
4645 /*------------------------------------------------------------------------
4646 Fill in Event data and post to the Main FSM
4647 ------------------------------------------------------------------------*/
4648 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4649 wdiEventData.pEventData = pwdiOemDataReqParams;
4650 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4651 wdiEventData.pCBfnc = wdiOemDataRspCb;
4652 wdiEventData.pUserData = pUserData;
4653
4654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4655
4656
4657}
4658
4659#endif
4660
4661
4662/*========================================================================
4663
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004665
Jeff Johnson295189b2012-06-20 16:38:30 -07004666==========================================================================*/
4667/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004668 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004669 the WLAN HW to change the current channel of operation.
4670 Upon the call of this API the WLAN DAL will pack and
4671 send a HAL Start request message to the lower RIVA
4672 sub-system if DAL is in state STARTED.
4673
4674 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004675 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004676
4677 WDI_Start must have been called.
4678
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004681
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 wdiSwitchChRspCb: callback for passing back the response
4683 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004684
Jeff Johnson295189b2012-06-20 16:38:30 -07004685 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 callback
4687
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 @see WDI_Start
4689 @return Result of the function call
4690*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004691WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004692WDI_SwitchChReq
4693(
4694 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4695 WDI_SwitchChRspCb wdiSwitchChRspCb,
4696 void* pUserData
4697)
4698{
4699 WDI_EventInfoType wdiEventData;
4700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4701
4702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004704 ------------------------------------------------------------------------*/
4705 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4706 {
4707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4708 "WDI API call before module is initialized - Fail request");
4709
Jeff Johnsone7245742012-09-05 17:12:55 -07004710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004711 }
4712
4713 /*------------------------------------------------------------------------
4714 Fill in Event data and post to the Main FSM
4715 ------------------------------------------------------------------------*/
4716 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004717 wdiEventData.pEventData = pwdiSwitchChReqParams;
4718 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4719 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004720 wdiEventData.pUserData = pUserData;
4721
4722 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4723
4724}/*WDI_SwitchChReq*/
4725
4726
4727/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004728 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004729 wishes to add or update a STA in HW. Upon the call of
4730 this API the WLAN DAL will pack and send a HAL Start
4731 message request message to the lower RIVA sub-system if
4732 DAL is in state STARTED.
4733
4734 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004735 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004736
4737 WDI_Start must have been called.
4738
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004741
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 wdiConfigSTARspCb: callback for passing back the
4743 response of the config STA operation received from the
4744 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004745
Jeff Johnson295189b2012-06-20 16:38:30 -07004746 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004747 callback
4748
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 @see WDI_Start
4750 @return Result of the function call
4751*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004752WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004753WDI_ConfigSTAReq
4754(
4755 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4756 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4757 void* pUserData
4758)
4759{
4760 WDI_EventInfoType wdiEventData;
4761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4762
4763 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 ------------------------------------------------------------------------*/
4766 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4767 {
4768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4769 "WDI API call before module is initialized - Fail request");
4770
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004772 }
4773
4774 /*------------------------------------------------------------------------
4775 Fill in Event data and post to the Main FSM
4776 ------------------------------------------------------------------------*/
4777 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004778 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4779 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4780 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 wdiEventData.pUserData = pUserData;
4782
4783 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4784
4785}/*WDI_ConfigSTAReq*/
4786
4787/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004788 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 wants to change the state of an ongoing link. Upon the
4790 call of this API the WLAN DAL will pack and send a HAL
4791 Start message request message to the lower RIVA
4792 sub-system if DAL is in state STARTED.
4793
4794 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004796
4797 WDI_JoinStartReq must have been called.
4798
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004801
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 wdiSetLinkStateRspCb: callback for passing back the
4803 response of the set link state operation received from
4804 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004805
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 callback
4808
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 @see WDI_JoinStartReq
4810 @return Result of the function call
4811*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004812WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004813WDI_SetLinkStateReq
4814(
4815 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4816 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4817 void* pUserData
4818)
4819{
4820 WDI_EventInfoType wdiEventData;
4821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4822
4823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 ------------------------------------------------------------------------*/
4826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4827 {
4828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4829 "WDI API call before module is initialized - Fail request");
4830
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 }
4833
4834 /*------------------------------------------------------------------------
4835 Fill in Event data and post to the Main FSM
4836 ------------------------------------------------------------------------*/
4837 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4839 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4840 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 wdiEventData.pUserData = pUserData;
4842
4843 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4844
4845}/*WDI_SetLinkStateReq*/
4846
4847
4848/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004850 to get statistics (MIB counters) from the device. Upon
4851 the call of this API the WLAN DAL will pack and send a
4852 HAL Start request message to the lower RIVA sub-system
4853 if DAL is in state STARTED.
4854
4855 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004857
4858 WDI_Start must have been called.
4859
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 wdiGetStatsRspCb: callback for passing back the response
4864 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004865
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 callback
4868
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 @see WDI_Start
4870 @return Result of the function call
4871*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004873WDI_GetStatsReq
4874(
4875 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4876 WDI_GetStatsRspCb wdiGetStatsRspCb,
4877 void* pUserData
4878)
4879{
4880 WDI_EventInfoType wdiEventData;
4881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4882
4883 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 ------------------------------------------------------------------------*/
4886 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4887 {
4888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4889 "WDI API call before module is initialized - Fail request");
4890
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004892 }
4893
4894 /*------------------------------------------------------------------------
4895 Fill in Event data and post to the Main FSM
4896 ------------------------------------------------------------------------*/
4897 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 wdiEventData.pEventData = pwdiGetStatsReqParams;
4899 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4900 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 wdiEventData.pUserData = pUserData;
4902
4903 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4904
4905}/*WDI_GetStatsReq*/
4906
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004907#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4908/**
4909 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4910 to get roam rssi from the device. Upon
4911 the call of this API the WLAN DAL will pack and send a
4912 HAL Start request message to the lower RIVA sub-system
4913 if DAL is in state STARTED.
4914
4915 In state BUSY this request will be queued. Request won't
4916 be allowed in any other state.
4917
4918 WDI_Start must have been called.
4919
4920 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4921 specified by the Device Interface
4922
4923 wdiGetRoamRssiRspCb: callback for passing back the response
4924 of the get stats operation received from the device
4925
4926 pUserData: user data will be passed back with the
4927 callback
4928
4929 @see WDI_Start
4930 @return Result of the function call
4931*/
4932WDI_Status
4933WDI_GetRoamRssiReq
4934(
4935 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4936 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4937 void* pUserData
4938)
4939{
4940 WDI_EventInfoType wdiEventData;
4941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4942
4943 /*------------------------------------------------------------------------
4944 Sanity Check
4945 ------------------------------------------------------------------------*/
4946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4947 {
4948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4949 "WDI API call before module is initialized - Fail request");
4950
4951 return WDI_STATUS_E_NOT_ALLOWED;
4952 }
4953 /*------------------------------------------------------------------------
4954 Fill in Event data and post to the Main FSM
4955 ------------------------------------------------------------------------*/
4956 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4957 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4958 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4959 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4960 wdiEventData.pUserData = pUserData;
4961
4962 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4963
4964}/*WDI_GetRoamRssiReq*/
4965#endif
4966
Jeff Johnson295189b2012-06-20 16:38:30 -07004967
4968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004970 it wishes to change the configuration of the WLAN
4971 Device. Upon the call of this API the WLAN DAL will pack
4972 and send a HAL Update CFG request message to the lower
4973 RIVA sub-system if DAL is in state STARTED.
4974
4975 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004977
4978 WDI_Start must have been called.
4979
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004981 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004982
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 wdiUpdateCfgsRspCb: callback for passing back the
4984 response of the update cfg operation received from the
4985 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004986
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004988 callback
4989
Jeff Johnson295189b2012-06-20 16:38:30 -07004990 @see WDI_Start
4991 @return Result of the function call
4992*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004993WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004994WDI_UpdateCfgReq
4995(
4996 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4997 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4998 void* pUserData
4999)
5000{
5001 WDI_EventInfoType wdiEventData;
5002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5003
5004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005005 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 ------------------------------------------------------------------------*/
5007 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5008 {
5009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5010 "WDI API call before module is initialized - Fail request");
5011
Jeff Johnsone7245742012-09-05 17:12:55 -07005012 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005013 }
5014
5015 /*------------------------------------------------------------------------
5016 Fill in Event data and post to the Main FSM
5017 ------------------------------------------------------------------------*/
5018 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005019 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5020 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5021 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 wdiEventData.pUserData = pUserData;
5023
5024 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5025
5026}/*WDI_UpdateCfgReq*/
5027
5028
5029
5030/**
5031 @brief WDI_AddBAReq will be called when the upper MAC has setup
5032 successfully a BA session and needs to notify the HW for
5033 the appropriate settings to take place. Upon the call of
5034 this API the WLAN DAL will pack and send a HAL Add BA
5035 request message to the lower RIVA sub-system if DAL is
5036 in state STARTED.
5037
5038 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005039 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005040
5041 WDI_PostAssocReq must have been called.
5042
5043 @param wdiAddBAReqParams: the add BA parameters as specified by
5044 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005045
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 wdiAddBARspCb: callback for passing back the response of
5047 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005048
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 callback
5051
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 @see WDI_PostAssocReq
5053 @return Result of the function call
5054*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005055WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005056WDI_AddBAReq
5057(
5058 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5059 WDI_AddBARspCb wdiAddBARspCb,
5060 void* pUserData
5061)
5062{
5063 WDI_EventInfoType wdiEventData;
5064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5065
5066 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 ------------------------------------------------------------------------*/
5069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5070 {
5071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5072 "WDI API call before module is initialized - Fail request");
5073
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 }
5076
5077 /*------------------------------------------------------------------------
5078 Fill in Event data and post to the Main FSM
5079 ------------------------------------------------------------------------*/
5080 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005081 wdiEventData.pEventData = pwdiAddBAReqParams;
5082 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5083 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 wdiEventData.pUserData = pUserData;
5085
5086 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5087
5088}/*WDI_AddBAReq*/
5089
5090
5091/**
5092 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5093 successfully a BA session and needs to notify the HW for
5094 the appropriate settings to take place. Upon the call of
5095 this API the WLAN DAL will pack and send a HAL Add BA
5096 request message to the lower RIVA sub-system if DAL is
5097 in state STARTED.
5098
5099 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005100 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005101
5102 WDI_PostAssocReq must have been called.
5103
5104 @param wdiAddBAReqParams: the add BA parameters as specified by
5105 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005106
Jeff Johnson295189b2012-06-20 16:38:30 -07005107 wdiAddBARspCb: callback for passing back the response of
5108 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005109
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 callback
5112
Jeff Johnson295189b2012-06-20 16:38:30 -07005113 @see WDI_PostAssocReq
5114 @return Result of the function call
5115*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005116WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005117WDI_TriggerBAReq
5118(
5119 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5120 WDI_TriggerBARspCb wdiTriggerBARspCb,
5121 void* pUserData
5122)
5123{
5124 WDI_EventInfoType wdiEventData;
5125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5126
5127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 ------------------------------------------------------------------------*/
5130 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5131 {
5132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5133 "WDI API call before module is initialized - Fail request");
5134
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005136 }
5137
5138 /*------------------------------------------------------------------------
5139 Fill in Event data and post to the Main FSM
5140 ------------------------------------------------------------------------*/
5141 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005142 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5143 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5144 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 wdiEventData.pUserData = pUserData;
5146
5147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5148
5149}/*WDI_AddBAReq*/
5150
5151/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 wishes to update any of the Beacon parameters used by HW.
5154 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5155 message to the lower RIVA sub-system if DAL is in state
5156 STARTED.
5157
5158 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005159 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005160
5161 WDI_PostAssocReq must have been called.
5162
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005165
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 wdiUpdateBeaconParamsRspCb: callback for passing back the
5167 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005168
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 callback
5171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 @see WDI_PostAssocReq
5173 @return Result of the function call
5174*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005175WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005176WDI_UpdateBeaconParamsReq
5177(
5178 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5179 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5180 void* pUserData
5181)
5182{
5183 WDI_EventInfoType wdiEventData;
5184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5185
5186 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005188 ------------------------------------------------------------------------*/
5189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5190 {
5191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5192 "WDI API call before module is initialized - Fail request");
5193
Jeff Johnsone7245742012-09-05 17:12:55 -07005194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 }
5196
5197 /*------------------------------------------------------------------------
5198 Fill in Event data and post to the Main FSM
5199 ------------------------------------------------------------------------*/
5200 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5202 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5203 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 wdiEventData.pUserData = pUserData;
5205
5206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5207
5208}/*WDI_UpdateBeaconParamsReq*/
5209
5210/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005211 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005212 wishes to update the Beacon template used by HW.
5213 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5214 message to the lower RIVA sub-system if DAL is in state
5215 STARTED.
5216
5217 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005218 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005219
5220 WDI_PostAssocReq must have been called.
5221
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005224
Jeff Johnson295189b2012-06-20 16:38:30 -07005225 wdiSendBeaconParamsRspCb: callback for passing back the
5226 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005227
Jeff Johnson295189b2012-06-20 16:38:30 -07005228 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 callback
5230
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 @see WDI_PostAssocReq
5232 @return Result of the function call
5233*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005234WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005235WDI_SendBeaconParamsReq
5236(
5237 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5238 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5239 void* pUserData
5240)
5241{
5242 WDI_EventInfoType wdiEventData;
5243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5244
5245 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 ------------------------------------------------------------------------*/
5248 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5249 {
5250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5251 "WDI API call before module is initialized - Fail request");
5252
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 }
5255
5256 /*------------------------------------------------------------------------
5257 Fill in Event data and post to the Main FSM
5258 ------------------------------------------------------------------------*/
5259 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005260 wdiEventData.pEventData = pwdiSendBeaconParams;
5261 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5262 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 wdiEventData.pUserData = pUserData;
5264
5265 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5266
5267}/*WDI_SendBeaconParamsReq*/
5268
5269/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005270 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005271 upper MAC wants to update the probe response template to
5272 be transmitted as Soft AP
5273 Upon the call of this API the WLAN DAL will
5274 pack and send the probe rsp template message to the
5275 lower RIVA sub-system if DAL is in state STARTED.
5276
5277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005279
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 wdiSendBeaconParamsRspCb: callback for passing back the
5285 response of the Send Beacon Params operation received
5286 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005287
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 callback
5290
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 @see WDI_AddBAReq
5292 @return Result of the function call
5293*/
5294
Jeff Johnsone7245742012-09-05 17:12:55 -07005295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005296WDI_UpdateProbeRspTemplateReq
5297(
5298 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5299 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5300 void* pUserData
5301)
5302{
5303 WDI_EventInfoType wdiEventData;
5304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5305
5306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 ------------------------------------------------------------------------*/
5309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5310 {
5311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5312 "WDI API call before module is initialized - Fail request");
5313
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 }
5316
5317 /*------------------------------------------------------------------------
5318 Fill in Event data and post to the Main FSM
5319 ------------------------------------------------------------------------*/
5320 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5322 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5323 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 wdiEventData.pUserData = pUserData;
5325
5326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5327
5328}/*WDI_UpdateProbeRspTemplateReq*/
5329
5330/**
5331 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5332 to the NV memory.
5333
5334
5335 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5336 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005337
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 wdiNvDownloadRspCb: callback for passing back the response of
5339 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005340
Jeff Johnson295189b2012-06-20 16:38:30 -07005341 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005342 callback
5343
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 @see WDI_PostAssocReq
5345 @return Result of the function call
5346*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005347WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005348WDI_NvDownloadReq
5349(
5350 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5351 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5352 void* pUserData
5353)
5354{
5355 WDI_EventInfoType wdiEventData;
5356
5357 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 ------------------------------------------------------------------------*/
5360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5361 {
5362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5363 "WDI API call before module is initialized - Fail request");
5364
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 }
5367
5368 /*------------------------------------------------------------------------
5369 Fill in Event data and post to the Main FSM
5370 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5372 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5373 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5374 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 wdiEventData.pUserData = pUserData;
5376
5377 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5378
5379}/*WDI_NVDownloadReq*/
5380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005382 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005383 upper MAC wants to send Notice of Absence
5384 Upon the call of this API the WLAN DAL will
5385 pack and send the probe rsp template message to the
5386 lower RIVA sub-system if DAL is in state STARTED.
5387
5388 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005389 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005390
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005394
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 wdiSendBeaconParamsRspCb: callback for passing back the
5396 response of the Send Beacon Params operation received
5397 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005398
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005400 callback
5401
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 @see WDI_AddBAReq
5403 @return Result of the function call
5404*/
5405WDI_Status
5406WDI_SetP2PGONOAReq
5407(
5408 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5409 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5410 void* pUserData
5411)
5412{
5413 WDI_EventInfoType wdiEventData;
5414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5415
5416 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005418 ------------------------------------------------------------------------*/
5419 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5420 {
5421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5422 "WDI API call before module is initialized - Fail request");
5423
Jeff Johnsone7245742012-09-05 17:12:55 -07005424 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005425 }
5426
5427 /*------------------------------------------------------------------------
5428 Fill in Event data and post to the Main FSM
5429 ------------------------------------------------------------------------*/
5430 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005431 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5432 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5433 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005434 wdiEventData.pUserData = pUserData;
5435
5436 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5437
5438}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005439
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305440#ifdef FEATURE_WLAN_TDLS
5441/**
5442 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5443 upper MAC wants to send TDLS Link Establish Request Parameters
5444 Upon the call of this API the WLAN DAL will
5445 pack and send the TDLS Link Establish Request message to the
5446 lower RIVA sub-system if DAL is in state STARTED.
5447
5448 In state BUSY this request will be queued. Request won't
5449 be allowed in any other state.
5450
5451
5452 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5453 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5454
5455 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5456 response of the TDLS Link Establish request received
5457 from the device
5458
5459 pUserData: user data will be passed back with the
5460 callback
5461
5462 @see
5463 @return Result of the function call
5464*/
5465WDI_Status
5466WDI_SetTDLSLinkEstablishReq
5467(
5468 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5469 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5470 void* pUserData
5471)
5472{
5473 WDI_EventInfoType wdiEventData;
5474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5475
5476 /*------------------------------------------------------------------------
5477 Sanity Check
5478 ------------------------------------------------------------------------*/
5479 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5480 {
5481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5482 "WDI API call before module is initialized - Fail request");
5483
5484 return WDI_STATUS_E_NOT_ALLOWED;
5485 }
5486
5487 /*------------------------------------------------------------------------
5488 Fill in Event data and post to the Main FSM
5489 ------------------------------------------------------------------------*/
5490 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5491 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5492 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5493 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5494 wdiEventData.pUserData = pUserData;
5495
5496 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5497
5498}/*WDI_SetTDLSLinkEstablishReq*/
5499#endif
5500
Jeff Johnson295189b2012-06-20 16:38:30 -07005501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005502 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005503 UMAC wanted to add STA self while opening any new session
5504 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005506
5507
Jeff Johnsone7245742012-09-05 17:12:55 -07005508 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005509 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005510
Jeff Johnson295189b2012-06-20 16:38:30 -07005511 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005512 callback
5513
5514 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005515 @return Result of the function call
5516*/
5517WDI_Status
5518WDI_AddSTASelfReq
5519(
5520 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5521 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5522 void* pUserData
5523)
5524{
5525 WDI_EventInfoType wdiEventData;
5526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5527
5528 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 ------------------------------------------------------------------------*/
5531 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5532 {
5533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5534 "WDI API call before module is initialized - Fail request");
5535
Jeff Johnsone7245742012-09-05 17:12:55 -07005536 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005537 }
5538
5539 /*------------------------------------------------------------------------
5540 Fill in Event data and post to the Main FSM
5541 ------------------------------------------------------------------------*/
5542 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5544 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5545 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005546 wdiEventData.pUserData = pUserData;
5547
5548 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5549
5550}/*WDI_AddSTASelfReq*/
5551
5552
Jeff Johnsone7245742012-09-05 17:12:55 -07005553#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005554/**
5555 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5556 the device of a successful add TSpec negotiation. HW
5557 needs to receive the TSpec Info from the UMAC in order
5558 to configure properly the QoS data traffic. Upon the
5559 call of this API the WLAN DAL will pack and send a HAL
5560 Add TS request message to the lower RIVA sub-system if
5561 DAL is in state STARTED.
5562
5563 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005564 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005565
5566 WDI_PostAssocReq must have been called.
5567
5568 @param wdiAddTsReqParams: the add TS parameters as specified by
5569 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005570
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 wdiAddTsRspCb: callback for passing back the response of
5572 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005573
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 callback
5576
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 @see WDI_PostAssocReq
5578 @return Result of the function call
5579*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005580WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005581WDI_AggrAddTSReq
5582(
5583 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5584 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5585 void* pUserData
5586)
5587{
5588 WDI_EventInfoType wdiEventData;
5589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5590
5591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 ------------------------------------------------------------------------*/
5594 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5595 {
5596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5597 "WDI API call before module is initialized - Fail request");
5598
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 }
5601
5602 /*------------------------------------------------------------------------
5603 Fill in Event data and post to the Main FSM
5604 ------------------------------------------------------------------------*/
5605 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005606 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5607 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5608 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005609 wdiEventData.pUserData = pUserData;
5610
5611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5612
5613}/*WDI_AggrAddTSReq*/
5614
5615#endif /* WLAN_FEATURE_VOWIFI_11R */
5616
Jeff Johnson295189b2012-06-20 16:38:30 -07005617/**
5618 @brief WDI_FTMCommandReq
5619 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005620
5621 @param ftmCommandReq: FTM Command Body
5622 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005623 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 @see
5626 @return Result of the function call
5627*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005628WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005629WDI_FTMCommandReq
5630(
5631 WDI_FTMCommandReqType *ftmCommandReq,
5632 WDI_FTMCommandRspCb ftmCommandRspCb,
5633 void *pUserData
5634)
5635{
5636 WDI_EventInfoType wdiEventData;
5637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5638
5639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 ------------------------------------------------------------------------*/
5642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5643 {
5644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5645 "WDI API call before module is initialized - Fail request");
5646
Jeff Johnsone7245742012-09-05 17:12:55 -07005647 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005648 }
5649
5650 /*------------------------------------------------------------------------
5651 Fill in Event data and post to the Main FSM
5652 ------------------------------------------------------------------------*/
5653 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5654 wdiEventData.pEventData = (void *)ftmCommandReq;
5655 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5656 wdiEventData.pCBfnc = ftmCommandRspCb;
5657 wdiEventData.pUserData = pUserData;
5658
5659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5660}
Jeff Johnson295189b2012-06-20 16:38:30 -07005661/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005662 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005663
5664 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005665 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005666
5667
5668 @param pwdiResumeReqParams: as specified by
5669 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005670
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 wdiResumeReqRspCb: callback for passing back the response of
5672 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005673
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 callback
5676
5677 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 @return Result of the function call
5679*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005680WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005681WDI_HostResumeReq
5682(
5683 WDI_ResumeParamsType* pwdiResumeReqParams,
5684 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5685 void* pUserData
5686)
5687{
5688 WDI_EventInfoType wdiEventData;
5689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5690
5691 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005693 ------------------------------------------------------------------------*/
5694 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5695 {
5696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5697 "WDI API call before module is initialized - Fail request");
5698
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005700 }
5701
5702 /*------------------------------------------------------------------------
5703 Fill in Event data and post to the Main FSM
5704 ------------------------------------------------------------------------*/
5705 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 wdiEventData.pEventData = pwdiResumeReqParams;
5707 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5708 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 wdiEventData.pUserData = pUserData;
5710
5711 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5712
5713}/*WDI_HostResumeReq*/
5714
5715/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005716 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005717
5718 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005719 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005720
5721
5722 @param pwdiDelStaSelfReqParams: as specified by
5723 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005724
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 wdiDelStaSelfRspCb: callback for passing back the response of
5726 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005727
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 callback
5730
Jeff Johnson295189b2012-06-20 16:38:30 -07005731 @see WDI_PostAssocReq
5732 @return Result of the function call
5733*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005734WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005735WDI_DelSTASelfReq
5736(
5737 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5738 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5739 void* pUserData
5740)
5741{
5742 WDI_EventInfoType wdiEventData;
5743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5744
5745 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 ------------------------------------------------------------------------*/
5748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5749 {
5750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5751 "WDI API call before module is initialized - Fail request");
5752
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005754 }
5755
5756 /*------------------------------------------------------------------------
5757 Fill in Event data and post to the Main FSM
5758 ------------------------------------------------------------------------*/
5759 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005760 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5761 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5762 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 wdiEventData.pUserData = pUserData;
5764
5765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5766
5767}/*WDI_AggrAddTSReq*/
5768
5769/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5771 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 Upon the call of this API the WLAN DAL will pack
5773 and send a HAL Set Tx Per Tracking request message to the
5774 lower RIVA sub-system if DAL is in state STARTED.
5775
5776 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005777 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005778
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005780 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 pwdiSetTxPerTrackingRspCb: callback for passing back the
5783 response of the set Tx PER Tracking configurations operation received
5784 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005785
Jeff Johnson295189b2012-06-20 16:38:30 -07005786 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005787 callback
5788
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 @return Result of the function call
5790*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005791WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005792WDI_SetTxPerTrackingReq
5793(
5794 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5795 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5796 void* pUserData
5797)
5798{
5799 WDI_EventInfoType wdiEventData;
5800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5801
5802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 ------------------------------------------------------------------------*/
5805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5806 {
5807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5808 "WDI API call before module is initialized - Fail request");
5809
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 }
5812
5813 /*------------------------------------------------------------------------
5814 Fill in Event data and post to the Main FSM
5815 ------------------------------------------------------------------------*/
5816 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005819 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiEventData.pUserData = pUserData;
5821
5822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5823
5824}/*WDI_SetTxPerTrackingReq*/
5825
5826/**
5827 @brief WDI_SetTmLevelReq
5828 If HW Thermal condition changed, driver should react based on new
5829 HW thermal condition.
5830
5831 @param pwdiSetTmLevelReq: New thermal condition information
5832
5833 pwdiSetTmLevelRspCb: callback
5834
5835 usrData: user data will be passed back with the
5836 callback
5837
5838 @return Result of the function call
5839*/
5840WDI_Status
5841WDI_SetTmLevelReq
5842(
5843 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5844 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5845 void *usrData
5846)
5847{
5848 WDI_EventInfoType wdiEventData;
5849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5850
5851 /*------------------------------------------------------------------------
5852 Sanity Check
5853 ------------------------------------------------------------------------*/
5854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5855 {
5856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5857 "WDI API call before module is initialized - Fail request");
5858
5859 return WDI_STATUS_E_NOT_ALLOWED;
5860 }
5861
5862 /*------------------------------------------------------------------------
5863 Fill in Event data and post to the Main FSM
5864 ------------------------------------------------------------------------*/
5865 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5866 wdiEventData.pEventData = pwdiSetTmLevelReq;
5867 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5868 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5869 wdiEventData.pUserData = usrData;
5870
5871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5872}
5873
5874/**
5875 @brief WDI_HostSuspendInd
5876
5877 Suspend Indication from the upper layer will be sent
5878 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005879
Jeff Johnson295189b2012-06-20 16:38:30 -07005880 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005881
5882 @see
5883
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 @return Status of the request
5885*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005886WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005887WDI_HostSuspendInd
5888(
5889 WDI_SuspendParamsType* pwdiSuspendIndParams
5890)
5891{
5892
5893 WDI_EventInfoType wdiEventData;
5894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5895
5896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 ------------------------------------------------------------------------*/
5899 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5900 {
5901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5902 "WDI API call before module is initialized - Fail request");
5903
Jeff Johnsone7245742012-09-05 17:12:55 -07005904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 }
5906
5907 /*------------------------------------------------------------------------
5908 Fill in Event data and post to the Main FSM
5909 ------------------------------------------------------------------------*/
5910 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005911 wdiEventData.pEventData = pwdiSuspendIndParams;
5912 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5913 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005914 wdiEventData.pUserData = NULL;
5915
5916 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5917
5918}/*WDI_HostSuspendInd*/
5919
5920/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005921 @brief WDI_TrafficStatsInd
5922 Traffic Stats from the upper layer will be sent
5923 down to HAL
5924
5925 @param WDI_TrafficStatsIndType
5926
5927 @see
5928
5929 @return Status of the request
5930*/
5931WDI_Status
5932WDI_TrafficStatsInd
5933(
5934 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5935)
5936{
5937
5938 WDI_EventInfoType wdiEventData;
5939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5940
5941 /*------------------------------------------------------------------------
5942 Sanity Check
5943 ------------------------------------------------------------------------*/
5944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5945 {
5946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5947 "WDI API call before module is initialized - Fail request");
5948
5949 return WDI_STATUS_E_NOT_ALLOWED;
5950 }
5951
5952 /*------------------------------------------------------------------------
5953 Fill in Event data and post to the Main FSM
5954 ------------------------------------------------------------------------*/
5955 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5956 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5957 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5958 wdiEventData.pCBfnc = NULL;
5959 wdiEventData.pUserData = NULL;
5960
5961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5962
5963}/*WDI_TrafficStatsInd*/
5964
Chet Lanctota96bb432013-03-18 10:26:30 -07005965#ifdef WLAN_FEATURE_11W
5966/**
5967 @brief WDI_ExcludeUnencryptedInd
5968 Register with HAL to receive/drop unencrypted frames
5969
5970 @param WDI_ExcludeUnencryptIndType
5971
5972 @see
5973
5974 @return Status of the request
5975*/
5976WDI_Status
5977WDI_ExcludeUnencryptedInd
5978(
5979 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5980)
5981{
5982
5983 WDI_EventInfoType wdiEventData;
5984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5985
5986 /*------------------------------------------------------------------------
5987 Sanity Check
5988 ------------------------------------------------------------------------*/
5989 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5990 {
5991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5992 "WDI API call before module is initialized - Fail request");
5993
5994 return WDI_STATUS_E_NOT_ALLOWED;
5995 }
5996
5997 /*------------------------------------------------------------------------
5998 Fill in Event data and post to the Main FSM
5999 ------------------------------------------------------------------------*/
6000 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6001 wdiEventData.pEventData = pWdiExcUnencParams;
6002 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6003 wdiEventData.pCBfnc = NULL;
6004 wdiEventData.pUserData = NULL;
6005
6006 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6007
6008}/*WDI_TrafficStatsInd*/
6009#endif
6010
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006011/**
Yue Ma365933a2013-08-14 15:59:08 -07006012 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6013
6014 @param addPeriodicTxPtrnParams: Add Pattern parameters
6015
6016 @see
6017
6018 @return Status of the request
6019*/
6020WDI_Status
6021WDI_AddPeriodicTxPtrnInd
6022(
6023 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6024)
6025{
6026 WDI_EventInfoType wdiEventData;
6027
6028 /*-------------------------------------------------------------------------
6029 Sanity Check
6030 ------------------------------------------------------------------------*/
6031 if (eWLAN_PAL_FALSE == gWDIInitialized)
6032 {
6033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6034 "WDI API call before module is initialized - Fail request!");
6035
6036 return WDI_STATUS_E_NOT_ALLOWED;
6037 }
6038
6039 /*-------------------------------------------------------------------------
6040 Fill in Event data and post to the Main FSM
6041 ------------------------------------------------------------------------*/
6042 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6043 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6044 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6045 wdiEventData.pCBfnc = NULL;
6046 wdiEventData.pUserData = NULL;
6047
6048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6049}
6050
6051/**
6052 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6053
6054 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6055
6056 @see
6057
6058 @return Status of the request
6059*/
6060WDI_Status
6061WDI_DelPeriodicTxPtrnInd
6062(
6063 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6064)
6065{
6066 WDI_EventInfoType wdiEventData;
6067
6068 /*-------------------------------------------------------------------------
6069 Sanity Check
6070 ------------------------------------------------------------------------*/
6071 if (eWLAN_PAL_FALSE == gWDIInitialized)
6072 {
6073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6074 "WDI API call before module is initialized - Fail request!");
6075
6076 return WDI_STATUS_E_NOT_ALLOWED;
6077 }
6078
6079 /*-------------------------------------------------------------------------
6080 Fill in Event data and post to the Main FSM
6081 ------------------------------------------------------------------------*/
6082 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6083 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6084 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6085 wdiEventData.pCBfnc = NULL;
6086 wdiEventData.pUserData = NULL;
6087
6088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6089}
6090
6091/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 @brief WDI_HALDumpCmdReq
6093 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006094
6095 @param halDumpCmdReqParams: Hal Dump Command Body
6096 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006098
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 @see
6100 @return Result of the function call
6101*/
6102WDI_Status WDI_HALDumpCmdReq
6103(
6104 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6105 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6106 void *pUserData
6107)
6108{
6109 WDI_EventInfoType wdiEventData;
6110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6111
6112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 ------------------------------------------------------------------------*/
6115 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6116 {
6117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6118 "WDI API call before module is initialized - Fail request");
6119
Jeff Johnsone7245742012-09-05 17:12:55 -07006120 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006121 }
6122
6123 /*------------------------------------------------------------------------
6124 Fill in Event data and post to the Main FSM
6125 ------------------------------------------------------------------------*/
6126 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6127 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6128 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6129 wdiEventData.pCBfnc = halDumpCmdRspCb;
6130 wdiEventData.pUserData = pUserData;
6131
6132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6133}
6134
Jeff Johnsone7245742012-09-05 17:12:55 -07006135/*============================================================================
6136
Jeff Johnson295189b2012-06-20 16:38:30 -07006137 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006138
Jeff Johnson295189b2012-06-20 16:38:30 -07006139 ============================================================================*/
6140
6141/**
6142 @brief Main FSM Start function for all states except BUSY
6143
Jeff Johnsone7245742012-09-05 17:12:55 -07006144
6145 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006146 wdiEV: event posted to the main DAL FSM
6147 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 structure
6149
Jeff Johnson295189b2012-06-20 16:38:30 -07006150 @see
6151 @return Result of the function call
6152*/
6153WDI_Status
6154WDI_PostMainEvent
6155(
Jeff Johnsone7245742012-09-05 17:12:55 -07006156 WDI_ControlBlockType* pWDICtx,
6157 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160)
6161{
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 WDI_Status wdiStatus;
6163 WDI_MainFuncType pfnWDIMainEvHdlr;
6164 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6166
6167 /*-------------------------------------------------------------------------
6168 Sanity check
6169 -------------------------------------------------------------------------*/
6170 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6171 ( wdiEV >= WDI_MAX_EVENT ))
6172 {
6173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6174 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6175 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 }
6178
6179 /*Access to the global state must be locked */
6180 wpalMutexAcquire(&pWDICtx->wptMutex);
6181
6182 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006183 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006184
6185 wdiOldState = pWDICtx->uGlobalState;
6186
6187 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6189 response comes from CCPU for the request sent by host:
6190 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 -07006191 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 -07006192 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 CCPU:
6194 don't change the state */
6195 if ( WDI_RESPONSE_EVENT != wdiEV)
6196 {
6197 /*Transition to BUSY State - the request is now being processed by the FSM,
6198 if the request fails we shall transition back to the old state, if not
6199 the request will manage its own state transition*/
6200 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6201 }
6202 /* If the state function associated with the EV is NULL it means that this
6203 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 {
6206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006208 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 }
6211 else
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006214 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 }
6218
6219 /* If a request handles itself well it will end up in a success or in a
6220 pending
6221 Success - means that the request was processed and the proper state
6222 transition already occurred or will occur when the resp is received
6223 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006224
Jeff Johnson295189b2012-06-20 16:38:30 -07006225 Pending - means the request could not be processed at this moment in time
6226 because the FSM was already busy so no state transition or dequeueing
6227 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006228
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 Success for synchronous case means that the transition may occur and
6230 processing of pending requests may continue - so it should go through
6231 and restores the state and continue processing queued requests*/
6232 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6233 ( WDI_STATUS_PENDING != wdiStatus ))
6234 {
6235 if ( WDI_RESPONSE_EVENT != wdiEV)
6236 {
6237 /*The request has failed or could not be processed - transition back to
6238 the old state - check to see if anything was queued and try to execute
6239 The dequeue logic should post a message to a thread and return - no
6240 actual processing can occur */
6241 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6242 }
6243 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006244
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 }
6246
6247 /* we have completed processing the event */
6248 wpalMutexRelease(&pWDICtx->wptMutex);
6249
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006251
6252}/*WDI_PostMainEvent*/
6253
6254
6255/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006257--------------------------------------------------------------------------*/
6258/**
6259 @brief Main FSM Start function for all states except BUSY
6260
Jeff Johnsone7245742012-09-05 17:12:55 -07006261
6262 @param pWDICtx: pointer to the WLAN DAL context
6263 pEventData: pointer to the event information structure
6264
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 @see
6266 @return Result of the function call
6267*/
6268WDI_Status
6269WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006270(
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 WDI_ControlBlockType* pWDICtx,
6272 WDI_EventInfoType* pEventData
6273)
6274{
6275
6276 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 ----------------------------------------------------------------------*/
6279 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6280 {
6281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006282 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006283 pWDICtx, pEventData);
6284 return WDI_STATUS_E_FAILURE;
6285 }
6286
6287 wpalMutexAcquire(&pWDICtx->wptMutex);
6288
6289 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 ----------------------------------------------------------------------*/
6292 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6293 {
6294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6295 "Control Transport not yet Open - queueing the request");
6296
6297 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006298 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006299
6300 wpalMutexRelease(&pWDICtx->wptMutex);
6301 return WDI_STATUS_PENDING;
6302 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wpalMutexRelease(&pWDICtx->wptMutex);
6305
6306 /*Return Success*/
6307 return WDI_ProcessRequest( pWDICtx, pEventData );
6308
6309}/*WDI_MainStart*/
6310
6311/**
6312 @brief Main FSM Response function for state INIT
6313
Jeff Johnsone7245742012-09-05 17:12:55 -07006314
6315 @param pWDICtx: pointer to the WLAN DAL context
6316 pEventData: pointer to the event information structure
6317
Jeff Johnson295189b2012-06-20 16:38:30 -07006318 @see
6319 @return Result of the function call
6320*/
6321WDI_Status
6322WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006323(
Jeff Johnson295189b2012-06-20 16:38:30 -07006324 WDI_ControlBlockType* pWDICtx,
6325 WDI_EventInfoType* pEventData
6326)
6327{
6328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006329 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006331 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006332
6333 /*Return Success*/
6334 return WDI_STATUS_E_NOT_ALLOWED;
6335}/* WDI_MainRspInit */
6336
6337/**
6338 @brief Main FSM Close function for all states except BUSY
6339
Jeff Johnsone7245742012-09-05 17:12:55 -07006340
6341 @param pWDICtx: pointer to the WLAN DAL context
6342 pEventData: pointer to the event information structure
6343
Jeff Johnson295189b2012-06-20 16:38:30 -07006344 @see
6345 @return Result of the function call
6346*/
6347WDI_Status
6348WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006349(
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 WDI_ControlBlockType* pWDICtx,
6351 WDI_EventInfoType* pEventData
6352)
6353{
6354
6355 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006357 ----------------------------------------------------------------------*/
6358 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6359 {
6360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 pWDICtx, pEventData);
6363 return WDI_STATUS_E_FAILURE;
6364 }
6365
6366 /*Return Success*/
6367 return WDI_ProcessRequest( pWDICtx, pEventData );
6368
6369}/*WDI_MainClose*/
6370/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006371 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006372--------------------------------------------------------------------------*/
6373/**
6374 @brief Main FSM Start function for state STARTED
6375
Jeff Johnsone7245742012-09-05 17:12:55 -07006376
6377 @param pWDICtx: pointer to the WLAN DAL context
6378 pEventData: pointer to the event information structure
6379
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 @see
6381 @return Result of the function call
6382*/
6383WDI_Status
6384WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006385(
Jeff Johnson295189b2012-06-20 16:38:30 -07006386 WDI_ControlBlockType* pWDICtx,
6387 WDI_EventInfoType* pEventData
6388)
6389{
6390 WDI_StartRspCb wdiStartRspCb = NULL;
6391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6392
6393 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 ----------------------------------------------------------------------*/
6396 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6397 {
6398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 pWDICtx, pEventData);
6401 return WDI_STATUS_E_FAILURE;
6402 }
6403
6404 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 ----------------------------------------------------------------------*/
6407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006409
6410 wpalMutexAcquire(&pWDICtx->wptMutex);
6411
6412 /*Transition back to started because the post function transitioned us to
6413 busy*/
6414 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6415
6416 /*Check to see if any request is pending*/
6417 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006418
Jeff Johnson295189b2012-06-20 16:38:30 -07006419 wpalMutexRelease(&pWDICtx->wptMutex);
6420
6421 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006422 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6423
Jeff Johnson295189b2012-06-20 16:38:30 -07006424 /*Notify UMAC*/
6425 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6426
6427 /*Return Success*/
6428 return WDI_STATUS_SUCCESS;
6429
6430}/*WDI_MainStartStarted*/
6431
6432/**
6433 @brief Main FSM Stop function for state STARTED
6434
Jeff Johnsone7245742012-09-05 17:12:55 -07006435
6436 @param pWDICtx: pointer to the WLAN DAL context
6437 pEventData: pointer to the event information structure
6438
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 @see
6440 @return Result of the function call
6441*/
6442WDI_Status
6443WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006444(
Jeff Johnson295189b2012-06-20 16:38:30 -07006445 WDI_ControlBlockType* pWDICtx,
6446 WDI_EventInfoType* pEventData
6447)
6448{
6449 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006451 ----------------------------------------------------------------------*/
6452 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6453 {
6454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 pWDICtx, pEventData);
6457 return WDI_STATUS_E_FAILURE;
6458 }
6459
6460 /*State at this point is BUSY - because we enter this state before posting
6461 an event to the FSM in order to prevent potential race conditions*/
6462
6463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6464 "Processing stop request in FSM");
6465
6466 /*Return Success*/
6467 return WDI_ProcessRequest( pWDICtx, pEventData );
6468
6469}/*WDI_MainStopStarted*/
6470/**
6471 @brief Main FSM Request function for state started
6472
Jeff Johnsone7245742012-09-05 17:12:55 -07006473
6474 @param pWDICtx: pointer to the WLAN DAL context
6475 pEventData: pointer to the event information structure
6476
Jeff Johnson295189b2012-06-20 16:38:30 -07006477 @see
6478 @return Result of the function call
6479*/
6480WDI_Status
6481WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006482(
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 WDI_ControlBlockType* pWDICtx,
6484 WDI_EventInfoType* pEventData
6485)
6486{
6487
6488 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 ----------------------------------------------------------------------*/
6491 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6492 {
6493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006494 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 pWDICtx, pEventData);
6496 return WDI_STATUS_E_FAILURE;
6497 }
6498
6499 /*State at this point is BUSY - because we enter this state before posting
6500 an event to the FSM in order to prevent potential race conditions*/
6501
6502 /*Return Success*/
6503 return WDI_ProcessRequest( pWDICtx, pEventData );
6504
6505}/*WDI_MainReqStarted*/
6506
6507/**
6508 @brief Main FSM Response function for all states except INIT
6509
Jeff Johnsone7245742012-09-05 17:12:55 -07006510
6511 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006513
Jeff Johnson295189b2012-06-20 16:38:30 -07006514 @see
6515 @return Result of the function call
6516*/
6517WDI_Status
6518WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006519(
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 WDI_ControlBlockType* pWDICtx,
6521 WDI_EventInfoType* pEventData
6522)
6523{
Jeff Johnsone7245742012-09-05 17:12:55 -07006524 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 wpt_boolean expectedResponse;
6526
6527 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006528 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 ----------------------------------------------------------------------*/
6530 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6531 {
6532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006533 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 pWDICtx, pEventData);
6535 return WDI_STATUS_E_FAILURE;
6536 }
6537
6538 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6539 {
6540 /* we received an expected response */
6541 expectedResponse = eWLAN_PAL_TRUE;
6542
6543 /*We expect that we will transition to started after this processing*/
6544 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6545
6546 /* we are no longer expecting a response */
6547 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6548 }
6549 else
6550 {
6551 /* we received an indication or unexpected response */
6552 expectedResponse = eWLAN_PAL_FALSE;
6553 /* for indications no need to update state from what it is right
6554 now, unless it explicitly does it in the indication handler (say
6555 for device failure ind) */
6556 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6557 }
6558
6559 /*Process the response and indication */
6560 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6561
6562 /*Lock the CB as we are about to do a state transition*/
6563 wpalMutexAcquire(&pWDICtx->wptMutex);
6564
6565 /*Transition to the expected state after the response processing
6566 - this should always be started state with the following exceptions:
6567 1. processing of a failed start response
6568 2. device failure detected while processing response
6569 3. stop response received*/
6570 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006571
Jeff Johnson295189b2012-06-20 16:38:30 -07006572 /*Dequeue request that may have been queued while we were waiting for the
6573 response */
6574 if ( expectedResponse )
6575 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006577 }
6578
6579 wpalMutexRelease(&pWDICtx->wptMutex);
6580
6581 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006583
6584}/*WDI_MainRsp*/
6585
6586/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006588--------------------------------------------------------------------------*/
6589/**
6590 @brief Main FSM Stop function for state STOPPED
6591
Jeff Johnsone7245742012-09-05 17:12:55 -07006592
6593 @param pWDICtx: pointer to the WLAN DAL context
6594 pEventData: pointer to the event information structure
6595
Jeff Johnson295189b2012-06-20 16:38:30 -07006596 @see
6597 @return Result of the function call
6598*/
6599WDI_Status
6600WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006601(
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 WDI_ControlBlockType* pWDICtx,
6603 WDI_EventInfoType* pEventData
6604)
6605{
6606 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 ----------------------------------------------------------------------*/
6609 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6610 {
6611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006612 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 pWDICtx, pEventData);
6614 return WDI_STATUS_E_FAILURE;
6615 }
6616
6617 /*We should normally not get a STOP request if we are already stopped
6618 since we should normally be stopped by the UMAC. However in some
6619 error situations we put ourselves in the stopped state without the
6620 UMAC knowing, so when we get a STOP request in this state we still
6621 process it since we need to clean up the underlying state */
6622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6623 "Processing stop request while stopped in FSM");
6624
6625 /*Return Success*/
6626 return WDI_ProcessRequest( pWDICtx, pEventData );
6627
6628}/*WDI_MainStopStopped*/
6629
6630/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006631 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006632--------------------------------------------------------------------------*/
6633/**
6634 @brief Main FSM Start function for state BUSY
6635
Jeff Johnsone7245742012-09-05 17:12:55 -07006636
6637 @param pWDICtx: pointer to the WLAN DAL context
6638 pEventData: pointer to the event information structure
6639
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 @see
6641 @return Result of the function call
6642*/
6643WDI_Status
6644WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006645(
Jeff Johnson295189b2012-06-20 16:38:30 -07006646 WDI_ControlBlockType* pWDICtx,
6647 WDI_EventInfoType* pEventData
6648)
6649{
6650 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006651 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006652 ----------------------------------------------------------------------*/
6653 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6654 {
6655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 pWDICtx, pEventData);
6658 return WDI_STATUS_E_FAILURE;
6659 }
6660
6661 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006662 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 ----------------------------------------------------------------------*/
6664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6665 "WDI Busy state - queue start request");
6666
6667 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006669
6670 /*Return Success*/
6671 return WDI_STATUS_PENDING;
6672}/*WDI_MainStartBusy*/
6673
6674/**
6675 @brief Main FSM Stop function for state BUSY
6676
Jeff Johnsone7245742012-09-05 17:12:55 -07006677
6678 @param pWDICtx: pointer to the WLAN DAL context
6679 pEventData: pointer to the event information structure
6680
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 @see
6682 @return Result of the function call
6683*/
6684WDI_Status
6685WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006686(
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 WDI_ControlBlockType* pWDICtx,
6688 WDI_EventInfoType* pEventData
6689)
6690{
6691 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 ----------------------------------------------------------------------*/
6694 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6695 {
6696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006697 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 pWDICtx, pEventData);
6699 return WDI_STATUS_E_FAILURE;
6700 }
6701
6702 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 ----------------------------------------------------------------------*/
6705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6706 "WDI Busy state - queue stop request");
6707
Jeff Johnsone7245742012-09-05 17:12:55 -07006708 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006710
Jeff Johnson295189b2012-06-20 16:38:30 -07006711}/*WDI_MainStopBusy*/
6712
6713/**
6714 @brief Main FSM Request function for state BUSY
6715
Jeff Johnsone7245742012-09-05 17:12:55 -07006716
6717 @param pWDICtx: pointer to the WLAN DAL context
6718 pEventData: pointer to the event information structure
6719
Jeff Johnson295189b2012-06-20 16:38:30 -07006720 @see
6721 @return Result of the function call
6722*/
6723WDI_Status
6724WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006725(
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 WDI_ControlBlockType* pWDICtx,
6727 WDI_EventInfoType* pEventData
6728)
6729{
6730 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 ----------------------------------------------------------------------*/
6733 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6734 {
6735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006736 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006737 pWDICtx, pEventData);
6738 return WDI_STATUS_E_FAILURE;
6739 }
6740
6741 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 ----------------------------------------------------------------------*/
6744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6745 "WDI Busy state - queue request %d because waiting for response %d",
6746 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6747
Jeff Johnsone7245742012-09-05 17:12:55 -07006748 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006750
Jeff Johnson295189b2012-06-20 16:38:30 -07006751}/*WDI_MainReqBusy*/
6752/**
6753 @brief Main FSM Close function for state BUSY
6754
Jeff Johnsone7245742012-09-05 17:12:55 -07006755
6756 @param pWDICtx: pointer to the WLAN DAL context
6757 pEventData: pointer to the event information structure
6758
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 @see
6760 @return Result of the function call
6761*/
6762WDI_Status
6763WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006764(
Jeff Johnson295189b2012-06-20 16:38:30 -07006765 WDI_ControlBlockType* pWDICtx,
6766 WDI_EventInfoType* pEventData
6767)
6768{
6769 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 ----------------------------------------------------------------------*/
6772 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6773 {
6774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006775 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 pWDICtx, pEventData);
6777 return WDI_STATUS_E_FAILURE;
6778 }
6779
6780 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006781 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 ----------------------------------------------------------------------*/
6783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6784 "WDI Busy state - queue close request");
6785
Jeff Johnsone7245742012-09-05 17:12:55 -07006786 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006788
Jeff Johnson295189b2012-06-20 16:38:30 -07006789}/*WDI_MainCloseBusy*/
6790
6791/**
6792 @brief Main FSM Shutdown function for INIT & STARTED states
6793
6794
6795 @param pWDICtx: pointer to the WLAN DAL context
6796 pEventData: pointer to the event information structure
6797
6798 @see
6799 @return Result of the function call
6800*/
6801WDI_Status
6802WDI_MainShutdown
6803(
6804 WDI_ControlBlockType* pWDICtx,
6805 WDI_EventInfoType* pEventData
6806)
6807{
6808 /*--------------------------------------------------------------------
6809 Sanity Check
6810 ----------------------------------------------------------------------*/
6811 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6812 {
6813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6814 "Invalid parameters on Main Start %x %x",
6815 pWDICtx, pEventData);
6816 return WDI_STATUS_E_FAILURE;
6817 }
6818
6819 /*State at this point is BUSY - because we enter this state before posting
6820 an event to the FSM in order to prevent potential race conditions*/
6821
6822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6823 "Processing shutdown request in FSM");
6824
6825 /*Return Success*/
6826 return WDI_ProcessRequest( pWDICtx, pEventData );
6827
6828}/*WDI_MainShutdown*/
6829
6830/**
6831 @brief Main FSM Shutdown function for BUSY state
6832
6833
6834 @param pWDICtx: pointer to the WLAN DAL context
6835 pEventData: pointer to the event information structure
6836
6837 @see
6838 @return Result of the function call
6839*/
6840WDI_Status
6841WDI_MainShutdownBusy
6842(
6843 WDI_ControlBlockType* pWDICtx,
6844 WDI_EventInfoType* pEventData
6845)
6846{
6847 /*--------------------------------------------------------------------
6848 Sanity Check
6849 ----------------------------------------------------------------------*/
6850 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6851 {
6852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6853 "Invalid parameters on Main Start %x %x",
6854 pWDICtx, pEventData);
6855 return WDI_STATUS_E_FAILURE;
6856 }
6857
6858 /* If you are waiting for a HAL response at this stage, you are not
6859 * going to get it. Riva is already shutdown/crashed.
6860 */
6861 wpalTimerStop(&gWDICb.wptResponseTimer);
6862
6863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6864 "Processing shutdown request in FSM: Busy state ");
6865
6866 return WDI_ProcessRequest( pWDICtx, pEventData );
6867
6868}/*WDI_MainShutdownBusy*/
6869
6870
Jeff Johnsone7245742012-09-05 17:12:55 -07006871/*=======================================================================
6872
Jeff Johnson295189b2012-06-20 16:38:30 -07006873 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006874
Jeff Johnson295189b2012-06-20 16:38:30 -07006875*=======================================================================*/
6876
6877/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006879========================================================================*/
6880/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006881 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006882 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006883
6884 @param pWDICtx: pointer to the WLAN DAL context
6885 pEventData: pointer to the event information structure
6886
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 @see
6888 @return Result of the function call
6889*/
6890WDI_Status
6891WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006892(
Jeff Johnson295189b2012-06-20 16:38:30 -07006893 WDI_ControlBlockType* pWDICtx,
6894 WDI_EventInfoType* pEventData
6895)
6896{
6897 WDI_StartReqParamsType* pwdiStartParams = NULL;
6898 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006899 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006900 wpt_uint16 usDataOffset = 0;
6901 wpt_uint16 usSendSize = 0;
6902
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 tHalMacStartReqMsg halStartReq;
6904 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6906
6907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 -------------------------------------------------------------------------*/
6910 if (( NULL == pEventData ) ||
6911 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6912 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6913 {
6914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 }
6919
6920 /*-----------------------------------------------------------------------
6921 Get message buffer
6922 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 pwdiStartParams->usConfigBufferLen;
6925
Jeff Johnsone7245742012-09-05 17:12:55 -07006926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006927 usLen,
6928 &pSendBuffer, &usDataOffset, &usSendSize))||
6929 ( usSendSize < (usDataOffset + usLen )))
6930 {
6931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6932 "Unable to get send buffer in start req %x %x %x",
6933 pEventData, pwdiStartParams, wdiStartRspCb);
6934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 }
6937
6938 /*-----------------------------------------------------------------------
6939 Fill in the message
6940 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006941 halStartReq.startReqParams.driverType =
6942 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006943
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 halStartReq.startReqParams.uConfigBufferLen =
6945 pwdiStartParams->usConfigBufferLen;
6946 wpalMemoryCopy( pSendBuffer+usDataOffset,
6947 &halStartReq.startReqParams,
6948 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006949
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 usDataOffset += sizeof(halStartReq.startReqParams);
6951 wpalMemoryCopy( pSendBuffer+usDataOffset,
6952 pwdiStartParams->pConfigBuffer,
6953 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006954
6955 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006957
6958 /*Save Low Level Ind CB and associated user data - it will be used further
6959 on when an indication is coming from the lower MAC*/
6960 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006961 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006965 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006967 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6969
Jeff Johnsone7245742012-09-05 17:12:55 -07006970
Jeff Johnson295189b2012-06-20 16:38:30 -07006971}/*WDI_ProcessStartReq*/
6972
6973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006976
6977 @param pWDICtx: pointer to the WLAN DAL context
6978 pEventData: pointer to the event information structure
6979
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 @see
6981 @return Result of the function call
6982*/
6983WDI_Status
6984WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006985(
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 WDI_ControlBlockType* pWDICtx,
6987 WDI_EventInfoType* pEventData
6988)
6989{
6990 WDI_StopReqParamsType* pwdiStopParams = NULL;
6991 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 wpt_uint16 usDataOffset = 0;
6994 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006995 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6998
6999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 -------------------------------------------------------------------------*/
7002 if (( NULL == pEventData ) ||
7003 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7004 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7005 {
7006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007009 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 }
7011
7012 /*-----------------------------------------------------------------------
7013 Get message buffer
7014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 sizeof(halStopReq.stopReqParams),
7017 &pSendBuffer, &usDataOffset, &usSendSize))||
7018 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7019 {
7020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7021 "Unable to get send buffer in stop req %x %x %x",
7022 pEventData, pwdiStopParams, wdiStopRspCb);
7023 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007024 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 }
7026
7027 /*-----------------------------------------------------------------------
7028 Fill in the message
7029 -----------------------------------------------------------------------*/
7030 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7031 pwdiStopParams->wdiStopReason);
7032
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 wpalMemoryCopy( pSendBuffer+usDataOffset,
7034 &halStopReq.stopReqParams,
7035 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007036
7037 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007038 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
7040 /*! TO DO: stop the data services */
7041 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7042 {
7043 /*Stop the STA Table !UT- check this logic again
7044 It is safer to do it here than on the response - because a stop is imminent*/
7045 WDI_STATableStop(pWDICtx);
7046
7047 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007048 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7049 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 {
7051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7052 "WDI Init failed to reset power state event");
7053
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007055 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007056 }
7057 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007058 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7059 if( eWLAN_PAL_STATUS_SUCCESS != status )
7060 {
7061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7062 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7063 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007064 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007065 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007067 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007068 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007069 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7070 WDI_SET_POWER_STATE_TIMEOUT);
7071 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 {
7073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7074 "WDI Init failed to wait on an event");
7075
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007077 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 }
7079 }
7080
7081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007084 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7086
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007087fail:
7088 // Release the message buffer so we don't leak
7089 wpalMemoryFree(pSendBuffer);
7090
7091failRequest:
7092 //WDA should have failure check to avoid the memory leak
7093 return WDI_STATUS_E_FAILURE;
7094
Jeff Johnson295189b2012-06-20 16:38:30 -07007095}/*WDI_ProcessStopReq*/
7096
7097/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007099 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007100
7101 @param pWDICtx: pointer to the WLAN DAL context
7102 pEventData: pointer to the event information structure
7103
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 @see
7105 @return Result of the function call
7106*/
7107WDI_Status
7108WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007109(
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 WDI_ControlBlockType* pWDICtx,
7111 WDI_EventInfoType* pEventData
7112)
7113{
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7116
7117 /*Lock control block for cleanup*/
7118 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007119
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 /*Clear all pending request*/
7121 WDI_ClearPendingRequests(pWDICtx);
7122
7123 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007125
7126 /* Close Data transport*/
7127 /* FTM mode does not open Data Path */
7128 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7129 {
7130 WDTS_Close(pWDICtx);
7131 }
7132
7133 /*Close the STA Table !UT- check this logic again*/
7134 WDI_STATableClose(pWDICtx);
7135
7136 /*close the PAL */
7137 wptStatus = wpalClose(pWDICtx->pPALContext);
7138 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7139 {
7140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7141 "Failed to wpal Close %d", wptStatus);
7142 WDI_ASSERT(0);
7143 }
7144
7145 /*Transition back to init state*/
7146 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7147
7148 wpalMutexRelease(&pWDICtx->wptMutex);
7149
7150 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152
Jeff Johnsone7245742012-09-05 17:12:55 -07007153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007154}/*WDI_ProcessCloseReq*/
7155
7156
7157/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007158 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007159===========================================================================*/
7160
7161/**
7162 @brief Process Init Scan Request function (called when Main FSM
7163 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007164
7165 @param pWDICtx: pointer to the WLAN DAL context
7166 pEventData: pointer to the event information structure
7167
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 @see
7169 @return Result of the function call
7170*/
7171WDI_Status
7172WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007173(
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 WDI_ControlBlockType* pWDICtx,
7175 WDI_EventInfoType* pEventData
7176)
7177{
7178 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7179 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 wpt_uint16 usDataOffset = 0;
7182 wpt_uint16 usSendSize = 0;
7183 wpt_uint8 i = 0;
7184
7185 tHalInitScanReqMsg halInitScanReqMsg;
7186
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 * It shold be removed once host and riva changes are in sync*/
7189 tHalInitScanConReqMsg halInitScanConReqMsg;
7190
7191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7192
7193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 -------------------------------------------------------------------------*/
7196 if (( NULL == pEventData ) ||
7197 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7198 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7199 {
7200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 }
7205
7206#if 0
7207 wpalMutexAcquire(&pWDICtx->wptMutex);
7208 /*-----------------------------------------------------------------------
7209 Check to see if SCAN is already in progress - if so reject the req
7210 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 -----------------------------------------------------------------------*/
7213 if ( pWDICtx->bScanInProgress )
7214 {
7215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7216 "Scan is already in progress - subsequent scan is not allowed"
7217 " until the first scan completes");
7218
7219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 }
7222
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7224 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007225
7226 wpalMutexRelease(&pWDICtx->wptMutex);
7227#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007228 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 * It shold be removed once host and riva changes are in sync*/
7232 /*-----------------------------------------------------------------------
7233 Get message buffer
7234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 sizeof(halInitScanConReqMsg.initScanParams),
7237 &pSendBuffer, &usDataOffset, &usSendSize))||
7238 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7239 {
7240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7241 "Unable to get send buffer in init scan req %x %x %x",
7242 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007245 }
7246
7247
7248 /*-----------------------------------------------------------------------
7249 Fill in the message
7250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7253
7254 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7255 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7256
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007261 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7263
7264 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7265 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7266
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7268 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007269
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7272
7273 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7274 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007275 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7277 }
7278
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 wpalMemoryCopy( pSendBuffer+usDataOffset,
7280 &halInitScanConReqMsg.initScanParams,
7281 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 }
7283 else
7284 {
7285 /*-----------------------------------------------------------------------
7286 Get message buffer
7287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 sizeof(halInitScanReqMsg.initScanParams),
7290 &pSendBuffer, &usDataOffset, &usSendSize))||
7291 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7292 {
7293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7294 "Unable to get send buffer in init scan req %x %x %x",
7295 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 }
7299
7300
7301 /*-----------------------------------------------------------------------
7302 Fill in the message
7303 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7306
7307 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7308 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7309
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7316
7317 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7318 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7319
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7322
7323 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7324 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7327 }
7328
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 wpalMemoryCopy( pSendBuffer+usDataOffset,
7330 &halInitScanReqMsg.initScanParams,
7331 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 }
7333
7334 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007335 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007336
7337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7342
7343}/*WDI_ProcessInitScanReq*/
7344
7345/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007348
7349 @param pWDICtx: pointer to the WLAN DAL context
7350 pEventData: pointer to the event information structure
7351
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 @see
7353 @return Result of the function call
7354*/
7355WDI_Status
7356WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007357(
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 WDI_ControlBlockType* pWDICtx,
7359 WDI_EventInfoType* pEventData
7360)
7361{
7362 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7363 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 wpt_uint16 usDataOffset = 0;
7366 wpt_uint16 usSendSize = 0;
7367
Jeff Johnsone7245742012-09-05 17:12:55 -07007368 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7370
7371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 -------------------------------------------------------------------------*/
7374 if (( NULL == pEventData ) ||
7375 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7376 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7377 {
7378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 }
7383
7384#if 0
7385 wpalMutexAcquire(&pWDICtx->wptMutex);
7386 /*-----------------------------------------------------------------------
7387 Check to see if SCAN is already in progress - start scan is only
7388 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007391 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7393 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7394 {
7395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7396 "Scan start not allowed in this state %d %d",
7397 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007398
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 }
7402
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007404
7405 wpalMutexRelease(&pWDICtx->wptMutex);
7406#endif
7407
7408 /*-----------------------------------------------------------------------
7409 Get message buffer
7410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 sizeof(halStartScanReqMsg.startScanParams),
7413 &pSendBuffer, &usDataOffset, &usSendSize))||
7414 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7415 {
7416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7417 "Unable to get send buffer in start scan req %x %x %x",
7418 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 }
7422
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 wpalMemoryCopy( pSendBuffer+usDataOffset,
7426 &halStartScanReqMsg.startScanParams,
7427 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007428
7429 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007431
7432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7437}/*WDI_ProcessStartScanReq*/
7438
7439
7440/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007443
7444 @param pWDICtx: pointer to the WLAN DAL context
7445 pEventData: pointer to the event information structure
7446
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 @see
7448 @return Result of the function call
7449*/
7450WDI_Status
7451WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007452(
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 WDI_ControlBlockType* pWDICtx,
7454 WDI_EventInfoType* pEventData
7455)
7456{
7457 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7458 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 wpt_uint16 usDataOffset = 0;
7461 wpt_uint16 usSendSize = 0;
7462
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7465
7466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 -------------------------------------------------------------------------*/
7469 if (( NULL == pEventData ) ||
7470 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7471 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7472 {
7473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 }
7478
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7480 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 * forwarded to HAL and result in hang*/
7482#if 0
7483 wpalMutexAcquire(&pWDICtx->wptMutex);
7484 /*-----------------------------------------------------------------------
7485 Check to see if SCAN is already in progress - end scan is only
7486 allowed when a scan is ongoing and the state of the scan procedure
7487 is started
7488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7491 {
7492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7493 "End start not allowed in this state %d %d",
7494 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007495
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007498 }
7499
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007501
7502 wpalMutexRelease(&pWDICtx->wptMutex);
7503#endif
7504
7505 /*-----------------------------------------------------------------------
7506 Get message buffer
7507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 sizeof(halEndScanReqMsg.endScanParams),
7510 &pSendBuffer, &usDataOffset, &usSendSize))||
7511 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7512 {
7513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7514 "Unable to get send buffer in start scan req %x %x %x",
7515 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 }
7519
7520 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7521
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 wpalMemoryCopy( pSendBuffer+usDataOffset,
7523 &halEndScanReqMsg.endScanParams,
7524 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007525
7526 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007527 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007528
7529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7534}/*WDI_ProcessEndScanReq*/
7535
7536
7537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007540
7541 @param pWDICtx: pointer to the WLAN DAL context
7542 pEventData: pointer to the event information structure
7543
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 @see
7545 @return Result of the function call
7546*/
7547WDI_Status
7548WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007549(
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 WDI_ControlBlockType* pWDICtx,
7551 WDI_EventInfoType* pEventData
7552)
7553{
7554 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7555 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 wpt_uint16 usDataOffset = 0;
7558 wpt_uint16 usSendSize = 0;
7559 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007560 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7563
7564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 -------------------------------------------------------------------------*/
7567 if (( NULL == pEventData ) ||
7568 ( NULL == pEventData->pEventData) ||
7569 ( NULL == pEventData->pCBfnc))
7570 {
7571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 }
7576
7577 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7578 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7580 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 * forwarded to HAL and result in hang*/
7582#if 0
7583 wpalMutexAcquire(&pWDICtx->wptMutex);
7584 /*-----------------------------------------------------------------------
7585 Check to see if SCAN is already in progress
7586 Finish scan gets invoked any scan states. ie. abort scan
7587 It should be allowed in any states.
7588 -----------------------------------------------------------------------*/
7589 if ( !pWDICtx->bScanInProgress )
7590 {
7591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7592 "Finish start not allowed in this state %d",
7593 pWDICtx->bScanInProgress );
7594
7595 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 }
7598
7599 /*-----------------------------------------------------------------------
7600 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7604 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 wpalMutexRelease(&pWDICtx->wptMutex);
7606#endif
7607
7608 if ( pWDICtx->bInBmps )
7609 {
7610 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007611 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7612 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7613 {
7614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7615 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7616 WDI_ASSERT(0);
7617 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 }
7619
7620 /*-----------------------------------------------------------------------
7621 Get message buffer
7622 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007624 sizeof(halFinishScanReqMsg.finishScanParams),
7625 &pSendBuffer, &usDataOffset, &usSendSize))||
7626 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7627 {
7628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7629 "Unable to get send buffer in start scan req %x %x %x",
7630 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007633 }
7634
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7640
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7643
7644 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7645 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7646
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7653
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7656
7657 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7658 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7661 }
7662
7663 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7664 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7665
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 wpalMemoryCopy( pSendBuffer+usDataOffset,
7667 &halFinishScanReqMsg.finishScanParams,
7668 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007669
7670 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007672
7673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7678}/*WDI_ProcessFinishScanReq*/
7679
7680
7681/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007682 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007683==========================================================================*/
7684/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 @brief Process BSS Join for a given Session
7686
7687 @param pWDICtx: pointer to the WLAN DAL context
7688 pEventData: pointer to the event information structure
7689
Jeff Johnson295189b2012-06-20 16:38:30 -07007690 @see
7691 @return Result of the function call
7692*/
7693WDI_Status
7694WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007695(
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 WDI_ControlBlockType* pWDICtx,
7697 WDI_JoinReqParamsType* pwdiJoinParams,
7698 WDI_JoinRspCb wdiJoinRspCb,
7699 void* pUserData
7700)
7701{
7702 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 wpt_uint16 usDataOffset = 0;
7705 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007707
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7710
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007711 wpalMutexAcquire(&pWDICtx->wptMutex);
7712
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 /*------------------------------------------------------------------------
7714 Check to see if we have any session with this BSSID already stored, we
7715 should not
7716 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7718 pwdiJoinParams->wdiReqInfo.macBSSID,
7719 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007720
7721 if ( NULL != pBSSSes )
7722 {
7723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007724 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7725 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007726
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007727 /*reset the bAssociationInProgress otherwise the next
7728 *join request will be queued*/
7729 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7730 wpalMutexRelease(&pWDICtx->wptMutex);
7731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 }
7733
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 if ( NULL == pBSSSes )
7739 {
7740
7741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7742 "DAL has no free sessions - cannot run another join");
7743
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007744 /*reset the bAssociationInProgress otherwise the next
7745 *join request will be queued*/
7746 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 }
7750
7751 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7753 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 WDI_MAC_ADDR_LEN);
7755
7756 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007759
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 wpalMutexRelease(&pWDICtx->wptMutex);
7761
7762 /*-----------------------------------------------------------------------
7763 Get message buffer
7764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 sizeof(halJoinReqMsg.joinReqParams),
7767 &pSendBuffer, &usDataOffset, &usSendSize))||
7768 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7769 {
7770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7771 "Unable to get send buffer in join req %x %x %x",
7772 pUserData, pwdiJoinParams, wdiJoinRspCb);
7773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 }
7776
7777 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007779
7780 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 pwdiJoinParams->wdiReqInfo.macSTASelf,
7782 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007783
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7786
7787 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7788
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007789#ifdef WLAN_FEATURE_VOWIFI
7790 halJoinReqMsg.joinReqParams.maxTxPower =
7791 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7792#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7795#endif
7796
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7799 wdiSecondaryChannelOffset);
7800
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 wpalMemoryCopy( pSendBuffer+usDataOffset,
7802 &halJoinReqMsg.joinReqParams,
7803 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007804
7805 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007806 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007807
7808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007809 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7812 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007813
7814}/*WDI_ProcessBSSSessionJoinReq*/
7815
7816/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007819
7820 @param pWDICtx: pointer to the WLAN DAL context
7821 pEventData: pointer to the event information structure
7822
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 @see
7824 @return Result of the function call
7825*/
7826WDI_Status
7827WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007828(
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 WDI_ControlBlockType* pWDICtx,
7830 WDI_EventInfoType* pEventData
7831)
7832{
7833 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7834 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7835 WDI_JoinRspCb wdiJoinRspCb = NULL;
7836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7837
7838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 -------------------------------------------------------------------------*/
7841 if (( NULL == pEventData ) ||
7842 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7843 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7844 {
7845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007850
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 /*-------------------------------------------------------------------------
7852 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 -------------------------------------------------------------------------*/
7855 wpalMutexAcquire(&pWDICtx->wptMutex);
7856
7857 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7858 {
7859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7860 "Association is currently in progress, queueing new join req");
7861
7862 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 pwdiJoinParams->wdiReqInfo.macBSSID);
7865
7866 wpalMutexRelease(&pWDICtx->wptMutex);
7867
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 }
7870
7871 /*Starting a new association */
7872 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7873 wpalMutexRelease(&pWDICtx->wptMutex);
7874
7875 /*Process the Join Request*/
7876 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7877 wdiJoinRspCb,pEventData->pUserData);
7878
7879}/*WDI_ProcessJoinReq*/
7880
7881
7882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007885
7886 @param pWDICtx: pointer to the WLAN DAL context
7887 pEventData: pointer to the event information structure
7888
Jeff Johnson295189b2012-06-20 16:38:30 -07007889 @see
7890 @return Result of the function call
7891*/
7892WDI_Status
7893WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007894(
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 WDI_ControlBlockType* pWDICtx,
7896 WDI_EventInfoType* pEventData
7897)
7898{
7899 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7900 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007901 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007902 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 wpt_uint16 uMsgSize = 0;
7904 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 wpt_uint16 usDataOffset = 0;
7906 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007908
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7911
7912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 -------------------------------------------------------------------------*/
7915 if (( NULL == pEventData ) ||
7916 ( NULL == pEventData->pEventData ) ||
7917 ( NULL == pEventData->pCBfnc ))
7918 {
7919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 }
7924
7925 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7926 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7927 /*-------------------------------------------------------------------------
7928 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 -------------------------------------------------------------------------*/
7931 wpalMutexAcquire(&pWDICtx->wptMutex);
7932
7933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7937 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7938 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007939
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 {
7942#ifdef WLAN_FEATURE_VOWIFI_11R
7943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 if ( NULL == pBSSSes )
7948 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007949
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7951 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007952
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007956
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7959 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007961
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007963 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7965#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 * Request in case of IBSS*/
7968 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7969 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7970 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7971 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7972 {
7973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 if ( NULL == pBSSSes )
7978 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007979
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7981 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007982
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007986
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7989 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007991
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7995 }
7996 else
7997 {
7998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8000 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8001 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8002
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 /* for IBSS testing */
8004 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 }
8007#endif
8008 }
8009
8010 /*------------------------------------------------------------------------
8011 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 ------------------------------------------------------------------------*/
8014 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8015 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8017 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8018 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8019 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008020
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008022
8023 wpalMutexRelease(&pWDICtx->wptMutex);
8024
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 }
8027
8028 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8030 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 sizeof(pWDICtx->wdiCachedConfigBssReq));
8032
8033 wpalMutexRelease(&pWDICtx->wptMutex);
8034
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8036#ifdef WLAN_FEATURE_11AC
8037 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008038 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 else
8040#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008041 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008042
8043 /*-----------------------------------------------------------------------
8044 Get message buffer
8045 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8048 ( usSendSize < (usDataOffset + uMsgSize )))
8049 {
8050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8051 "Unable to get send buffer in config bss req %x %x %x",
8052 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 }
8056
8057 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008058#ifdef WLAN_FEATURE_11AC
8059 if (WDI_getFwWlanFeatCaps(DOT11AC))
8060 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8061 &pwdiConfigBSSParams->wdiReqInfo);
8062 else
8063#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 &pwdiConfigBSSParams->wdiReqInfo);
8066
8067 /* Need to fill in the STA Index to invalid, since at this point we have not
8068 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008070
8071 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8073
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008074#ifdef WLAN_FEATURE_11AC
8075 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8076 wpalMemoryCopy( pSendBuffer+usDataOffset,
8077 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8078 uMsgSize);
8079 }else
8080#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008081 {
8082 if ( uMsgSize <= sizeof(tConfigBssParams) )
8083 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008084 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008085 &halConfigBssReqMsg.uBssParams.configBssParams,
8086 uMsgSize);
8087 }
8088 else
8089 {
8090 return WDI_STATUS_E_FAILURE;
8091 }
8092 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008093
8094 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096
8097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8101 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 WDI_CONFIG_BSS_RESP);
8103
8104}/*WDI_ProcessConfigBSSReq*/
8105
8106
8107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008110
8111 @param pWDICtx: pointer to the WLAN DAL context
8112 pEventData: pointer to the event information structure
8113
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 @see
8115 @return Result of the function call
8116*/
8117WDI_Status
8118WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008119(
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 WDI_ControlBlockType* pWDICtx,
8121 WDI_EventInfoType* pEventData
8122)
8123{
8124 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8125 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 wpt_uint16 usDataOffset = 0;
8130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008132
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8135
8136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 -------------------------------------------------------------------------*/
8139 if (( NULL == pEventData ) ||
8140 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8141 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8142 {
8143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 }
8148
8149 /*-------------------------------------------------------------------------
8150 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 -------------------------------------------------------------------------*/
8153 wpalMutexAcquire(&pWDICtx->wptMutex);
8154
8155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8159 pwdiDelBSSParams->ucBssIdx,
8160 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008161
Jeff Johnsone7245742012-09-05 17:12:55 -07008162 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 {
8164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 "%s: BSS does not yet exist. ucBssIdx %d",
8166 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008167
8168 wpalMutexRelease(&pWDICtx->wptMutex);
8169
8170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008172
8173 /*------------------------------------------------------------------------
8174 Check if this BSS is being currently processed or queued,
8175 if queued - queue the new request as well
8176 ------------------------------------------------------------------------*/
8177 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8180 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8181 __func__, pwdiDelBSSParams->ucBssIdx);
8182
8183 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8184
8185 wpalMutexRelease(&pWDICtx->wptMutex);
8186
8187 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008189
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 /*-----------------------------------------------------------------------
8191 If we receive a Del BSS request for an association that is already in
8192 progress, it indicates that the assoc has failed => we no longer have
8193 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 -----------------------------------------------------------------------*/
8196 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8197 {
8198 /*We can switch to false here because even if a subsequent Join comes in
8199 it will only be processed when DAL transitions out of BUSY state which
8200 happens when the Del BSS request comes */
8201 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8202
8203 /*Former association is complete - prepare next pending assoc for
8204 processing */
8205 WDI_DequeueAssocRequest(pWDICtx);
8206 }
8207
8208 wpalMutexRelease(&pWDICtx->wptMutex);
8209 /*-----------------------------------------------------------------------
8210 Get message buffer
8211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 sizeof(halBssReqMsg.deleteBssParams),
8214 &pSendBuffer, &usDataOffset, &usSendSize))||
8215 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8216 {
8217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8218 "Unable to get send buffer in start req %x %x %x",
8219 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 }
8223
8224 /*Fill in the message request structure*/
8225
8226 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008227 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 wpalMemoryCopy( pSendBuffer+usDataOffset,
8230 &halBssReqMsg.deleteBssParams,
8231 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008232
8233 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235
Jeff Johnsone7245742012-09-05 17:12:55 -07008236
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008238 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8242
Jeff Johnsone7245742012-09-05 17:12:55 -07008243
Jeff Johnson295189b2012-06-20 16:38:30 -07008244}/*WDI_ProcessDelBSSReq*/
8245
8246/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008249
8250 @param pWDICtx: pointer to the WLAN DAL context
8251 pEventData: pointer to the event information structure
8252
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 @see
8254 @return Result of the function call
8255*/
8256WDI_Status
8257WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008258(
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 WDI_ControlBlockType* pWDICtx,
8260 WDI_EventInfoType* pEventData
8261)
8262{
8263 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8264 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 wpt_uint16 usDataOffset = 0;
8269 wpt_uint16 usSendSize = 0;
8270 wpt_uint16 uMsgSize = 0;
8271 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008272 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008273
Jeff Johnsone7245742012-09-05 17:12:55 -07008274 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8276
8277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 -------------------------------------------------------------------------*/
8280 if (( NULL == pEventData ) ||
8281 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8282 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8283 {
8284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 }
8289
8290 /*-------------------------------------------------------------------------
8291 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 -------------------------------------------------------------------------*/
8294 wpalMutexAcquire(&pWDICtx->wptMutex);
8295
8296 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8300 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8301 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008302
8303 if ( NULL == pBSSSes )
8304 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8306 "%s: Association sequence for this BSS does not yet exist - "
8307 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8308 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008309
8310 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 }
8313
8314 /*------------------------------------------------------------------------
8315 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 ------------------------------------------------------------------------*/
8318 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8319 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8321 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8322 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008323
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008325
8326 wpalMutexRelease(&pWDICtx->wptMutex);
8327
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 }
8330
8331 /*-----------------------------------------------------------------------
8332 If Post Assoc was not yet received - the current association must
8333 be in progress
8334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8337 {
8338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8339 "Association sequence for this BSS association no longer in "
8340 "progress - not allowed");
8341
8342 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 }
8345
8346 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 -----------------------------------------------------------------------*/
8349 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8350 {
8351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8352 "Post Assoc not allowed before JOIN - failing request");
8353
8354 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 }
8357
8358 wpalMutexRelease(&pWDICtx->wptMutex);
8359
8360 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8361 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8362 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8367 ( usSendSize < (usDataOffset + uMsgSize )))
8368 {
8369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8370 "Unable to get send buffer in start req %x %x %x",
8371 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 }
8375
8376 /*Copy the STA parameters */
8377 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8378 &pwdiPostAssocParams->wdiSTAParams );
8379
8380 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 WDI_STATableFindStaidByAddr(pWDICtx,
8383 pwdiPostAssocParams->wdiSTAParams.macSTA,
8384 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8385 {
8386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8387 "This station does not exist in the WDI Station Table %d");
8388 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008389 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 }
8392
8393 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pBSSSes->ucBSSIdx;
8396
8397 /*Copy the BSS parameters */
8398 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8399 &pwdiPostAssocParams->wdiBSSParams);
8400
8401 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008403 WDI_STATableFindStaidByAddr(pWDICtx,
8404 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 {
8407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8408 "This station does not exist in the WDI Station Table %d");
8409 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008410 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 }
8413
8414 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 pBSSSes->ucBSSIdx;
8417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418
8419 wpalMemoryCopy( pSendBuffer+usDataOffset,
8420 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8421 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008422
8423 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8424
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8426 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8427 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008428
Jeff Johnsone7245742012-09-05 17:12:55 -07008429
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008432
Jeff Johnsone7245742012-09-05 17:12:55 -07008433
8434 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008437
8438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8443
Jeff Johnsone7245742012-09-05 17:12:55 -07008444
Jeff Johnson295189b2012-06-20 16:38:30 -07008445}/*WDI_ProcessPostAssocReq*/
8446
8447/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008450
8451 @param pWDICtx: pointer to the WLAN DAL context
8452 pEventData: pointer to the event information structure
8453
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 @see
8455 @return Result of the function call
8456*/
8457WDI_Status
8458WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008459(
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 WDI_ControlBlockType* pWDICtx,
8461 WDI_EventInfoType* pEventData
8462)
8463{
8464 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8465 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 wpt_uint16 usDataOffset = 0;
8470 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8473
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8476
8477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 -------------------------------------------------------------------------*/
8480 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8481 ( NULL == pEventData->pCBfnc ))
8482 {
8483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 }
8488
8489 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8490 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8491 /*-------------------------------------------------------------------------
8492 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 -------------------------------------------------------------------------*/
8495 wpalMutexAcquire(&pWDICtx->wptMutex);
8496
8497 /*------------------------------------------------------------------------
8498 Find the BSS for which the request is made and identify WDI session
8499 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8501 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 &macBSSID))
8503 {
8504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8505 "This station does not exist in the WDI Station Table %d");
8506 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 }
8509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8511 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8514 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8515 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008516
8517 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 }
8520
8521 /*------------------------------------------------------------------------
8522 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 ------------------------------------------------------------------------*/
8525 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8526 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8528 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8529 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008530
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 }
8535
8536 wpalMutexRelease(&pWDICtx->wptMutex);
8537 /*-----------------------------------------------------------------------
8538 Get message buffer
8539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 sizeof(halDelStaReqMsg.delStaParams),
8542 &pSendBuffer, &usDataOffset, &usSendSize))||
8543 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8544 {
8545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8546 "Unable to get send buffer in start req %x %x %x",
8547 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 }
8551
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8553 wpalMemoryCopy( pSendBuffer+usDataOffset,
8554 &halDelStaReqMsg.delStaParams,
8555 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008556
8557 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559
8560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8565
8566}/*WDI_ProcessDelSTAReq*/
8567
8568
8569/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008571==========================================================================*/
8572/**
8573 @brief Process Set BSS Key Request function (called when Main FSM
8574 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008575
8576 @param pWDICtx: pointer to the WLAN DAL context
8577 pEventData: pointer to the event information structure
8578
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 @see
8580 @return Result of the function call
8581*/
8582WDI_Status
8583WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008584(
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 WDI_ControlBlockType* pWDICtx,
8586 WDI_EventInfoType* pEventData
8587)
8588{
8589 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8590 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 wpt_uint16 usDataOffset = 0;
8595 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8598 wpt_uint8 keyIndex = 0;
8599
8600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8601
8602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 -------------------------------------------------------------------------*/
8605 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8606 ( NULL == pEventData->pCBfnc ))
8607 {
8608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 }
8613
8614 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8615 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8616 /*-------------------------------------------------------------------------
8617 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 -------------------------------------------------------------------------*/
8620 wpalMutexAcquire(&pWDICtx->wptMutex);
8621
8622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8626 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8627 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008628
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 {
8631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8633 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008634
8635 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 }
8638
8639 /*------------------------------------------------------------------------
8640 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 ------------------------------------------------------------------------*/
8643 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8644 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8646 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8647 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008648
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 }
8653
8654
8655 wpalMutexRelease(&pWDICtx->wptMutex);
8656 /*-----------------------------------------------------------------------
8657 Get message buffer
8658 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8661 &pSendBuffer, &usDataOffset, &usSendSize))||
8662 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8663 {
8664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8665 "Unable to get send buffer in set bss key req %x %x %x",
8666 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 }
8670
8671 /*-----------------------------------------------------------------------
8672 Copy the Key parameters into the HAL message
8673 -----------------------------------------------------------------------*/
8674
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008676
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8682
8683 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8684 keyIndex++)
8685 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8688 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8689 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8690 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8691 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8692 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8699 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 WDI_MAX_KEY_LENGTH);
8702 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008703
8704 wpalMemoryCopy( pSendBuffer+usDataOffset,
8705 &halSetBssKeyReqMsg.setBssKeyParams,
8706 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
8708 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710
8711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8715 wdiSetBSSKeyRspCb, pEventData->pUserData,
8716 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008717
8718}/*WDI_ProcessSetBssKeyReq*/
8719
8720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008723
8724 @param pWDICtx: pointer to the WLAN DAL context
8725 pEventData: pointer to the event information structure
8726
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 @see
8728 @return Result of the function call
8729*/
8730WDI_Status
8731WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008732(
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 WDI_ControlBlockType* pWDICtx,
8734 WDI_EventInfoType* pEventData
8735)
8736{
8737 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8738 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 wpt_uint16 usDataOffset = 0;
8743 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8747
8748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 -------------------------------------------------------------------------*/
8751 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8752 ( NULL == pEventData->pCBfnc ))
8753 {
8754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 }
8759
8760 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8761 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8762 /*-------------------------------------------------------------------------
8763 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 -------------------------------------------------------------------------*/
8766 wpalMutexAcquire(&pWDICtx->wptMutex);
8767
8768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8772 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8773 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008774
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 {
8777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8779 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008780
8781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 }
8784
8785 /*------------------------------------------------------------------------
8786 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 ------------------------------------------------------------------------*/
8789 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8790 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8792 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8793 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008794
Jeff Johnsone7245742012-09-05 17:12:55 -07008795 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008796 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 }
8799
8800
8801 wpalMutexRelease(&pWDICtx->wptMutex);
8802
8803 /*-----------------------------------------------------------------------
8804 Get message buffer
8805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8808 &pSendBuffer, &usDataOffset, &usSendSize))||
8809 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8810 {
8811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8812 "Unable to get send buffer in set bss key req %x %x %x",
8813 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 }
8817 /*-----------------------------------------------------------------------
8818 Copy the Key parameters into the HAL message
8819 -----------------------------------------------------------------------*/
8820 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8821
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8824
8825 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8826
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8829
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 wpalMemoryCopy( pSendBuffer+usDataOffset,
8831 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8832 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008833
8834 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008836
8837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008843}/*WDI_ProcessRemoveBssKeyReq*/
8844
8845/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008848
8849 @param pWDICtx: pointer to the WLAN DAL context
8850 pEventData: pointer to the event information structure
8851
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 @see
8853 @return Result of the function call
8854*/
8855WDI_Status
8856WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008857(
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 WDI_ControlBlockType* pWDICtx,
8859 WDI_EventInfoType* pEventData
8860)
8861{
8862 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8863 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 wpt_uint16 usDataOffset = 0;
8867 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8872 wpt_uint8 keyIndex = 0;
8873
8874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8875
8876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 -------------------------------------------------------------------------*/
8879 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8880 ( NULL == pEventData->pCBfnc ))
8881 {
8882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 }
8887
8888 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8889 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8890 /*-------------------------------------------------------------------------
8891 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 -------------------------------------------------------------------------*/
8894 wpalMutexAcquire(&pWDICtx->wptMutex);
8895
8896 /*------------------------------------------------------------------------
8897 Find the BSS for which the request is made and identify WDI session
8898 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8900 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 &macBSSID))
8902 {
8903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8904 "This station does not exist in the WDI Station Table %d");
8905 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 }
8908
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8910 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8913 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8914 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008915
8916 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008919
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 /*------------------------------------------------------------------------
8921 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 ------------------------------------------------------------------------*/
8924 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8925 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8927 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8928 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008929
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 }
8934
8935
8936 wpalMutexRelease(&pWDICtx->wptMutex);
8937 /*-----------------------------------------------------------------------
8938 Get message buffer
8939 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8942 &pSendBuffer, &usDataOffset, &usSendSize))||
8943 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8944 {
8945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8946 "Unable to get send buffer in set bss key req %x %x %x",
8947 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 }
8951 /*-----------------------------------------------------------------------
8952 Copy the STA Key parameters into the HAL message
8953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8956
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8959
8960 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8961
8962 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8963
8964 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8965
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8967 keyIndex++)
8968 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8971 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8972 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8973 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8974 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8975 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8982 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 WDI_MAX_KEY_LENGTH);
8985 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008986
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 wpalMemoryCopy( pSendBuffer+usDataOffset,
8988 &halSetStaKeyReqMsg.setStaKeyParams,
8989 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008990
8991 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008993
8994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8998 wdiSetSTAKeyRspCb, pEventData->pUserData,
8999 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009000
9001}/*WDI_ProcessSetSTAKeyReq*/
9002
9003/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009006
9007 @param pWDICtx: pointer to the WLAN DAL context
9008 pEventData: pointer to the event information structure
9009
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 @see
9011 @return Result of the function call
9012*/
9013WDI_Status
9014WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009015(
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 WDI_ControlBlockType* pWDICtx,
9017 WDI_EventInfoType* pEventData
9018)
9019{
9020 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9021 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9022 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 wpt_uint16 usDataOffset = 0;
9025 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 wpt_macAddr macBSSID;
9028 wpt_uint8 ucCurrentBSSSesIdx;
9029 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9031
9032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 -------------------------------------------------------------------------*/
9035 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9036 ( NULL == pEventData->pCBfnc ))
9037 {
9038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 }
9043
9044 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9045 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9046 /*-------------------------------------------------------------------------
9047 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 -------------------------------------------------------------------------*/
9050 wpalMutexAcquire(&pWDICtx->wptMutex);
9051
9052 /*------------------------------------------------------------------------
9053 Find the BSS for which the request is made and identify WDI session
9054 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9056 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 &macBSSID))
9058 {
9059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9060 "This station does not exist in the WDI Station Table %d");
9061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 }
9064
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9066 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9069 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9070 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009071
9072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009075
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 /*------------------------------------------------------------------------
9077 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 ------------------------------------------------------------------------*/
9080 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9081 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9083 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9084 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009085
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 }
9090
9091
9092
9093 wpalMutexRelease(&pWDICtx->wptMutex);
9094 /*-----------------------------------------------------------------------
9095 Get message buffer
9096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9099 &pSendBuffer, &usDataOffset, &usSendSize))||
9100 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9101 {
9102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9103 "Unable to get send buffer in set bss key req %x %x %x",
9104 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 }
9108
9109 /*-----------------------------------------------------------------------
9110 Copy the Key parameters into the HAL message
9111 -----------------------------------------------------------------------*/
9112
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9115
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9118
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9121
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9124
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 wpalMemoryCopy( pSendBuffer+usDataOffset,
9126 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9127 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009128
9129 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009131
9132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009138
9139}/*WDI_ProcessRemoveSTAKeyReq*/
9140
9141/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009144
9145 @param pWDICtx: pointer to the WLAN DAL context
9146 pEventData: pointer to the event information structure
9147
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 @see
9149 @return Result of the function call
9150*/
9151WDI_Status
9152WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009153(
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WDI_ControlBlockType* pWDICtx,
9155 WDI_EventInfoType* pEventData
9156)
9157{
9158 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9159 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9160 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 wpt_uint16 usDataOffset = 0;
9163 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9168 wpt_uint8 keyIndex = 0;
9169
9170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9171
9172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 -------------------------------------------------------------------------*/
9175 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9176 ( NULL == pEventData->pCBfnc ))
9177 {
9178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 }
9183
9184 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9185 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9186 /*-------------------------------------------------------------------------
9187 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 -------------------------------------------------------------------------*/
9190 wpalMutexAcquire(&pWDICtx->wptMutex);
9191
9192 /*------------------------------------------------------------------------
9193 Find the BSS for which the request is made and identify WDI session
9194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9196 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 &macBSSID))
9198 {
9199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9200 "This station does not exist in the WDI Station Table %d");
9201 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 }
9204
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9206 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 {
9208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9210 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009211
9212 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009215
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 /*------------------------------------------------------------------------
9217 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 ------------------------------------------------------------------------*/
9220 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9221 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9223 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9224 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009225
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 }
9230
9231
9232 wpalMutexRelease(&pWDICtx->wptMutex);
9233 /*-----------------------------------------------------------------------
9234 Get message buffer
9235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9238 &pSendBuffer, &usDataOffset, &usSendSize))||
9239 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9240 {
9241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9242 "Unable to get send buffer in set bss key req %x %x %x",
9243 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 }
9247 /*-----------------------------------------------------------------------
9248 Copy the STA Key parameters into the HAL message
9249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9252
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9255
9256 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9257
9258 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9259
9260 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9261
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9263 keyIndex++)
9264 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9267 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9268 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9269 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9270 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9271 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9278 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 WDI_MAX_KEY_LENGTH);
9281 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009282
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 wpalMemoryCopy( pSendBuffer+usDataOffset,
9284 &halSetStaKeyReqMsg.setStaKeyParams,
9285 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009286
9287 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009289
9290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9294 wdiSetSTAKeyRspCb, pEventData->pUserData,
9295 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009296
9297}/*WDI_ProcessSetSTABcastKeyReq*/
9298
9299/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009302
9303 @param pWDICtx: pointer to the WLAN DAL context
9304 pEventData: pointer to the event information structure
9305
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 @see
9307 @return Result of the function call
9308*/
9309WDI_Status
9310WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009311(
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 WDI_ControlBlockType* pWDICtx,
9313 WDI_EventInfoType* pEventData
9314)
9315{
9316 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9317 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9318 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 wpt_uint16 usDataOffset = 0;
9321 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 wpt_macAddr macBSSID;
9324 wpt_uint8 ucCurrentBSSSesIdx;
9325 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9327
9328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 -------------------------------------------------------------------------*/
9331 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9332 ( NULL == pEventData->pCBfnc ))
9333 {
9334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 }
9339
9340 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9341 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9342 /*-------------------------------------------------------------------------
9343 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 -------------------------------------------------------------------------*/
9346 wpalMutexAcquire(&pWDICtx->wptMutex);
9347
9348 /*------------------------------------------------------------------------
9349 Find the BSS for which the request is made and identify WDI session
9350 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9352 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 &macBSSID))
9354 {
9355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9356 "This station does not exist in the WDI Station Table %d");
9357 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 }
9360
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9362 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9365 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9366 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009367
9368 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009371
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 /*------------------------------------------------------------------------
9373 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 ------------------------------------------------------------------------*/
9376 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9377 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9379 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9380 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009381
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 }
9386
9387
9388
9389 wpalMutexRelease(&pWDICtx->wptMutex);
9390 /*-----------------------------------------------------------------------
9391 Get message buffer
9392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9395 &pSendBuffer, &usDataOffset, &usSendSize))||
9396 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9397 {
9398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9399 "Unable to get send buffer in set bss key req %x %x %x",
9400 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 }
9404
9405 /*-----------------------------------------------------------------------
9406 Copy the Key parameters into the HAL message
9407 -----------------------------------------------------------------------*/
9408
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9411
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9414
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9420
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 wpalMemoryCopy( pSendBuffer+usDataOffset,
9422 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9423 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009424
9425 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427
9428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009434
9435}/*WDI_ProcessRemoveSTABcastKeyReq*/
9436
9437/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009439==========================================================================*/
9440/**
9441 @brief Process Add TSpec Request function (called when Main FSM
9442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009443
9444 @param pWDICtx: pointer to the WLAN DAL context
9445 pEventData: pointer to the event information structure
9446
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 @see
9448 @return Result of the function call
9449*/
9450WDI_Status
9451WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009452(
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 WDI_ControlBlockType* pWDICtx,
9454 WDI_EventInfoType* pEventData
9455)
9456{
9457 WDI_AddTSReqParamsType* pwdiAddTSParams;
9458 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 wpt_uint16 usDataOffset = 0;
9463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 wpt_macAddr macBSSID;
9466 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009467
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9469
9470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 -------------------------------------------------------------------------*/
9473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9474 ( NULL == pEventData->pCBfnc ))
9475 {
9476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 }
9481
9482 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9483 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9484 /*-------------------------------------------------------------------------
9485 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 -------------------------------------------------------------------------*/
9488 wpalMutexAcquire(&pWDICtx->wptMutex);
9489
9490 /*------------------------------------------------------------------------
9491 Find the BSS for which the request is made and identify WDI session
9492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9494 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 &macBSSID))
9496 {
9497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9498 "This station does not exist in the WDI Station Table %d");
9499 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 }
9502
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9504 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9507 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9508 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009509
9510 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009513
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 /*------------------------------------------------------------------------
9515 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 ------------------------------------------------------------------------*/
9518 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9519 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9521 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9522 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 }
9528
9529 wpalMutexRelease(&pWDICtx->wptMutex);
9530 /*-----------------------------------------------------------------------
9531 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9535 sizeof(halAddTsParams),
9536 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 &usSendSize))||
9538 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9539 {
9540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9541 "Unable to get send buffer in set bss key req %x %x %x",
9542 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 }
9546
9547 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9548 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9549
9550 //TSPEC IE
9551 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9552 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009559 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009560 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9583
9584 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9599
9600 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9605
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 wpalMemoryCopy( pSendBuffer+usDataOffset,
9607 &halAddTsParams,
9608 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009609
9610 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009612
9613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009619}/*WDI_ProcessAddTSpecReq*/
9620
9621
9622/**
9623 @brief Process Del TSpec Request function (called when Main FSM
9624 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009625
9626 @param pWDICtx: pointer to the WLAN DAL context
9627 pEventData: pointer to the event information structure
9628
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 @see
9630 @return Result of the function call
9631*/
9632WDI_Status
9633WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009634(
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_ControlBlockType* pWDICtx,
9636 WDI_EventInfoType* pEventData
9637)
9638{
9639 WDI_DelTSReqParamsType* pwdiDelTSParams;
9640 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 wpt_uint16 usDataOffset = 0;
9645 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9648
9649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 -------------------------------------------------------------------------*/
9652 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9653 ( NULL == pEventData->pCBfnc ))
9654 {
9655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 }
9660
9661 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9662 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9663
9664 /*-------------------------------------------------------------------------
9665 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 -------------------------------------------------------------------------*/
9668 wpalMutexAcquire(&pWDICtx->wptMutex);
9669
9670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9674 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9675 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009676
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9680 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9681 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9682
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 }
9686
9687 /*------------------------------------------------------------------------
9688 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 ------------------------------------------------------------------------*/
9691 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9692 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9694 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9695 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009696
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 }
9701
9702
9703 wpalMutexRelease(&pWDICtx->wptMutex);
9704 /*-----------------------------------------------------------------------
9705 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9710 &pSendBuffer, &usDataOffset, &usSendSize))||
9711 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9712 {
9713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9714 "Unable to get send buffer in set bss key req %x %x %x",
9715 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 }
9719
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 wpalMemoryCopy( pSendBuffer+usDataOffset,
9721 &pwdiDelTSParams->wdiDelTSInfo,
9722 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009723
9724 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009726
9727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009728 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9731 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009732}/*WDI_ProcessDelTSpecReq*/
9733
9734/**
9735 @brief Process Update EDCA Params Request function (called when
9736 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009737
9738 @param pWDICtx: pointer to the WLAN DAL context
9739 pEventData: pointer to the event information structure
9740
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 @see
9742 @return Result of the function call
9743*/
9744WDI_Status
9745WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009746(
Jeff Johnson295189b2012-06-20 16:38:30 -07009747 WDI_ControlBlockType* pWDICtx,
9748 WDI_EventInfoType* pEventData
9749)
9750{
9751 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9752 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 wpt_uint16 usDataOffset = 0;
9757 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009758 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9760
9761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 -------------------------------------------------------------------------*/
9764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9765 ( NULL == pEventData->pCBfnc ))
9766 {
9767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 }
9772
9773 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9774 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9775 /*-------------------------------------------------------------------------
9776 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 -------------------------------------------------------------------------*/
9779 wpalMutexAcquire(&pWDICtx->wptMutex);
9780
9781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9785 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9786 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009787
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 {
9790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9792 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009793
9794 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 }
9797
9798 /*------------------------------------------------------------------------
9799 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 ------------------------------------------------------------------------*/
9802 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9803 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9805 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9806 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009807
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 }
9812
9813
9814 wpalMutexRelease(&pWDICtx->wptMutex);
9815 /*-----------------------------------------------------------------------
9816 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9821 &pSendBuffer, &usDataOffset, &usSendSize))||
9822 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9823 {
9824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9825 "Unable to get send buffer in set bss key req %x %x %x",
9826 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 }
9830
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 wpalMemoryCopy( pSendBuffer+usDataOffset,
9832 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9833 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009834
9835 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009837
9838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9842 wdiUpdateEDCARspCb, pEventData->pUserData,
9843 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009844}/*WDI_ProcessUpdateEDCAParamsReq*/
9845
9846/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009849
9850 @param pWDICtx: pointer to the WLAN DAL context
9851 pEventData: pointer to the event information structure
9852
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 @see
9854 @return Result of the function call
9855*/
9856WDI_Status
9857WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009858(
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 WDI_ControlBlockType* pWDICtx,
9860 WDI_EventInfoType* pEventData
9861)
9862{
9863 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9864 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 wpt_uint16 usDataOffset = 0;
9869 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 wpt_macAddr macBSSID;
9872
9873 tAddBASessionReqMsg halAddBASessionReq;
9874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9892 /*-------------------------------------------------------------------------
9893 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 -------------------------------------------------------------------------*/
9896 wpalMutexAcquire(&pWDICtx->wptMutex);
9897
9898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9902 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 &macBSSID))
9904 {
9905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9906 "This station does not exist in the WDI Station Table %d");
9907 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 }
9910
9911
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9917 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9918 __func__, MAC_ADDR_ARRAY(macBSSID));
9919
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 }
9923
9924 /*------------------------------------------------------------------------
9925 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 ------------------------------------------------------------------------*/
9928 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9929 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9931 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9932 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009933
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 }
9938
9939
9940 wpalMutexRelease(&pWDICtx->wptMutex);
9941 /*-----------------------------------------------------------------------
9942 Get message buffer
9943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9945 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 sizeof(halAddBASessionReq.addBASessionParams),
9947 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9950 {
9951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9952 "Unable to get send buffer in Add BA session req %x %x %x",
9953 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 }
9957
9958 halAddBASessionReq.addBASessionParams.staIdx =
9959 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9960 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9961 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9962 WDI_MAC_ADDR_LEN);
9963 halAddBASessionReq.addBASessionParams.baTID =
9964 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9965 halAddBASessionReq.addBASessionParams.baPolicy =
9966 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9967 halAddBASessionReq.addBASessionParams.baBufferSize =
9968 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9969 halAddBASessionReq.addBASessionParams.baTimeout =
9970 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9971 halAddBASessionReq.addBASessionParams.baSSN =
9972 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9973 halAddBASessionReq.addBASessionParams.baDirection =
9974 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9975
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 wpalMemoryCopy( pSendBuffer+usDataOffset,
9977 &halAddBASessionReq.addBASessionParams,
9978 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009979
9980 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009982
9983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9987 wdiAddBASessionRspCb, pEventData->pUserData,
9988 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009989}/*WDI_ProcessAddBASessionReq*/
9990
9991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009994
9995 @param pWDICtx: pointer to the WLAN DAL context
9996 pEventData: pointer to the event information structure
9997
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 @see
9999 @return Result of the function call
10000*/
10001WDI_Status
10002WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010003(
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 WDI_ControlBlockType* pWDICtx,
10005 WDI_EventInfoType* pEventData
10006)
10007{
10008 WDI_DelBAReqParamsType* pwdiDelBAParams;
10009 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 wpt_uint16 usDataOffset = 0;
10014 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 wpt_macAddr macBSSID;
10017 tDelBAParams halDelBAparam;
10018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10019
10020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 -------------------------------------------------------------------------*/
10023 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10024 ( NULL == pEventData->pCBfnc ))
10025 {
10026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 }
10031
10032 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10033 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10034 /*-------------------------------------------------------------------------
10035 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 -------------------------------------------------------------------------*/
10038 wpalMutexAcquire(&pWDICtx->wptMutex);
10039
10040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10044 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 &macBSSID))
10046 {
10047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10048 "This station does not exist in the WDI Station Table %d");
10049 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 }
10052
Jeff Johnsone7245742012-09-05 17:12:55 -070010053 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010054
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10058 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10059 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010060
10061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 }
10064
10065 /*------------------------------------------------------------------------
10066 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010067 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 ------------------------------------------------------------------------*/
10069 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10070 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10072 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10073 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010074
Jeff Johnsone7245742012-09-05 17:12:55 -070010075 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 }
10079
10080 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010082 sizeof(halDelBAparam),
10083 &pSendBuffer, &usDataOffset, &usSendSize))||
10084 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10085 {
10086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10087 "Unable to get send buffer for DEL BA req %x %x %x",
10088 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 }
10092
10093 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10094 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10095 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10096
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 wpalMemoryCopy( pSendBuffer+usDataOffset,
10098 &halDelBAparam,
10099 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010100
10101 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010103
10104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10108 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010109}/*WDI_ProcessDelBAReq*/
10110
10111#ifdef FEATURE_WLAN_CCX
10112
10113WDI_Status
10114WDI_ProcessTSMStatsReq
10115(
10116 WDI_ControlBlockType* pWDICtx,
10117 WDI_EventInfoType* pEventData
10118)
10119{
10120 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10121 WDI_TsmRspCb wdiTSMRspCb;
10122 wpt_uint8 ucCurrentBSSSesIdx = 0;
10123 WDI_BSSSessionType* pBSSSes = NULL;
10124 wpt_uint8* pSendBuffer = NULL;
10125 wpt_uint16 usDataOffset = 0;
10126 wpt_uint16 usSendSize = 0;
10127 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10128 tTsmStatsParams halTsmStatsReqParams = {0};
10129
10130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10131
10132 /*-------------------------------------------------------------------------
10133 Sanity check
10134 -------------------------------------------------------------------------*/
10135 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10136 ( NULL == pEventData->pCBfnc ))
10137 {
10138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 WDI_ASSERT(0);
10141 return WDI_STATUS_E_FAILURE;
10142 }
10143
10144 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10145 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10146 /*-------------------------------------------------------------------------
10147 Check to see if we are in the middle of an association, if so queue, if
10148 not it means it is free to process request
10149 -------------------------------------------------------------------------*/
10150 wpalMutexAcquire(&pWDICtx->wptMutex);
10151
10152 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10153 if ( NULL == pBSSSes )
10154 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10156 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10157 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010158
10159 wpalMutexRelease(&pWDICtx->wptMutex);
10160 return WDI_STATUS_E_NOT_ALLOWED;
10161 }
10162
10163 /*------------------------------------------------------------------------
10164 Check if this BSS is being currently processed or queued,
10165 if queued - queue the new request as well
10166 ------------------------------------------------------------------------*/
10167 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10168 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10170 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10171 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010172
10173 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10174 wpalMutexRelease(&pWDICtx->wptMutex);
10175 return wdiStatus;
10176 }
10177
10178 wpalMutexRelease(&pWDICtx->wptMutex);
10179 /*-----------------------------------------------------------------------
10180 Get message buffer
10181 ! TO DO : proper conversion into the HAL Message Request Format
10182 -----------------------------------------------------------------------*/
10183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10184 sizeof(halTsmStatsReqParams),
10185 &pSendBuffer, &usDataOffset, &usSendSize))||
10186 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10187 {
10188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10189 "Unable to get send buffer in set bss key req %x %x %x",
10190 pEventData, pwdiTSMParams, wdiTSMRspCb);
10191 WDI_ASSERT(0);
10192 return WDI_STATUS_E_FAILURE;
10193 }
10194
10195 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10196 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10197 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10198 WDI_MAC_ADDR_LEN);
10199 wpalMemoryCopy( pSendBuffer+usDataOffset,
10200 &halTsmStatsReqParams,
10201 sizeof(halTsmStatsReqParams));
10202
10203 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10204 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10205
10206 /*-------------------------------------------------------------------------
10207 Send TSM Stats Request to HAL
10208 -------------------------------------------------------------------------*/
10209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10210 wdiTSMRspCb, pEventData->pUserData,
10211 WDI_TSM_STATS_RESP);
10212}/*WDI_ProcessTSMStatsReq*/
10213
10214#endif
10215
10216
10217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010220
10221 @param pWDICtx: pointer to the WLAN DAL context
10222 pEventData: pointer to the event information structure
10223
Jeff Johnson295189b2012-06-20 16:38:30 -070010224 @see
10225 @return Result of the function call
10226*/
10227WDI_Status
10228WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010229(
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 WDI_ControlBlockType* pWDICtx,
10231 WDI_EventInfoType* pEventData
10232)
10233{
10234 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10235 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010236 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010237 wpt_uint16 usDataOffset = 0;
10238 wpt_uint16 usSendSize = 0;
10239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10240
10241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 -------------------------------------------------------------------------*/
10244 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10245 ( NULL == pEventData->pCBfnc ))
10246 {
10247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 }
10252
10253 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10254 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10255 /*-----------------------------------------------------------------------
10256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10261 &pSendBuffer, &usDataOffset, &usSendSize))||
10262 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10263 {
10264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10265 "Unable to get send buffer in set bss key req %x %x %x",
10266 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 }
10270
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 wpalMemoryCopy( pSendBuffer+usDataOffset,
10272 &pwdiFlushAcParams->wdiFlushAcInfo,
10273 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010274
10275 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010277
10278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10282 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010283}/*WDI_ProcessFlushAcReq*/
10284
10285/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010288
10289 @param pWDICtx: pointer to the WLAN DAL context
10290 pEventData: pointer to the event information structure
10291
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 @see
10293 @return Result of the function call
10294*/
10295WDI_Status
10296WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010297(
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 WDI_ControlBlockType* pWDICtx,
10299 WDI_EventInfoType* pEventData
10300)
10301{
10302 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10303 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 wpt_uint16 usDataOffset = 0;
10306 wpt_uint16 usSendSize = 0;
10307
10308 tBtAmpEventMsg haltBtAmpEventMsg;
10309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10310
10311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 -------------------------------------------------------------------------*/
10314 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10315 ( NULL == pEventData->pCBfnc ))
10316 {
10317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 }
10322
10323 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10324 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10325 /*-----------------------------------------------------------------------
10326 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10331 &pSendBuffer, &usDataOffset, &usSendSize))||
10332 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10333 {
10334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10335 "Unable to get send buffer in BT AMP event req %x %x %x",
10336 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 }
10340
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 wpalMemoryCopy( pSendBuffer+usDataOffset,
10344 &haltBtAmpEventMsg.btAmpEventParams,
10345 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010346
10347 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349
10350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10354 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010355}/*WDI_ProcessBtAmpEventReq*/
10356
10357/**
10358 @brief Process Add STA self Request function (called when Main FSM
10359 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010360
10361 @param pWDICtx: pointer to the WLAN DAL context
10362 pEventData: pointer to the event information structure
10363
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 @see
10365 @return Result of the function call
10366*/
10367WDI_Status
10368WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010369(
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 WDI_ControlBlockType* pWDICtx,
10371 WDI_EventInfoType* pEventData
10372)
10373{
10374 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10375 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 wpt_uint16 usDataOffset = 0;
10378 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010379 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10381
10382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 -------------------------------------------------------------------------*/
10385 if (( NULL == pEventData ) ||
10386 ( NULL == pEventData->pEventData) ||
10387 ( NULL == pEventData->pCBfnc))
10388 {
10389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 }
10394
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10399 /*-----------------------------------------------------------------------
10400 Get message buffer
10401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10403 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010404 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010406 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 {
10408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10409 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10410 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 }
10414
10415 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010416 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010417 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10418
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010420 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10421 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10422 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10423 {
10424 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10425 }
10426 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10427 VOS_P2P_CLIENT_MODE) ||
10428 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10429 VOS_P2P_DEVICE))
10430 {
10431 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10432 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010434 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010435
10436 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010438
10439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10443 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10444 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010445}/*WDI_ProcessAddSTASelfReq*/
10446
10447
10448
10449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010452
10453 @param pWDICtx: pointer to the WLAN DAL context
10454 pEventData: pointer to the event information structure
10455
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 @see
10457 @return Result of the function call
10458*/
10459WDI_Status
10460WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010461(
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 WDI_ControlBlockType* pWDICtx,
10463 WDI_EventInfoType* pEventData
10464)
10465{
10466 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10467 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 wpt_uint16 usDataOffset = 0;
10470 wpt_uint16 usSendSize = 0;
10471 tDelStaSelfParams halSetDelSelfSTAParams;
10472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10473
10474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 -------------------------------------------------------------------------*/
10477 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10478 ( NULL == pEventData->pCBfnc ))
10479 {
10480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 }
10485
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10488 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10489
10490 /*-----------------------------------------------------------------------
10491 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10496 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10499 {
10500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10501 "Unable to get send buffer in Del Sta Self req %x %x %x",
10502 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 }
10506
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10509
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10511 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010512
10513 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010515
10516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10520 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 WDI_DEL_STA_SELF_RESP);
10522
10523}
10524
Jeff Johnsone7245742012-09-05 17:12:55 -070010525#ifdef FEATURE_OEM_DATA_SUPPORT
10526/**
10527 @brief Process Start Oem Data Request function (called when Main
10528 FSM allows it)
10529
10530 @param pWDICtx: pointer to the WLAN DAL context
10531 pEventData: pointer to the event information structure
10532
10533 @see
10534 @return Result of the function call
10535*/
10536WDI_Status
10537WDI_ProcessStartOemDataReq
10538(
10539 WDI_ControlBlockType* pWDICtx,
10540 WDI_EventInfoType* pEventData
10541)
10542{
10543 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10544 WDI_oemDataRspCb wdiOemDataRspCb;
10545 wpt_uint8* pSendBuffer = NULL;
10546 wpt_uint16 usDataOffset = 0;
10547 wpt_uint16 usSendSize = 0;
10548 wpt_uint16 reqLen;
10549 tStartOemDataReqParams* halStartOemDataReqParams;
10550
10551 /*-------------------------------------------------------------------------
10552 Sanity check
10553 -------------------------------------------------------------------------*/
10554 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10555 ( NULL == pEventData->pCBfnc ))
10556 {
10557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010558 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 WDI_ASSERT(0);
10560 return WDI_STATUS_E_FAILURE;
10561 }
10562
10563 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10564 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10565
10566 /*-----------------------------------------------------------------------
10567 Get message buffer
10568 -----------------------------------------------------------------------*/
10569
10570 reqLen = sizeof(tStartOemDataReqParams);
10571
10572 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10573 WDI_START_OEM_DATA_REQ, reqLen,
10574 &pSendBuffer, &usDataOffset, &usSendSize))||
10575 (usSendSize < (usDataOffset + reqLen)))
10576 {
10577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10578 "Unable to get send buffer in Start Oem Data req %x %x %x",
10579 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10580 WDI_ASSERT(0);
10581 return WDI_STATUS_E_FAILURE;
10582 }
10583
10584 //copying WDI OEM DATA REQ PARAMS to shared memory
10585 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10586
10587 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10588 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10589
10590 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10591 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10592
10593 /*-------------------------------------------------------------------------
10594 Send Start Request to HAL
10595 -------------------------------------------------------------------------*/
10596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10597 wdiOemDataRspCb, pEventData->pUserData,
10598 WDI_START_OEM_DATA_RESP);
10599}/*WDI_ProcessStartOemDataReq*/
10600#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010601
10602/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010605
10606 @param pWDICtx: pointer to the WLAN DAL context
10607 pEventData: pointer to the event information structure
10608
Jeff Johnson295189b2012-06-20 16:38:30 -070010609 @see
10610 @return Result of the function call
10611*/
10612WDI_Status
10613WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010614(
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 WDI_ControlBlockType* pWDICtx,
10616 WDI_EventInfoType* pEventData
10617)
10618{
10619 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10620 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010621 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 wpt_uint16 usDataOffset = 0;
10623 wpt_uint16 usSendSize = 0;
10624 tHalWlanHostResumeReqParam halResumeReqParams;
10625
10626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10627
10628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 -------------------------------------------------------------------------*/
10631 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10632 ( NULL == pEventData->pCBfnc ))
10633 {
10634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010635 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 }
10639
10640 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10641 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10642
10643 /*-----------------------------------------------------------------------
10644 Get message buffer
10645 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10648 &pSendBuffer, &usDataOffset, &usSendSize))||
10649 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10650 {
10651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 }
10657
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010660
10661 wpalMemoryCopy( pSendBuffer+usDataOffset,
10662 &halResumeReqParams,
10663 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010664
10665 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010667
10668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10672 wdiHostResumeRspCb, pEventData->pUserData,
10673 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010674}/*WDI_ProcessHostResumeReq*/
10675
10676/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010679
10680 @param pWDICtx: pointer to the WLAN DAL context
10681 pEventData: pointer to the event information structure
10682
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 @see
10684 @return Result of the function call
10685*/
10686WDI_Status
10687WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010688(
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 WDI_ControlBlockType* pWDICtx,
10690 WDI_EventInfoType* pEventData
10691)
10692{
10693 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10694 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 wpt_uint16 usDataOffset = 0;
10697 wpt_uint16 usSendSize = 0;
10698 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10700
10701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 -------------------------------------------------------------------------*/
10704 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10705 ( NULL == pEventData->pCBfnc ))
10706 {
10707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010708 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 }
10712
10713 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10714 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010715
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 /*-----------------------------------------------------------------------
10717 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 sizeof(halTxPerTrackingReqParam),
10722 &pSendBuffer, &usDataOffset, &usSendSize))||
10723 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10724 {
10725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10726 "Unable to get send buffer in set tx per tracking req %x %x %x",
10727 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010731
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10733 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10734 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10735 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010736
10737 wpalMemoryCopy( pSendBuffer+usDataOffset,
10738 &halTxPerTrackingReqParam,
10739 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010740
10741 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010743
10744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10748 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010749}/*WDI_ProcessSetTxPerTrackingReq*/
10750
10751/*=========================================================================
10752 Indications
10753=========================================================================*/
10754
10755/**
10756 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010757
10758 @param pWDICtx: pointer to the WLAN DAL context
10759 pEventData: pointer to the event information structure
10760
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 @see
10762 @return Result of the function call
10763*/
10764WDI_Status
10765WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010766(
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 WDI_ControlBlockType* pWDICtx,
10768 WDI_EventInfoType* pEventData
10769)
10770{
10771 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 wpt_uint16 usDataOffset = 0;
10774 wpt_uint16 usSendSize = 0;
10775 WDI_Status wdiStatus;
10776 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10778
10779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 -------------------------------------------------------------------------*/
10782 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10783 {
10784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010785 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 }
10789
10790 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10791
10792 /*-----------------------------------------------------------------------
10793 Get message buffer
10794 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10796 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 sizeof(halWlanSuspendIndparams),
10798 &pSendBuffer, &usDataOffset, &usSendSize))||
10799 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10800 {
10801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10802 "Unable to get send buffer in Suspend Ind ");
10803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 }
10806
10807 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10808 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10809
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010811 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010812
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10814 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010815
10816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 -------------------------------------------------------------------------*/
10819 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010821
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10824}/*WDI_ProcessHostSuspendInd*/
10825
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010826
10827
10828/**
10829 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10830
10831 @param pWDICtx: pointer to the WLAN DAL context
10832 pEventData: pointer to the event information structure
10833
10834 @see
10835 @return Result of the function call
10836*/
10837WDI_Status
10838WDI_ProcessTrafficStatsInd
10839(
10840 WDI_ControlBlockType* pWDICtx,
10841 WDI_EventInfoType* pEventData
10842)
10843{
10844 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10845 wpt_uint8* pSendBuffer = NULL;
10846 wpt_uint16 usDataOffset = 0;
10847 wpt_uint16 usSendSize = 0;
10848 WDI_Status wdiStatus;
10849 tStatsClassBIndParams* pStatsClassBIndParams;
10850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10851
10852 /*-------------------------------------------------------------------------
10853 Sanity check
10854 -------------------------------------------------------------------------*/
10855 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10856 {
10857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10858 "%s: Invalid parameters in Traffic Stats ind",__func__);
10859 WDI_ASSERT(0);
10860 return WDI_STATUS_E_FAILURE;
10861 }
10862
10863 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10864
10865 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10866 {
10867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10868 "%s: Invalid parameters in Traffic Stats ind",__func__);
10869 WDI_ASSERT(0);
10870 return WDI_STATUS_E_FAILURE;
10871 }
10872
10873 /*-----------------------------------------------------------------------
10874 Get message buffer
10875 -----------------------------------------------------------------------*/
10876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10877 WDI_TRAFFIC_STATS_IND,
10878 sizeof(tStatsClassBIndParams),
10879 &pSendBuffer, &usDataOffset, &usSendSize))||
10880 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10881 {
10882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10883 "Unable to get send buffer in Traffic Stats Ind ");
10884 WDI_ASSERT(0);
10885 return WDI_STATUS_E_FAILURE;
10886 }
10887
10888 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10889
10890 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10891
10892 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10893 pTrafficStatsIndParams->pTrafficStats,
10894 pTrafficStatsIndParams->length);
10895
10896 /*-------------------------------------------------------------------------
10897 Send Suspend Request to HAL
10898 -------------------------------------------------------------------------*/
10899 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10900 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10901
10902 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10903 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10904}/*WDI_ProcessTrafficStatsInd*/
10905
Chet Lanctota96bb432013-03-18 10:26:30 -070010906#ifdef WLAN_FEATURE_11W
10907/**
10908 @brief Process Exclude Unencrypted Indications function (called
10909 when Main FSM allows it)
10910
10911 @param pWDICtx: pointer to the WLAN DAL context
10912 pEventData: pointer to the event information structure
10913
10914 @see
10915 @return Result of the function call
10916*/
10917WDI_Status
10918WDI_ProcessExcludeUnencryptInd
10919(
10920 WDI_ControlBlockType* pWDICtx,
10921 WDI_EventInfoType* pEventData
10922)
10923{
10924 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10925 wpt_uint8* pSendBuffer = NULL;
10926 wpt_uint16 usDataOffset = 0;
10927 wpt_uint16 usSendSize = 0;
10928 WDI_Status wdiStatus;
10929 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10931
10932 /*-------------------------------------------------------------------------
10933 Sanity check
10934 -------------------------------------------------------------------------*/
10935 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10936 {
10937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10938 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10939 WDI_ASSERT(0);
10940 return WDI_STATUS_E_FAILURE;
10941 }
10942
10943 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10944
10945 /*-----------------------------------------------------------------------
10946 Get message buffer
10947 -----------------------------------------------------------------------*/
10948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10949 WDI_EXCLUDE_UNENCRYPTED_IND,
10950 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10951 &pSendBuffer, &usDataOffset, &usSendSize))||
10952 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10953 {
10954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10955 "Unable to get send buffer in Exclude Unencrypted Ind ");
10956 WDI_ASSERT(0);
10957 return WDI_STATUS_E_FAILURE;
10958 }
10959
10960 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10961
10962 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10963
10964 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10965 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10966
10967 /*-------------------------------------------------------------------------
10968 Send Suspend Request to HAL
10969 -------------------------------------------------------------------------*/
10970 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10971 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10972
10973 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10974 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10975}/*WDI_ProcessExcludeUnencryptInd*/
10976#endif
10977
Yue Ma365933a2013-08-14 15:59:08 -070010978/**
10979 @brief Process Add Periodic Tx Pattern Indication function (called when
10980 Main FSM allows it)
10981
10982 @param pWDICtx: pointer to the WLAN DAL context
10983 pEventData: pointer to the event information structure
10984
10985 @see
10986 @return Result of the function call
10987*/
10988WDI_Status
10989WDI_ProcessAddPeriodicTxPtrnInd
10990(
10991 WDI_ControlBlockType* pWDICtx,
10992 WDI_EventInfoType* pEventData
10993)
10994{
10995 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
10996 wpt_uint8* pSendBuffer = NULL;
10997 wpt_uint16 usDataOffset = 0;
10998 wpt_uint16 usSendSize = 0;
10999 WDI_Status wdiStatus;
11000 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11001 wpt_uint8 selfStaIdx = 0;
11002
11003 /*-------------------------------------------------------------------------
11004 Sanity check
11005 -------------------------------------------------------------------------*/
11006 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11007 {
11008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11009 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11010 WDI_ASSERT(0);
11011 return WDI_STATUS_E_FAILURE;
11012 }
11013
11014 pAddPeriodicTxPtrnParams =
11015 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11016
11017 /*------------------------------------------------------------------------
11018 Get message buffer
11019 ------------------------------------------------------------------------*/
11020 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11021 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11022 &pSendBuffer, &usDataOffset, &usSendSize))||
11023 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11024 {
11025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11026 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11027 __func__);
11028 WDI_ASSERT(0);
11029 return WDI_STATUS_E_FAILURE;
11030 }
11031
11032 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11033
11034 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11035 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11036 &selfStaIdx))
11037 {
11038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11039 "%s: Failed to get selfStaIdx!", __func__);
11040
11041 return WDI_STATUS_E_FAILURE;
11042 }
11043
11044 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11045 halAddPeriodicTxPtrn->ucPtrnId =
11046 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11047 halAddPeriodicTxPtrn->usPtrnSize =
11048 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11049 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11050 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11051
11052 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11053 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11054 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11055
11056 /*-------------------------------------------------------------------------
11057 Send Indication to HAL
11058 -------------------------------------------------------------------------*/
11059 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11060 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11061
11062 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11063
11064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11065 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11066
11067 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11068} /* WDI_ProcessAddPeriodicTxPtrnInd */
11069
11070/**
11071 @brief Process Delete Periodic Tx Pattern Indication function (called when
11072 Main FSM allows it)
11073
11074 @param pWDICtx: pointer to the WLAN DAL context
11075 pEventData: pointer to the event information structure
11076
11077 @see
11078 @return Result of the function call
11079*/
11080WDI_Status
11081WDI_ProcessDelPeriodicTxPtrnInd
11082(
11083 WDI_ControlBlockType* pWDICtx,
11084 WDI_EventInfoType* pEventData
11085)
11086{
11087 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11088 wpt_uint8* pSendBuffer = NULL;
11089 wpt_uint16 usDataOffset = 0;
11090 wpt_uint16 usSendSize = 0;
11091 WDI_Status wdiStatus;
11092 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11093 wpt_uint8 selfStaIdx = 0;
11094
11095 /*-------------------------------------------------------------------------
11096 Sanity check
11097 -------------------------------------------------------------------------*/
11098 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11099 {
11100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11101 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11102 WDI_ASSERT(0);
11103 return WDI_STATUS_E_FAILURE;
11104 }
11105
11106 pDelPeriodicTxPtrnParams =
11107 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11108
11109 /*------------------------------------------------------------------------
11110 Get message buffer
11111 ------------------------------------------------------------------------*/
11112 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11113 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11114 &pSendBuffer, &usDataOffset, &usSendSize))||
11115 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11116 {
11117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11118 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11119 __func__);
11120 WDI_ASSERT(0);
11121 return WDI_STATUS_E_FAILURE;
11122 }
11123
11124 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11125
11126 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11127 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11128 &selfStaIdx))
11129 {
11130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11131 "%s: Failed to get selfStaIdx!", __func__);
11132
11133 return WDI_STATUS_E_FAILURE;
11134 }
11135
11136 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11137 halDelPeriodicTxPtrn->uPatternIdBitmap =
11138 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11139
11140 /*-------------------------------------------------------------------------
11141 Send Indication to HAL
11142 -------------------------------------------------------------------------*/
11143 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11144 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11145
11146 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11147
11148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11149 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11150
11151 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11152} /* WDI_ProcessDelPeriodicTxPtrnInd */
11153
Jeff Johnson295189b2012-06-20 16:38:30 -070011154/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011156==========================================================================*/
11157/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011160
11161 @param pWDICtx: pointer to the WLAN DAL context
11162 pEventData: pointer to the event information structure
11163
Jeff Johnson295189b2012-06-20 16:38:30 -070011164 @see
11165 @return Result of the function call
11166*/
11167WDI_Status
11168WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011169(
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 WDI_ControlBlockType* pWDICtx,
11171 WDI_EventInfoType* pEventData
11172)
11173{
11174 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11175 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 wpt_uint16 usDataOffset = 0;
11178 wpt_uint16 usSendSize = 0;
11179 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11181
11182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 -------------------------------------------------------------------------*/
11185 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11186 ( NULL == pEventData->pCBfnc ))
11187 {
11188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 }
11193
11194 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11195 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11196 /*-----------------------------------------------------------------------
11197 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011198 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011201 sizeof(halSwitchChannelReq.switchChannelParams),
11202 &pSendBuffer, &usDataOffset, &usSendSize))||
11203 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11204 {
11205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11206 "Unable to get send buffer in channel switch req %x %x %x",
11207 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 }
11211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011214#ifndef WLAN_FEATURE_VOWIFI
11215 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11217#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011218 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011219 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11220
11221#ifdef WLAN_FEATURE_VOWIFI
11222 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11225 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11226 WDI_MAC_ADDR_LEN);
11227 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11228 pwdiSwitchChParams->wdiChInfo.macBSSId,
11229 WDI_MAC_ADDR_LEN);
11230#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 wpalMemoryCopy( pSendBuffer+usDataOffset,
11232 &halSwitchChannelReq.switchChannelParams,
11233 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011234
11235 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011237
11238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11242 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011243}/*WDI_ProcessChannelSwitchReq*/
11244
11245/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011248
11249 @param pWDICtx: pointer to the WLAN DAL context
11250 pEventData: pointer to the event information structure
11251
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 @see
11253 @return Result of the function call
11254*/
11255WDI_Status
11256WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011257(
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 WDI_ControlBlockType* pWDICtx,
11259 WDI_EventInfoType* pEventData
11260)
11261{
11262 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11263 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011267 wpt_uint16 usDataOffset = 0;
11268 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011270
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 tConfigStaReqMsg halConfigStaReqMsg;
11272 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11274
11275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011277 -------------------------------------------------------------------------*/
11278 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11279 ( NULL == pEventData->pCBfnc ))
11280 {
11281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 }
11286
11287 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11288 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11289 /*-------------------------------------------------------------------------
11290 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 -------------------------------------------------------------------------*/
11293 wpalMutexAcquire(&pWDICtx->wptMutex);
11294
11295 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011298 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11299 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11300 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011301
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11305 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11306 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011307
11308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 }
11311
11312 /*------------------------------------------------------------------------
11313 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 ------------------------------------------------------------------------*/
11316 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11317 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11319 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11320 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011321
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 }
11326
11327 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011328
11329 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11330#ifdef WLAN_FEATURE_11AC
11331 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011332 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 else
11334#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011335 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011336
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 /*-----------------------------------------------------------------------
11338 Get message buffer
11339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11341 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011343 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011344 {
11345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11346 "Unable to get send buffer in config sta req %x %x %x",
11347 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 }
11351
11352 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 &pwdiConfigSTAParams->wdiReqInfo);
11355
11356 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11357 {
11358 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011359 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011360 WDI_STATableFindStaidByAddr(pWDICtx,
11361 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011362 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 {
11364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11365 "This station does not exist in the WDI Station Table %d");
11366 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011367 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 }
11370 }
11371 else
11372 {
11373 /* Need to fill in the STA Index to invalid, since at this point we have not
11374 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011375 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 }
11377
11378 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011380
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 wpalMemoryCopy( pSendBuffer+usDataOffset,
11382 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011383 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011384
11385 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011387
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11389 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 sizeof(pWDICtx->wdiCachedConfigStaReq));
11391
11392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11396 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011397}/*WDI_ProcessConfigStaReq*/
11398
11399
11400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011403
11404 @param pWDICtx: pointer to the WLAN DAL context
11405 pEventData: pointer to the event information structure
11406
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 @see
11408 @return Result of the function call
11409*/
11410WDI_Status
11411WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011412(
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 WDI_ControlBlockType* pWDICtx,
11414 WDI_EventInfoType* pEventData
11415)
11416{
11417 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11418 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 wpt_uint16 usDataOffset = 0;
11423 wpt_uint16 usSendSize = 0;
11424 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11427
11428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011430 -------------------------------------------------------------------------*/
11431 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11432 ( NULL == pEventData->pCBfnc ))
11433 {
11434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 }
11439
11440 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11441 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11442 /*-------------------------------------------------------------------------
11443 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 -------------------------------------------------------------------------*/
11446 wpalMutexAcquire(&pWDICtx->wptMutex);
11447
11448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11452 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11453 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011454
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11459 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 }
11461 else
11462 {
11463 /*------------------------------------------------------------------------
11464 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 ------------------------------------------------------------------------*/
11467 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11468 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11470 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11471 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11472
11473 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 }
11477 }
11478 /* If the link is set to enter IDLE - the Session allocated for this BSS
11479 will be deleted on the Set Link State response coming from HAL
11480 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11483
11484 wpalMutexRelease(&pWDICtx->wptMutex);
11485 /*-----------------------------------------------------------------------
11486 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011489
11490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 sizeof(halLinkStateReqMsg),
11492 &pSendBuffer, &usDataOffset, &usSendSize))||
11493 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11494 {
11495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11496 "Unable to get send buffer in set bss key req %x %x %x",
11497 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011500 }
11501
11502 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11503 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11504
11505 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11506 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11507
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11510
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 wpalMemoryCopy( pSendBuffer+usDataOffset,
11512 &halLinkStateReqMsg,
11513 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011514
11515 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517
11518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11522 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011523}/*WDI_ProcessSetLinkStateReq*/
11524
11525
11526/**
11527 @brief Process Get Stats Request function (called when Main FSM
11528 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011529
11530 @param pWDICtx: pointer to the WLAN DAL context
11531 pEventData: pointer to the event information structure
11532
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 @see
11534 @return Result of the function call
11535*/
11536WDI_Status
11537WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011538(
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 WDI_ControlBlockType* pWDICtx,
11540 WDI_EventInfoType* pEventData
11541)
11542{
11543 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11544 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 wpt_uint16 usDataOffset = 0;
11547 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 WDI_BSSSessionType* pBSSSes = NULL;
11550 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 tHalStatsReqMsg halStatsReqMsg;
11553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11554
11555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 -------------------------------------------------------------------------*/
11558 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11559 ( NULL == pEventData->pCBfnc ) )
11560 {
11561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 }
11566
11567 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11568 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11569
11570 /*-------------------------------------------------------------------------
11571 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 -------------------------------------------------------------------------*/
11574 wpalMutexAcquire(&pWDICtx->wptMutex);
11575
11576 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11580 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 &macBSSID))
11582 {
11583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11584 "This station does not exist in the WDI Station Table %d");
11585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 }
11588
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11590 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11593 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11594 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011595
11596 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 }
11599
11600 /*------------------------------------------------------------------------
11601 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 ------------------------------------------------------------------------*/
11604 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11605 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11607 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11608 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011609
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 }
11614
11615
11616 wpalMutexRelease(&pWDICtx->wptMutex);
11617
11618 /*-----------------------------------------------------------------------
11619 Get message buffer
11620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 sizeof(halStatsReqMsg.statsReqParams),
11623 &pSendBuffer, &usDataOffset, &usSendSize))||
11624 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11625 {
11626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11627 "Unable to get send buffer in set bss key req %x %x %x",
11628 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 }
11632
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011634 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 wpalMemoryCopy( pSendBuffer+usDataOffset,
11638 &halStatsReqMsg.statsReqParams,
11639 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011640
11641 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011643
11644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011645 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011647 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11648 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011649}/*WDI_ProcessGetStatsReq*/
11650
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011651#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11652/**
11653 @brief Process Get Roam Rssi Request function (called when Main FSM
11654 allows it)
11655
11656 @param pWDICtx: pointer to the WLAN DAL context
11657 pEventData: pointer to the event information structure
11658
11659 @see
11660 @return Result of the function call
11661*/
11662WDI_Status
11663WDI_ProcessGetRoamRssiReq
11664(
11665 WDI_ControlBlockType* pWDICtx,
11666 WDI_EventInfoType* pEventData
11667)
11668{
11669 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11670 WDI_GetStatsRspCb wdiGetStatsRspCb;
11671 wpt_uint8* pSendBuffer = NULL;
11672 wpt_uint16 usDataOffset = 0;
11673 wpt_uint16 usSendSize = 0;
11674 wpt_uint8 ucCurrentBSSSesIdx = 0;
11675 WDI_BSSSessionType* pBSSSes = NULL;
11676 wpt_macAddr macBSSID;
11677 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11678 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11680 /*-------------------------------------------------------------------------
11681 Sanity check
11682 -------------------------------------------------------------------------*/
11683 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11684 ( NULL == pEventData->pCBfnc ) )
11685 {
11686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11687 "%s: Invalid parameters", __func__);
11688 WDI_ASSERT(0);
11689 return WDI_STATUS_E_FAILURE;
11690 }
11691
11692 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11693 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11694
11695 /*-------------------------------------------------------------------------
11696 Check to see if we are in the middle of an association, if so queue, if
11697 not it means it is free to process request
11698 -------------------------------------------------------------------------*/
11699 wpalMutexAcquire(&pWDICtx->wptMutex);
11700
11701 /*------------------------------------------------------------------------
11702 Find the BSS for which the request is made
11703 ------------------------------------------------------------------------*/
11704 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11705 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11706 &macBSSID))
11707 {
11708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11709 "This station does not exist in the WDI Station Table %d");
11710 wpalMutexRelease(&pWDICtx->wptMutex);
11711 return WDI_STATUS_E_FAILURE;
11712 }
11713
11714 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11715 if ( NULL == pBSSSes )
11716 {
11717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11718 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11719 __func__, MAC_ADDR_ARRAY(macBSSID));
11720
11721 wpalMutexRelease(&pWDICtx->wptMutex);
11722 return WDI_STATUS_E_NOT_ALLOWED;
11723 }
11724
11725 /*------------------------------------------------------------------------
11726 Check if this BSS is being currently processed or queued,
11727 if queued - queue the new request as well
11728 ------------------------------------------------------------------------*/
11729 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11730 {
11731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11732 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11733 __func__, MAC_ADDR_ARRAY(macBSSID));
11734
11735 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11736 wpalMutexRelease(&pWDICtx->wptMutex);
11737 return wdiStatus;
11738 }
11739
11740 wpalMutexRelease(&pWDICtx->wptMutex);
11741
11742 /*-----------------------------------------------------------------------
11743 Get message buffer
11744 -----------------------------------------------------------------------*/
11745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11746 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11747 &pSendBuffer, &usDataOffset, &usSendSize))||
11748 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11749 {
11750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11751 "Unable to get send buffer in set bss key req %x %x %x",
11752 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11753 WDI_ASSERT(0);
11754 return WDI_STATUS_E_FAILURE;
11755 }
11756
11757 halRssiRoamReqMsg.roamRssiReqParams.staId =
11758 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11759 wpalMemoryCopy( pSendBuffer+usDataOffset,
11760 &halRssiRoamReqMsg.roamRssiReqParams,
11761 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11762
11763 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11764 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11765
11766 /*-------------------------------------------------------------------------
11767 Send Get STA Request to HAL
11768 -------------------------------------------------------------------------*/
11769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11770 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11771}/*WDI_ProcessGetRoamRssiReq*/
11772#endif
11773
Jeff Johnson295189b2012-06-20 16:38:30 -070011774/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011777
11778 @param pWDICtx: pointer to the WLAN DAL context
11779 pEventData: pointer to the event information structure
11780
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 @see
11782 @return Result of the function call
11783*/
11784WDI_Status
11785WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011786(
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 WDI_ControlBlockType* pWDICtx,
11788 WDI_EventInfoType* pEventData
11789)
11790{
11791 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11792 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11793
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011795 wpt_uint16 usDataOffset = 0;
11796 wpt_uint16 usSendSize = 0;
11797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11798
11799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 -------------------------------------------------------------------------*/
11802 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11803 ( NULL == pEventData->pCBfnc))
11804 {
11805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 }
11810
11811 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11812 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11813
11814 /*-----------------------------------------------------------------------
11815 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011816 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 -----------------------------------------------------------------------*/
11818
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11821 &pSendBuffer, &usDataOffset, &usSendSize))||
11822 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11823 {
11824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11825 "Unable to get send buffer in set bss key req %x %x %x",
11826 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 }
11830
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 wpalMemoryCopy( pSendBuffer+usDataOffset,
11832 &pwdiUpdateCfgParams->uConfigBufferLen,
11833 sizeof(wpt_uint32));
11834 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11835 pwdiUpdateCfgParams->pConfigBuffer,
11836 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011837
11838 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011839 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011840
11841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 -------------------------------------------------------------------------*/
11844
Jeff Johnsone7245742012-09-05 17:12:55 -070011845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11846 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011847
11848}/*WDI_ProcessUpdateCfgReq*/
11849
11850
11851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011852 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011853 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011854
11855 @param pWDICtx: pointer to the WLAN DAL context
11856 pEventData: pointer to the event information structure
11857
Jeff Johnson295189b2012-06-20 16:38:30 -070011858 @see
11859 @return Result of the function call
11860*/
11861WDI_Status
11862WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011863(
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 WDI_ControlBlockType* pWDICtx,
11865 WDI_EventInfoType* pEventData
11866)
11867{
11868 WDI_AddBAReqParamsType* pwdiAddBAParams;
11869 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011872 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 wpt_uint16 usDataOffset = 0;
11874 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 wpt_macAddr macBSSID;
11877
11878 tAddBAReqMsg halAddBAReq;
11879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11880
11881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011883 -------------------------------------------------------------------------*/
11884 if (( NULL == pEventData ) ||
11885 ( NULL == pEventData->pEventData) ||
11886 ( NULL == pEventData->pCBfnc ))
11887 {
11888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 }
11893
11894 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11895 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11896
11897 /*-------------------------------------------------------------------------
11898 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 -------------------------------------------------------------------------*/
11901 wpalMutexAcquire(&pWDICtx->wptMutex);
11902
11903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011906 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11907 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011908 &macBSSID))
11909 {
11910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11911 "This station does not exist in the WDI Station Table %d");
11912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 }
11915
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11917 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011918 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11920 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11921 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011922
11923 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011925 }
11926
11927 /*------------------------------------------------------------------------
11928 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 ------------------------------------------------------------------------*/
11931 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11932 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11934 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11935 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011936
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 }
11941
11942
11943 wpalMutexRelease(&pWDICtx->wptMutex);
11944 /*-----------------------------------------------------------------------
11945 Get message buffer
11946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 sizeof(halAddBAReq.addBAParams),
11949 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011950 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011951 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11952 {
11953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11954 "Unable to get send buffer in Add BA req %x %x %x",
11955 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 }
11959
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11962 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11963#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11966#endif
11967
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 wpalMemoryCopy( pSendBuffer+usDataOffset,
11969 &halAddBAReq.addBAParams,
11970 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011971
11972 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011974
11975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11979 wdiAddBARspCb, pEventData->pUserData,
11980 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011981}/*WDI_ProcessAddBAReq*/
11982
11983
11984
11985/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011988
11989 @param pWDICtx: pointer to the WLAN DAL context
11990 pEventData: pointer to the event information structure
11991
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 @see
11993 @return Result of the function call
11994*/
11995WDI_Status
11996WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011997(
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 WDI_ControlBlockType* pWDICtx,
11999 WDI_EventInfoType* pEventData
12000)
12001{
12002 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12003 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 wpt_uint16 usDataOffset = 0;
12008 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012009 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 wpt_uint16 index;
12011 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012012
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 tTriggerBAReqMsg halTriggerBAReq;
12014 tTriggerBaReqCandidate* halTriggerBACandidate;
12015 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12017
12018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012020 -------------------------------------------------------------------------*/
12021 if (( NULL == pEventData ) ||
12022 ( NULL == pEventData->pEventData ) ||
12023 ( NULL == pEventData->pCBfnc ))
12024 {
12025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 }
12030
12031 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12032 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12033 /*-------------------------------------------------------------------------
12034 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 -------------------------------------------------------------------------*/
12037 wpalMutexAcquire(&pWDICtx->wptMutex);
12038
12039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12043 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 &macBSSID))
12045 {
12046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12047 "This station does not exist in the WDI Station Table %d");
12048 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 }
12051
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12053 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12056 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12057 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012058
12059 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 }
12062
12063 /*------------------------------------------------------------------------
12064 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 ------------------------------------------------------------------------*/
12067 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12068 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12070 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12071 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012072
Jeff Johnsone7245742012-09-05 17:12:55 -070012073 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012074 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 }
12077
12078
12079 wpalMutexRelease(&pWDICtx->wptMutex);
12080 /*-----------------------------------------------------------------------
12081 Get message buffer
12082 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12084 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12088 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12093 {
12094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12095 "Unable to get send buffer in Trigger BA req %x %x %x",
12096 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 }
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12105
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 wpalMemoryCopy( pSendBuffer+usDataOffset,
12107 &halTriggerBAReq.triggerBAParams,
12108 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012109
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12112 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12113 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012114
12115 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 index++)
12117 {
12118 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12119 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12120 halTriggerBACandidate++;
12121 wdiTriggerBACandidate++;
12122 }
12123
12124 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012126
12127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12131 wdiTriggerBARspCb, pEventData->pUserData,
12132 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012133}/*WDI_ProcessTriggerBAReq*/
12134
12135
12136
12137/**
12138 @brief Process Update Beacon Params Request function (called when Main FSM
12139 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012140
12141 @param pWDICtx: pointer to the WLAN DAL context
12142 pEventData: pointer to the event information structure
12143
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 @see
12145 @return Result of the function call
12146*/
12147WDI_Status
12148WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012149(
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 WDI_ControlBlockType* pWDICtx,
12151 WDI_EventInfoType* pEventData
12152)
12153{
12154 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12155 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 wpt_uint16 usDataOffset = 0;
12158 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12161
12162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 -------------------------------------------------------------------------*/
12165 if (( NULL == pEventData ) ||
12166 ( NULL == pEventData->pEventData) ||
12167 ( NULL == pEventData->pCBfnc))
12168 {
12169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 }
12174
12175 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12176 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12177 /*-----------------------------------------------------------------------
12178 Get message buffer
12179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 sizeof(halUpdateBeaconParams),
12182 &pSendBuffer, &usDataOffset, &usSendSize))||
12183 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12184 {
12185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12186 "Unable to get send buffer in set bss key req %x %x %x",
12187 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 }
12191
12192 /*BSS Index of the BSS*/
12193 halUpdateBeaconParams.bssIdx =
12194 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12195 /*shortPreamble mode. HAL should update all the STA rates when it
12196 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012197 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12199 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12202 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12205
12206 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012211 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012212 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012213 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012214 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12219 halUpdateBeaconParams.fRIFSMode =
12220 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012222 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12223
Jeff Johnsone7245742012-09-05 17:12:55 -070012224 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12225 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012226
12227 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012229
12230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12234 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012235}/*WDI_ProcessUpdateBeaconParamsReq*/
12236
12237
12238
12239/**
12240 @brief Process Send Beacon template Request function (called when Main FSM
12241 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012242
12243 @param pWDICtx: pointer to the WLAN DAL context
12244 pEventData: pointer to the event information structure
12245
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 @see
12247 @return Result of the function call
12248*/
12249WDI_Status
12250WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012251(
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 WDI_ControlBlockType* pWDICtx,
12253 WDI_EventInfoType* pEventData
12254)
12255{
12256 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12257 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 wpt_uint16 usDataOffset = 0;
12260 wpt_uint16 usSendSize = 0;
12261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12262
12263 tSendBeaconReqMsg halSendBeaconReq;
12264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 -------------------------------------------------------------------------*/
12267 if (( NULL == pEventData ) ||
12268 ( NULL == pEventData->pEventData ) ||
12269 ( NULL == pEventData->pCBfnc ))
12270 {
12271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 }
12276
12277 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12278 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12279 /*-----------------------------------------------------------------------
12280 Get message buffer
12281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 sizeof(halSendBeaconReq.sendBeaconParam),
12284 &pSendBuffer, &usDataOffset, &usSendSize))||
12285 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12286 {
12287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12288 "Unable to get send buffer in send beacon req %x %x %x",
12289 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 }
12293
12294 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12295 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12296 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12299 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12300 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12301 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012302 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012304 /* usP2PIeOffset should be atleast greater than timIeOffset */
12305 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12306 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12307 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12308 {
12309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12310 "Invalid usP2PIeOffset %hu",
12311 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12312 WDI_ASSERT(0);
12313 return WDI_STATUS_E_FAILURE;
12314 }
12315
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 wpalMemoryCopy( pSendBuffer+usDataOffset,
12320 &halSendBeaconReq.sendBeaconParam,
12321 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012322
12323 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012325
12326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12330 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012331}/*WDI_ProcessSendBeaconParamsReq*/
12332
12333/**
12334 @brief Process Update Beacon Params Request function (called when Main FSM
12335 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012336
12337 @param pWDICtx: pointer to the WLAN DAL context
12338 pEventData: pointer to the event information structure
12339
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 @see
12341 @return Result of the function call
12342*/
12343WDI_Status
12344WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012345(
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 WDI_ControlBlockType* pWDICtx,
12347 WDI_EventInfoType* pEventData
12348)
12349{
12350 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12351 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 wpt_uint16 usDataOffset = 0;
12354 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12357
12358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 -------------------------------------------------------------------------*/
12361 if (( NULL == pEventData ) ||
12362 ( NULL == pEventData->pEventData) ||
12363 ( NULL == pEventData->pCBfnc))
12364 {
12365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 }
12370
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12375 /*-----------------------------------------------------------------------
12376 Get message buffer
12377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 sizeof(halUpdateProbeRspTmplParams),
12380 &pSendBuffer, &usDataOffset, &usSendSize))||
12381 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12382 {
12383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12384 "Unable to get send buffer in set bss key req %x %x %x",
12385 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 }
12389
12390 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 WDI_MAC_ADDR_LEN);
12393
Jeff Johnsone7245742012-09-05 17:12:55 -070012394 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12396
12397 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12398 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012400
12401
12402 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12403 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12404 WDI_PROBE_REQ_BITMAP_IE_LEN);
12405
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 wpalMemoryCopy( pSendBuffer+usDataOffset,
12407 &halUpdateProbeRspTmplParams,
12408 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012409
12410 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012412
12413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12417 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12418 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012419}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12420
12421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012424
12425 @param pWDICtx: pointer to the WLAN DAL context
12426 pEventData: pointer to the event information structure
12427
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 @see
12429 @return Result of the function call
12430*/
12431WDI_Status
12432WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012433(
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 WDI_ControlBlockType* pWDICtx,
12435 WDI_EventInfoType* pEventData
12436)
12437{
12438
12439 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12440 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12441
12442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 -------------------------------------------------------------------------*/
12445 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12450 {
12451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 }
12456
12457 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12460
12461 /*cache the wdi nv request message here if the the first fragment
12462 * To issue the request to HAL for the next fragment */
12463 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12464 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12466 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12468
12469 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12470 pWDICtx->pRspCBUserData = pEventData->pUserData;
12471 }
12472
12473 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12474}
12475
12476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012479
12480 @param pWDICtx: pointer to the WLAN DAL context
12481 pEventData: pointer to the event information structure
12482
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 @see
12484 @return Result of the function call
12485*/
12486WDI_Status WDI_ProcessSetMaxTxPowerReq
12487(
12488 WDI_ControlBlockType* pWDICtx,
12489 WDI_EventInfoType* pEventData
12490)
12491{
12492 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12493 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 wpt_uint16 usDataOffset = 0;
12496 wpt_uint16 usSendSize = 0;
12497 tSetMaxTxPwrReq halSetMaxTxPower;
12498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
12503 if (( NULL == pEventData ) ||
12504 ( NULL == pEventData->pEventData ) ||
12505 ( NULL == pEventData->pCBfnc ))
12506 {
12507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012512 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12516
12517 /*-----------------------------------------------------------------------
12518 Get message buffer
12519 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012520if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12522 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012524)))
12525 {
12526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12527 "Unable to get Set Max Tx Power req %x %x %x",
12528 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 }
12532
12533 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12534 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12535 WDI_MAC_ADDR_LEN);
12536
12537 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12538 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12539 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012542
12543 wpalMemoryCopy( pSendBuffer+usDataOffset,
12544 &halSetMaxTxPower.setMaxTxPwrParams,
12545 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012546
12547 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012549
12550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12554 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12555 WDI_SET_MAX_TX_POWER_RESP);
12556
Jeff Johnson295189b2012-06-20 16:38:30 -070012557}
12558
schangd82195a2013-03-13 18:41:24 -070012559/**
12560 @brief Process Set Tx Power Request function (called when Main
12561 FSM allows it)
12562
12563 @param pWDICtx: pointer to the WLAN DAL context
12564 pEventData: pointer to the event information structure
12565
12566 @see
12567 @return Result of the function call
12568*/
12569WDI_Status WDI_ProcessSetTxPowerReq
12570(
12571 WDI_ControlBlockType* pWDICtx,
12572 WDI_EventInfoType* pEventData
12573)
12574{
12575 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12576 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12577 wpt_uint8* pSendBuffer = NULL;
12578 wpt_uint16 usDataOffset = 0;
12579 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012580 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12582
12583 /*-------------------------------------------------------------------------
12584 Sanity check
12585 -------------------------------------------------------------------------*/
12586 if (( NULL == pEventData ) ||
12587 ( NULL == pEventData->pEventData ) ||
12588 ( NULL == pEventData->pCBfnc ))
12589 {
12590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12591 "%s: Invalid parameters", __func__);
12592 WDI_ASSERT(0);
12593 return WDI_STATUS_E_FAILURE;
12594 }
12595
12596 pwdiSetTxPowerParams =
12597 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12598 wdiSetTxPowerRspCb =
12599 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12600
12601 /*-----------------------------------------------------------------------
12602 Get message buffer
12603 -----------------------------------------------------------------------*/
12604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12605 sizeof(tSetTxPwrReqParams),
12606 &pSendBuffer, &usDataOffset, &usSendSize))||
12607 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12608 )))
12609 {
12610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12611 "Unable to get Set Max Tx Power req %x %x %x",
12612 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12613 WDI_ASSERT(0);
12614 return WDI_STATUS_E_FAILURE;
12615 }
12616
Leo Changa37e2a92013-03-25 17:39:58 -070012617 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12618 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12619 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012620
12621 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12622 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12623
12624 /*-------------------------------------------------------------------------
12625 Send Set Tx Power Request to HAL
12626 -------------------------------------------------------------------------*/
12627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12628 wdiSetTxPowerRspCb, pEventData->pUserData,
12629 WDI_SET_TX_POWER_RESP);
12630}
Jeff Johnson295189b2012-06-20 16:38:30 -070012631
12632/**
12633 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012635
12636 @param pWDICtx: pointer to the WLAN DAL context
12637 pEventData: pointer to the event information structure
12638
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 @see
12640 @return Result of the function call
12641*/
12642WDI_Status
12643WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012644(
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 WDI_ControlBlockType* pWDICtx,
12646 WDI_EventInfoType* pEventData
12647)
12648{
12649 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12650 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 wpt_uint16 usDataOffset = 0;
12653 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12656
12657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 -------------------------------------------------------------------------*/
12660 if (( NULL == pEventData ) ||
12661 ( NULL == pEventData->pEventData) ||
12662 ( NULL == pEventData->pCBfnc))
12663 {
12664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 }
12669
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012672 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012673 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12674 /*-----------------------------------------------------------------------
12675 Get message buffer
12676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12678 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 sizeof(halSetP2PGONOAParams),
12680 &pSendBuffer, &usDataOffset, &usSendSize))||
12681 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12682 {
12683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12684 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12685 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 }
12689
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12694 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012699 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12703
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 wpalMemoryCopy( pSendBuffer+usDataOffset,
12705 &halSetP2PGONOAParams,
12706 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012707
12708 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012710
12711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12715 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12716 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012717}/*WDI_ProcessP2PGONOAReq*/
12718
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012719#ifdef FEATURE_WLAN_TDLS
12720
12721/**
12722 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12723 allows it)
12724
12725 @param pWDICtx: pointer to the WLAN DAL context
12726 pEventData: pointer to the event information structure
12727
12728 @see
12729 @return Result of the function call
12730*/
12731WDI_Status
12732WDI_ProcessTdlsLinkEstablishReq
12733(
12734 WDI_ControlBlockType* pWDICtx,
12735 WDI_EventInfoType* pEventData
12736)
12737{
12738 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12739 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12740 wpt_uint8* pSendBuffer = NULL;
12741 wpt_uint16 usDataOffset = 0;
12742 wpt_uint16 usSendSize = 0;
12743
12744 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12746
12747 /*-------------------------------------------------------------------------
12748 Sanity check
12749 -------------------------------------------------------------------------*/
12750 if (( NULL == pEventData ) ||
12751 ( NULL == pEventData->pEventData) ||
12752 ( NULL == pEventData->pCBfnc))
12753 {
12754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12755 "%s: Invalid parameters", __func__);
12756 WDI_ASSERT(0);
12757 return WDI_STATUS_E_FAILURE;
12758 }
12759 pwdiTDLSLinkEstablishReqParams =
12760 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12761 wdiTDLSLinkEstablishReqRspCb =
12762 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12763
12764
12765 /*-----------------------------------------------------------------------
12766 Get message buffer
12767 -----------------------------------------------------------------------*/
12768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12769 WDI_TDLS_LINK_ESTABLISH_REQ,
12770 sizeof(halSetTDLSLinkEstablishParams),
12771 &pSendBuffer, &usDataOffset, &usSendSize))||
12772 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12773 {
12774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12775 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12776 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12777 WDI_ASSERT(0);
12778 return WDI_STATUS_E_FAILURE;
12779 }
12780
12781 halSetTDLSLinkEstablishParams.staIdx =
12782 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12783 halSetTDLSLinkEstablishParams.bIsResponder =
12784 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12785 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12786 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12787 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12788 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12789 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12790 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12791 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12792 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12793 halSetTDLSLinkEstablishParams.aAck = 0;
12794 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12795 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12796 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12797
12798 wpalMemoryCopy( pSendBuffer+usDataOffset,
12799 &halSetTDLSLinkEstablishParams,
12800 sizeof(halSetTDLSLinkEstablishParams));
12801
12802 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12803 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12804
12805 /*-------------------------------------------------------------------------
12806 Send Update Probe Resp Template Request to HAL
12807 -------------------------------------------------------------------------*/
12808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12809 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12810 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12811 return 0;
12812}/*WDI_ProcessTdlsLinkEstablishReq*/
12813
12814
12815#endif
12816
Jeff Johnson295189b2012-06-20 16:38:30 -070012817
12818
12819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 @param None
12823
12824 @see
12825 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012826*/
12827void
12828WDI_SetPowerStateCb
12829(
12830 wpt_status status,
12831 unsigned int dxePhyAddr,
12832 void *pContext
12833)
12834{
12835 wpt_status wptStatus;
12836 WDI_ControlBlockType *pCB = NULL;
12837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12838 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12839 {
12840 //it shouldn't happen, put an error msg
12841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 /*
12843 * Trigger the event to bring the Enter BMPS req function to come
12844 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012845*/
12846 if( NULL != pContext )
12847 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 }
12850 else
12851 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 pCB = &gWDICb;
12854 }
12855 pCB->dxePhyAddr = dxePhyAddr;
12856 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12857 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12858 {
12859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12860 "Failed to set an event");
12861
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 }
12864 return;
12865}
12866
12867
12868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012871
12872 @param pWDICtx: pointer to the WLAN DAL context
12873 pEventData: pointer to the event information structure
12874
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 @see
12876 @return Result of the function call
12877*/
12878WDI_Status
12879WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012880(
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 WDI_ControlBlockType* pWDICtx,
12882 WDI_EventInfoType* pEventData
12883)
12884{
Jeff Johnson43971f52012-07-17 12:26:56 -070012885 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 wpt_uint16 usDataOffset = 0;
12889 wpt_uint16 usSendSize = 0;
12890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12891
12892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 -------------------------------------------------------------------------*/
12895 if (( NULL == pEventData ) ||
12896 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12897 {
12898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012901 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 }
12903
12904 /*-----------------------------------------------------------------------
12905 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 0,
12910 &pSendBuffer, &usDataOffset, &usSendSize))||
12911 ( usSendSize < (usDataOffset )))
12912 {
12913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12914 "Unable to get send buffer in Enter IMPS req %x %x",
12915 pEventData, wdiEnterImpsRspCb);
12916 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012917 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 }
12919
12920 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012921 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12922 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 {
12924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12925 "WDI Init failed to reset an event");
12926
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012928 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 }
12930
12931 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012932 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12933 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12935 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12936 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012937 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012938 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012939
12940 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012943 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12944 WDI_SET_POWER_STATE_TIMEOUT);
12945 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 {
12947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12948 "WDI Init failed to wait on an event");
12949
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012951 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 }
12953
12954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12958 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012959
12960fail:
12961 // Release the message buffer so we don't leak
12962 wpalMemoryFree(pSendBuffer);
12963
12964failRequest:
12965 //WDA should have failure check to avoid the memory leak
12966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012967}/*WDI_ProcessEnterImpsReq*/
12968
12969/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012970 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012971 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012972
12973 @param pWDICtx: pointer to the WLAN DAL context
12974 pEventData: pointer to the event information structure
12975
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 @see
12977 @return Result of the function call
12978*/
12979WDI_Status
12980WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012981(
Jeff Johnson295189b2012-06-20 16:38:30 -070012982 WDI_ControlBlockType* pWDICtx,
12983 WDI_EventInfoType* pEventData
12984)
12985{
12986 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 wpt_uint16 usDataOffset = 0;
12989 wpt_uint16 usSendSize = 0;
12990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12991
12992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 -------------------------------------------------------------------------*/
12995 if (( NULL == pEventData ) ||
12996 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12997 {
12998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 }
13003
13004 /*-----------------------------------------------------------------------
13005 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 0,
13010 &pSendBuffer, &usDataOffset, &usSendSize))||
13011 ( usSendSize < (usDataOffset )))
13012 {
13013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13014 "Unable to get send buffer in Exit IMPS req %x %x",
13015 pEventData, wdiExitImpsRspCb);
13016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 }
13019
13020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13024 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013025}/*WDI_ProcessExitImpsReq*/
13026
13027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013030
13031 @param pWDICtx: pointer to the WLAN DAL context
13032 pEventData: pointer to the event information structure
13033
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 @see
13035 @return Result of the function call
13036*/
13037WDI_Status
13038WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013039(
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 WDI_ControlBlockType* pWDICtx,
13041 WDI_EventInfoType* pEventData
13042)
13043{
13044 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13045 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 wpt_uint16 usDataOffset = 0;
13048 wpt_uint16 usSendSize = 0;
13049 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013050 wpt_status wptStatus;
13051
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13053
13054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 -------------------------------------------------------------------------*/
13057 if (( NULL == pEventData ) ||
13058 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13059 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13060 {
13061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013064 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 }
13066
13067 /*-----------------------------------------------------------------------
13068 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 sizeof(enterBmpsReq),
13073 &pSendBuffer, &usDataOffset, &usSendSize))||
13074 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13075 {
13076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13077 "Unable to get send buffer in Enter BMPS req %x %x %x",
13078 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13079 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013080 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 }
13082
13083 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013084 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 {
13087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13088 "WDI Init failed to reset an event");
13089
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013091 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 }
13093
13094 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013095 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13096 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13097 {
13098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13099 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13100 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013101 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013102 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013103
13104/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013107 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13108 WDI_SET_POWER_STATE_TIMEOUT);
13109 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 {
13111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13112 "WDI Init failed to wait on an event");
13113
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013115 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 }
13117
13118 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13119
13120 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13121 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13122 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13123 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13124
13125 // For CCX and 11R Roaming
13126 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13127 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13128 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13129
13130 wpalMemoryCopy( pSendBuffer+usDataOffset,
13131 &enterBmpsReq,
13132 sizeof(enterBmpsReq));
13133
13134 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013136
13137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13141 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013142
13143fail:
13144 // Release the message buffer so we don't leak
13145 wpalMemoryFree(pSendBuffer);
13146
13147failRequest:
13148 //WDA should have failure check to avoid the memory leak
13149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150}/*WDI_ProcessEnterBmpsReq*/
13151
13152/**
13153 @brief Process Exit BMPS Request function (called when Main FSM
13154 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013155
13156 @param pWDICtx: pointer to the WLAN DAL context
13157 pEventData: pointer to the event information structure
13158
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 @see
13160 @return Result of the function call
13161*/
13162WDI_Status
13163WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013164(
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 WDI_ControlBlockType* pWDICtx,
13166 WDI_EventInfoType* pEventData
13167)
13168{
13169 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13170 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 wpt_uint16 usDataOffset = 0;
13173 wpt_uint16 usSendSize = 0;
13174 tHalExitBmpsReqParams exitBmpsReq;
13175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13176
13177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 -------------------------------------------------------------------------*/
13180 if (( NULL == pEventData ) ||
13181 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13182 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13183 {
13184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 }
13189
13190 /*-----------------------------------------------------------------------
13191 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 sizeof(exitBmpsReq),
13196 &pSendBuffer, &usDataOffset, &usSendSize))||
13197 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13198 {
13199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13200 "Unable to get send buffer in Exit BMPS req %x %x %x",
13201 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 }
13205 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13206
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13208
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 wpalMemoryCopy( pSendBuffer+usDataOffset,
13210 &exitBmpsReq,
13211 sizeof(exitBmpsReq));
13212
13213 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13220 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013221}/*WDI_ProcessExitBmpsReq*/
13222
13223/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013226
13227 @param pWDICtx: pointer to the WLAN DAL context
13228 pEventData: pointer to the event information structure
13229
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 @see
13231 @return Result of the function call
13232*/
13233WDI_Status
13234WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013235(
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 WDI_ControlBlockType* pWDICtx,
13237 WDI_EventInfoType* pEventData
13238)
13239{
13240 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13241 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 wpt_uint16 usDataOffset = 0;
13244 wpt_uint16 usSendSize = 0;
13245 tUapsdReqParams enterUapsdReq;
13246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13247
13248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 -------------------------------------------------------------------------*/
13251 if (( NULL == pEventData ) ||
13252 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13253 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13254 {
13255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 }
13260
13261 /*-----------------------------------------------------------------------
13262 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 sizeof(enterUapsdReq),
13267 &pSendBuffer, &usDataOffset, &usSendSize))||
13268 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13269 {
13270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13271 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13272 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 }
13276
13277 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13278 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13279 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13280 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13281 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13282 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13283 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13284 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013286
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 wpalMemoryCopy( pSendBuffer+usDataOffset,
13288 &enterUapsdReq,
13289 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013290
13291 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013293
13294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13298 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013299}/*WDI_ProcessEnterUapsdReq*/
13300
13301/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013304
13305 @param pWDICtx: pointer to the WLAN DAL context
13306 pEventData: pointer to the event information structure
13307
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 @see
13309 @return Result of the function call
13310*/
13311WDI_Status
13312WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013313(
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 WDI_ControlBlockType* pWDICtx,
13315 WDI_EventInfoType* pEventData
13316)
13317{
13318 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 wpt_uint16 usDataOffset = 0;
13321 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013322 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13323 wpt_uint8 bssIdx = 0;
13324
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13326
13327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 -------------------------------------------------------------------------*/
13330 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013331 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13333 {
13334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 }
13339
13340 /*-----------------------------------------------------------------------
13341 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013345 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013347 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 {
13349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13350 "Unable to get send buffer in Exit UAPSD req %x %x",
13351 pEventData, wdiExitUapsdRspCb);
13352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 }
13355
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013356 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13357
13358 wpalMemoryCopy( pSendBuffer+usDataOffset,
13359 &bssIdx,
13360 sizeof(wpt_uint8));
13361
13362 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13363 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13364
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13369 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013370}/*WDI_ProcessExitUapsdReq*/
13371
13372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013375
13376 @param pWDICtx: pointer to the WLAN DAL context
13377 pEventData: pointer to the event information structure
13378
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 @see
13380 @return Result of the function call
13381*/
13382WDI_Status
13383WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013384(
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 WDI_ControlBlockType* pWDICtx,
13386 WDI_EventInfoType* pEventData
13387)
13388{
13389 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13390 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 wpt_uint16 usDataOffset = 0;
13393 wpt_uint16 usSendSize = 0;
13394 tUapsdInfo uapsdAcParamsReq;
13395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13396
13397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 -------------------------------------------------------------------------*/
13400 if (( NULL == pEventData ) ||
13401 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13402 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13403 {
13404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 }
13409
13410 /*-----------------------------------------------------------------------
13411 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 sizeof(uapsdAcParamsReq),
13416 &pSendBuffer, &usDataOffset, &usSendSize))||
13417 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13418 {
13419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13420 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13421 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 }
13425
13426 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13427 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13428 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13429 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13430 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13431 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13432
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 wpalMemoryCopy( pSendBuffer+usDataOffset,
13434 &uapsdAcParamsReq,
13435 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013436
13437 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013438 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013439
13440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13444 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013445}/*WDI_ProcessSetUapsdAcParamsReq*/
13446
13447/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013450
13451 @param pWDICtx: pointer to the WLAN DAL context
13452 pEventData: pointer to the event information structure
13453
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 @see
13455 @return Result of the function call
13456*/
13457WDI_Status
13458WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013459(
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 WDI_ControlBlockType* pWDICtx,
13461 WDI_EventInfoType* pEventData
13462)
13463{
13464 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13465 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 wpt_uint16 usDataOffset = 0;
13468 wpt_uint16 usSendSize = 0;
13469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13470
13471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 -------------------------------------------------------------------------*/
13474 if (( NULL == pEventData ) ||
13475 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13476 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13477 {
13478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 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 /*-----------------------------------------------------------------------
13485 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13490 &pSendBuffer, &usDataOffset, &usSendSize))||
13491 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13492 {
13493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13494 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13495 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 }
13499
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 wpalMemoryCopy( pSendBuffer+usDataOffset,
13501 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13502 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013503
13504 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013506
13507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13511 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013512}/*WDI_ProcessUpdateUapsdParamsReq*/
13513
13514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013517
13518 @param pWDICtx: pointer to the WLAN DAL context
13519 pEventData: pointer to the event information structure
13520
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 @see
13522 @return Result of the function call
13523*/
13524WDI_Status
13525WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013526(
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 WDI_ControlBlockType* pWDICtx,
13528 WDI_EventInfoType* pEventData
13529)
13530{
13531 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13532 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 wpt_uint16 usDataOffset = 0;
13535 wpt_uint16 usSendSize = 0;
13536 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13537
13538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13539
13540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 -------------------------------------------------------------------------*/
13543 if (( NULL == pEventData ) ||
13544 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13545 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13546 {
13547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 }
13552
13553 /*-----------------------------------------------------------------------
13554 Get message buffer
13555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 sizeof(halRxpFilterParams),
13558 &pSendBuffer, &usDataOffset, &usSendSize))||
13559 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13560 {
13561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13562 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13563 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 }
13567
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13572
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 wpalMemoryCopy( pSendBuffer+usDataOffset,
13574 &halRxpFilterParams,
13575 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013576
13577 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013579
13580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13584 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013585}/*WDI_ProcessConfigureRxpFilterReq*/
13586
13587/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013590
13591 @param pWDICtx: pointer to the WLAN DAL context
13592 pEventData: pointer to the event information structure
13593
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 @see
13595 @return Result of the function call
13596*/
13597WDI_Status
13598WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013599(
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 WDI_ControlBlockType* pWDICtx,
13601 WDI_EventInfoType* pEventData
13602)
13603{
13604 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13605 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 wpt_uint16 usDataOffset = 0;
13608 wpt_uint16 usSendSize = 0;
13609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13610
13611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 -------------------------------------------------------------------------*/
13614 if (( NULL == pEventData ) ||
13615 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13616 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13617 {
13618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 }
13623
13624 /*-----------------------------------------------------------------------
13625 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13630 &pSendBuffer, &usDataOffset, &usSendSize))||
13631 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13632 {
13633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13634 "Unable to get send buffer in Set beacon filter req %x %x %x",
13635 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 }
13639
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 wpalMemoryCopy( pSendBuffer+usDataOffset,
13641 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13642 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13643 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13644 &pwdiBeaconFilterParams->aFilters[0],
13645 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013646
13647 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013649
13650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13654 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013655}/*WDI_ProcessSetBeaconFilterReq*/
13656
13657/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013660
13661 @param pWDICtx: pointer to the WLAN DAL context
13662 pEventData: pointer to the event information structure
13663
Jeff Johnson295189b2012-06-20 16:38:30 -070013664 @see
13665 @return Result of the function call
13666*/
13667WDI_Status
13668WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013669(
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 WDI_ControlBlockType* pWDICtx,
13671 WDI_EventInfoType* pEventData
13672)
13673{
13674 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13675 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 wpt_uint16 usDataOffset = 0;
13678 wpt_uint16 usSendSize = 0;
13679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13680
13681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 -------------------------------------------------------------------------*/
13684 if (( NULL == pEventData ) ||
13685 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13686 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13687 {
13688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013689 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 }
13693
13694 /*-----------------------------------------------------------------------
13695 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13700 &pSendBuffer, &usDataOffset, &usSendSize))||
13701 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13702 {
13703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13704 "Unable to get send buffer in remove beacon filter req %x %x %x",
13705 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 }
13709
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 wpalMemoryCopy( pSendBuffer+usDataOffset,
13711 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13712 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013713
13714 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013716
13717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013720 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13721 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013722}
13723
13724/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013727
13728 @param pWDICtx: pointer to the WLAN DAL context
13729 pEventData: pointer to the event information structure
13730
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 @see
13732 @return Result of the function call
13733*/
13734WDI_Status
13735WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013736(
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 WDI_ControlBlockType* pWDICtx,
13738 WDI_EventInfoType* pEventData
13739)
13740{
13741 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13742 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 wpt_uint16 usDataOffset = 0;
13745 wpt_uint16 usSendSize = 0;
13746 tHalRSSIThresholds rssiThresholdsReq;
13747 WDI_Status ret_status = 0;
13748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13749
13750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 -------------------------------------------------------------------------*/
13753 if (( NULL == pEventData ) ||
13754 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13755 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13756 {
13757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 }
13762
13763 /*-----------------------------------------------------------------------
13764 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 sizeof(rssiThresholdsReq),
13769 &pSendBuffer, &usDataOffset, &usSendSize))||
13770 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13771 {
13772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13773 "Unable to get send buffer in remove beacon filter req %x %x %x",
13774 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 }
13778
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013791 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013793 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13799
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 wpalMemoryCopy( pSendBuffer+usDataOffset,
13801 &rssiThresholdsReq,
13802 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013803
13804 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013806
13807 /*-------------------------------------------------------------------------
13808 Send Set threshold req to HAL
13809 -------------------------------------------------------------------------*/
13810 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13811 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13812 {
13813 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13814 // req. Then as a result of processing the threshold cross ind, we trigger
13815 // a Set threshold req, then we need to indicate to WDI that it needs to
13816 // go to busy state as a result of the indication as we sent a req in the
13817 // same WDI context.
13818 // Hence expected state transition is to busy.
13819 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13820 }
13821
13822 return ret_status;
13823}
13824
13825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013828
13829 @param pWDICtx: pointer to the WLAN DAL context
13830 pEventData: pointer to the event information structure
13831
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 @see
13833 @return Result of the function call
13834*/
13835WDI_Status
13836WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013837(
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 WDI_ControlBlockType* pWDICtx,
13839 WDI_EventInfoType* pEventData
13840)
13841{
13842 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13843 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 wpt_uint16 usDataOffset = 0;
13846 wpt_uint16 usSendSize = 0;
13847 tHalHostOffloadReq hostOffloadParams;
13848 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013849 wpt_uint8 ucCurrentBSSSesIdx = 0;
13850 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013851
13852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13853
13854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 -------------------------------------------------------------------------*/
13857 if (( NULL == pEventData ) ||
13858 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13859 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13860 {
13861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013864 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 }
13866
13867 /*-----------------------------------------------------------------------
13868 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13873 &pSendBuffer, &usDataOffset, &usSendSize))||
13874 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13875 {
13876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13877 "Unable to get send buffer in host offload req %x %x %x",
13878 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13879 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013880 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 }
13882
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013883 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13884 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13885 &pBSSSes);
13886 if ( NULL == pBSSSes )
13887 {
13888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013889 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13890 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013891 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013892 }
13893
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13895 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013896
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13898 {
13899 // ARP Offload
13900 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13901 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13902 4);
13903 }
13904 else
13905 {
13906 // NS Offload
13907 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13908 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13909 16);
13910
13911#ifdef WLAN_NS_OFFLOAD
13912 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13913 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13914 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13915 16);
13916 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13917 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13918 16);
13919 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13920 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13921 16);
13922 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13923 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13924 16);
13925 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13926 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13927 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013928 nsOffloadParams.srcIPv6AddrValid =
13929 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13930
13931 nsOffloadParams.targetIPv6Addr1Valid =
13932 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13933
13934 nsOffloadParams.targetIPv6Addr2Valid =
13935 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13936
13937 nsOffloadParams.slotIndex =
13938 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013939
Jeff Johnson295189b2012-06-20 16:38:30 -070013940#endif // WLAN_NS_OFFLOAD
13941 }
13942
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013943 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13944
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 // copy hostOffloadParams into pSendBuffer
13946 wpalMemoryCopy( pSendBuffer+usDataOffset,
13947 &hostOffloadParams,
13948 sizeof(hostOffloadParams));
13949
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013950 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013952 // copy nsOffloadParams into pSendBuffer
13953 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 &nsOffloadParams,
13955 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013956 }
13957 else
13958 {
13959#ifdef WLAN_NS_OFFLOAD
13960 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13961 {
13962 // copy nsOffloadParams into pSendBuffer
13963 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13964 &nsOffloadParams,
13965 sizeof(nsOffloadParams));
13966 }
13967#endif
13968 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013969
13970 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013972
13973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13977 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013978
13979fail:
13980 // Release the message buffer so we don't leak
13981 wpalMemoryFree(pSendBuffer);
13982
13983failRequest:
13984 //WDA should have failure check to avoid the memory leak
13985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013986}/*WDI_ProcessHostOffloadReq*/
13987
13988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013991
13992 @param pWDICtx: pointer to the WLAN DAL context
13993 pEventData: pointer to the event information structure
13994
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 @see
13996 @return Result of the function call
13997*/
13998WDI_Status
13999WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014000(
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 WDI_ControlBlockType* pWDICtx,
14002 WDI_EventInfoType* pEventData
14003)
14004{
14005 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14006 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 wpt_uint16 usDataOffset = 0;
14009 wpt_uint16 usSendSize = 0;
14010 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014011 wpt_uint8 ucCurrentBSSSesIdx = 0;
14012 WDI_BSSSessionType* pBSSSes = NULL;
14013
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14015
14016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 -------------------------------------------------------------------------*/
14019 if (( NULL == pEventData ) ||
14020 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14021 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14022 {
14023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14024 "Invalid parameters in Keep Alive req");
14025 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014026 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 }
14028
14029 /*-----------------------------------------------------------------------
14030 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 sizeof(keepAliveReq),
14035 &pSendBuffer, &usDataOffset, &usSendSize))||
14036 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14037 {
14038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14039 "Unable to get send buffer in keep alive req %x %x %x",
14040 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14041 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014042 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 }
14044
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014045 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14046 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14047 &pBSSSes);
14048 if ( NULL == pBSSSes )
14049 {
14050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014051 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014052 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014053 }
14054
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14056 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14057
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014058 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014059
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14061 {
14062 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14063 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14064 HAL_IPV4_ADDR_LEN);
14065 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14066 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 wpalMemoryCopy(keepAliveReq.destMacAddr,
14069 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14070 HAL_MAC_ADDR_LEN);
14071 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014072
14073 wpalMemoryCopy( pSendBuffer+usDataOffset,
14074 &keepAliveReq,
14075 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014076
14077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14078 "Process keep alive req %d",sizeof(keepAliveReq));
14079
14080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14081 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14082
14083 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014085
14086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14087 "Sending keep alive req to HAL");
14088
14089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14093 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014094
14095fail:
14096 // Release the message buffer so we don't leak
14097 wpalMemoryFree(pSendBuffer);
14098
14099failRequest:
14100 //WDA should have failure check to avoid the memory leak
14101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102}/*WDI_ProcessKeepAliveReq*/
14103
14104
14105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014108
14109 @param pWDICtx: pointer to the WLAN DAL context
14110 pEventData: pointer to the event information structure
14111
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 @see
14113 @return Result of the function call
14114*/
14115WDI_Status
14116WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014117(
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 WDI_ControlBlockType* pWDICtx,
14119 WDI_EventInfoType* pEventData
14120)
14121{
14122 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14123 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 wpt_uint16 usDataOffset = 0;
14126 wpt_uint16 usSendSize = 0;
14127 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014128 wpt_uint8 ucCurrentBSSSesIdx = 0;
14129 WDI_BSSSessionType* pBSSSes = NULL;
14130
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14132
14133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 -------------------------------------------------------------------------*/
14136 if (( NULL == pEventData ) ||
14137 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14138 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14139 {
14140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014143 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 }
14145
14146 /*-----------------------------------------------------------------------
14147 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 sizeof(wowlAddBcPtrnReq),
14152 &pSendBuffer, &usDataOffset, &usSendSize))||
14153 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14154 {
14155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14156 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14157 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14158 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014159 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 }
14161
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014162 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14163 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14164 &pBSSSes);
14165 if ( NULL == pBSSSes )
14166 {
14167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014168 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014169 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014170 }
14171
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14180
14181 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14182 {
14183 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14184 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14185 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14186 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14187 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14188 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14189 }
14190 else
14191 {
14192 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14193 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14194 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14195 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14196 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14197 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14198
14199 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14200 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14201 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14202 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14203 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14204 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14205 }
14206
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014207 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14208
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 wpalMemoryCopy( pSendBuffer+usDataOffset,
14210 &wowlAddBcPtrnReq,
14211 sizeof(wowlAddBcPtrnReq));
14212
14213 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014215
14216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14220 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014221fail:
14222 // Release the message buffer so we don't leak
14223 wpalMemoryFree(pSendBuffer);
14224
14225failRequest:
14226 //WDA should have failure check to avoid the memory leak
14227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014228}/*WDI_ProcessWowlAddBcPtrnReq*/
14229
14230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014233
14234 @param pWDICtx: pointer to the WLAN DAL context
14235 pEventData: pointer to the event information structure
14236
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 @see
14238 @return Result of the function call
14239*/
14240WDI_Status
14241WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014242(
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 WDI_ControlBlockType* pWDICtx,
14244 WDI_EventInfoType* pEventData
14245)
14246{
14247 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14248 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014250 wpt_uint16 usDataOffset = 0;
14251 wpt_uint16 usSendSize = 0;
14252 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014253 wpt_uint8 ucCurrentBSSSesIdx = 0;
14254 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14256
14257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 -------------------------------------------------------------------------*/
14260 if (( NULL == pEventData ) ||
14261 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14262 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14263 {
14264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014267 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 }
14269
14270 /*-----------------------------------------------------------------------
14271 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014272 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 sizeof(wowlDelBcPtrnReq),
14276 &pSendBuffer, &usDataOffset, &usSendSize))||
14277 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14278 {
14279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14280 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14281 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14282 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014283 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 }
14285
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014286 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14287 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14288 &pBSSSes);
14289 if ( NULL == pBSSSes )
14290 {
14291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014292 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014293 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014294 }
14295
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014298
14299 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14300
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 wpalMemoryCopy( pSendBuffer+usDataOffset,
14302 &wowlDelBcPtrnReq,
14303 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014304
14305 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014307
14308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14312 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014313
14314fail:
14315 // Release the message buffer so we don't leak
14316 wpalMemoryFree(pSendBuffer);
14317
14318failRequest:
14319 //WDA should have failure check to avoid the memory leak
14320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014321}/*WDI_ProcessWowlDelBcPtrnReq*/
14322
14323/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014326
14327 @param pWDICtx: pointer to the WLAN DAL context
14328 pEventData: pointer to the event information structure
14329
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 @see
14331 @return Result of the function call
14332*/
14333WDI_Status
14334WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014335(
Jeff Johnson295189b2012-06-20 16:38:30 -070014336 WDI_ControlBlockType* pWDICtx,
14337 WDI_EventInfoType* pEventData
14338)
14339{
14340 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14341 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 wpt_uint16 usDataOffset = 0;
14344 wpt_uint16 usSendSize = 0;
14345 tHalWowlEnterParams wowlEnterReq;
14346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14347
14348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 -------------------------------------------------------------------------*/
14351 if (( NULL == pEventData ) ||
14352 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14353 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14354 {
14355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 }
14360
14361 /*-----------------------------------------------------------------------
14362 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 sizeof(wowlEnterReq),
14367 &pSendBuffer, &usDataOffset, &usSendSize))||
14368 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14369 {
14370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14371 "Unable to get send buffer in Wowl enter req %x %x %x",
14372 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 }
14376
Kumar Anand21a26022013-07-22 14:35:34 -070014377 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14378
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14395
14396#ifdef WLAN_WAKEUP_EVENTS
14397 wowlEnterReq.ucWoWEAPIDRequestEnable =
14398 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14399
14400 wowlEnterReq.ucWoWEAPOL4WayEnable =
14401 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14402
14403 wowlEnterReq.ucWowNetScanOffloadMatch =
14404 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14405
14406 wowlEnterReq.ucWowGTKRekeyError =
14407 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14408
14409 wowlEnterReq.ucWoWBSSConnLoss =
14410 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14411#endif // WLAN_WAKEUP_EVENTS
14412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014413 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14414
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14416 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14417 sizeof(tSirMacAddr));
14418
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 wpalMemoryCopy( pSendBuffer+usDataOffset,
14420 &wowlEnterReq,
14421 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014422
14423 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014425
14426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14430 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014431}/*WDI_ProcessWowlEnterReq*/
14432
14433/**
14434 @brief Process Wowl exit Request function (called when Main FSM
14435 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014436
14437 @param pWDICtx: pointer to the WLAN DAL context
14438 pEventData: pointer to the event information structure
14439
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 @see
14441 @return Result of the function call
14442*/
14443WDI_Status
14444WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014445(
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 WDI_ControlBlockType* pWDICtx,
14447 WDI_EventInfoType* pEventData
14448)
14449{
14450 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014451 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 wpt_uint16 usDataOffset = 0;
14454 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014455 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14457
14458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 -------------------------------------------------------------------------*/
14461 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014462 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14464 {
14465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 }
14470
14471 /*-----------------------------------------------------------------------
14472 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014476 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014478 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 {
14480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14481 "Unable to get send buffer in Wowl Exit req %x %x",
14482 pEventData, wdiWowlExitCb);
14483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 }
14486
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014487 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14488
14489 wpalMemoryCopy( pSendBuffer+usDataOffset,
14490 &wowlExitparams,
14491 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14496 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014497}/*WDI_ProcessWowlExitReq*/
14498
14499/**
14500 @brief Process Configure Apps Cpu Wakeup State Request function
14501 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014502
14503 @param pWDICtx: pointer to the WLAN DAL context
14504 pEventData: pointer to the event information structure
14505
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 @see
14507 @return Result of the function call
14508*/
14509WDI_Status
14510WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014511(
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 WDI_ControlBlockType* pWDICtx,
14513 WDI_EventInfoType* pEventData
14514)
14515{
14516 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14517 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 wpt_uint16 usDataOffset = 0;
14520 wpt_uint16 usSendSize = 0;
14521 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14523
14524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 -------------------------------------------------------------------------*/
14527 if (( NULL == pEventData ) ||
14528 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14529 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14530 {
14531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 }
14536
14537 /*-----------------------------------------------------------------------
14538 Get message buffer
14539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 sizeof(halCfgAppsCpuWakeupStateReqParams),
14542 &pSendBuffer, &usDataOffset, &usSendSize))||
14543 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14544 {
14545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14546 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14547 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 }
14551
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14554
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 wpalMemoryCopy( pSendBuffer+usDataOffset,
14556 &halCfgAppsCpuWakeupStateReqParams,
14557 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014558
14559 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014561
14562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14566 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14567 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014568}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14569
14570#ifdef WLAN_FEATURE_VOWIFI_11R
14571/**
14572 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14573 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014574
14575 @param pWDICtx: pointer to the WLAN DAL context
14576 pEventData: pointer to the event information structure
14577
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 @see
14579 @return Result of the function call
14580*/
14581WDI_Status
14582WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014583(
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 WDI_ControlBlockType* pWDICtx,
14585 WDI_EventInfoType* pEventData
14586)
14587{
14588 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14589 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 wpt_uint16 usDataOffset = 0;
14594 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 wpt_macAddr macBSSID;
14597 tAggrAddTsReq halAggrAddTsReq;
14598 int i;
14599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14600
14601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 -------------------------------------------------------------------------*/
14604 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14605 ( NULL == pEventData->pCBfnc ))
14606 {
14607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 }
14612 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14613 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14614 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14615 /*-------------------------------------------------------------------------
14616 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 -------------------------------------------------------------------------*/
14619 wpalMutexAcquire(&pWDICtx->wptMutex);
14620
14621 /*------------------------------------------------------------------------
14622 Find the BSS for which the request is made and identify WDI session
14623 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14625 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 &macBSSID))
14627 {
14628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14629 "This station does not exist in the WDI Station Table %d");
14630 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 }
14633
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14635 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14638 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14639 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014640
14641 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014642 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014644
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 /*------------------------------------------------------------------------
14646 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 ------------------------------------------------------------------------*/
14649 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14650 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14652 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14653 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014654
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 }
14659
14660 wpalMutexRelease(&pWDICtx->wptMutex);
14661 /*-----------------------------------------------------------------------
14662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 sizeof(tAggrAddTsParams),
14667 &pSendBuffer, &usDataOffset, &usSendSize))||
14668 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14671 "Unable to get send buffer in set bss key req %x %x %x",
14672 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 }
14676
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14681
14682 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14683 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14690 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14693 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14696 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14699 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14702 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14705 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14708 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14711 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014714 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014715 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014716
14717
14718 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14748 }
14749
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 wpalMemoryCopy( pSendBuffer+usDataOffset,
14751 &halAggrAddTsReq,
14752 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014753
14754 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014756
14757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014763}/*WDI_ProcessAggrAddTSpecReq*/
14764#endif /* WLAN_FEATURE_VOWIFI_11R */
14765
14766/**
14767 @brief Process Shutdown Request function (called when Main FSM
14768 allows it)
14769
14770 @param pWDICtx: pointer to the WLAN DAL context
14771 pEventData: pointer to the event information structure
14772
14773 @see
14774 @return Result of the function call
14775*/
14776WDI_Status
14777WDI_ProcessShutdownReq
14778(
14779 WDI_ControlBlockType* pWDICtx,
14780 WDI_EventInfoType* pEventData
14781 )
14782{
14783 wpt_status wptStatus;
14784
14785
14786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14787
14788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 -------------------------------------------------------------------------*/
14791 if ( NULL == pEventData )
14792 {
14793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 WDI_ASSERT(0);
14796 return WDI_STATUS_E_FAILURE;
14797 }
14798
14799 wpalMutexAcquire(&pWDICtx->wptMutex);
14800
14801
14802 gWDIInitialized = eWLAN_PAL_FALSE;
14803 /*! TO DO: stop the data services */
14804 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14805 {
14806 /*Stop the STA Table !UT- check this logic again
14807 It is safer to do it here than on the response - because a stop is imminent*/
14808 WDI_STATableStop(pWDICtx);
14809
14810 /* Stop Transport Driver, DXE */
14811 WDTS_Stop(pWDICtx);
14812 }
14813
14814 /*Clear all pending request*/
14815 WDI_ClearPendingRequests(pWDICtx);
14816 /* Close Data transport*/
14817 /* FTM mode does not open Data Path */
14818 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14819 {
14820 WDTS_Close(pWDICtx);
14821 }
14822 /*Close the STA Table !UT- check this logic again*/
14823 WDI_STATableClose(pWDICtx);
14824 /*close the PAL */
14825 wptStatus = wpalClose(pWDICtx->pPALContext);
14826 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14827 {
14828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14829 "Failed to wpal Close %d", wptStatus);
14830 WDI_ASSERT(0);
14831 }
14832
14833 /*Transition back to init state*/
14834 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14835
14836 wpalMutexRelease(&pWDICtx->wptMutex);
14837
14838 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014840
14841
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014843}/*WDI_ProcessShutdownReq*/
14844
14845/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014847========================================================================*/
14848
14849/**
14850 @brief Process Start Response function (called when a response
14851 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014852
14853 @param pWDICtx: pointer to the WLAN DAL context
14854 pEventData: pointer to the event information structure
14855
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 @see
14857 @return Result of the function call
14858*/
14859WDI_Status
14860WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014861(
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 WDI_ControlBlockType* pWDICtx,
14863 WDI_EventInfoType* pEventData
14864)
14865{
14866 WDI_StartRspParamsType wdiRspParams;
14867 WDI_StartRspCb wdiStartRspCb = NULL;
14868
14869 tHalMacStartRspParams* startRspParams;
14870
14871#ifndef HAL_SELF_STA_PER_BSS
14872 WDI_AddStaParams wdiAddSTAParam = {0};
14873#endif
14874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14875
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 -------------------------------------------------------------------------*/
14880 if (( NULL == pEventData ) ||
14881 ( NULL == pEventData->pEventData) ||
14882 ( NULL == wdiStartRspCb ))
14883 {
14884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 }
14889
14890 /*-------------------------------------------------------------------------
14891 Extract response and send it to UMAC
14892 -------------------------------------------------------------------------*/
14893 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14894 {
14895 // not enough data was received
14896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14897 "Invalid response length in Start Resp Expect %x Rcvd %x",
14898 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 }
14902
14903 /*-------------------------------------------------------------------------
14904 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 -------------------------------------------------------------------------*/
14907 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14908
14909 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14910 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14911 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14912 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14913 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14914 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14915 wdiRspParams.wlanReportedVersion.major =
14916 startRspParams->wcnssWlanVersion.major;
14917 wdiRspParams.wlanReportedVersion.minor =
14918 startRspParams->wcnssWlanVersion.minor;
14919 wdiRspParams.wlanReportedVersion.version =
14920 startRspParams->wcnssWlanVersion.version;
14921 wdiRspParams.wlanReportedVersion.revision =
14922 startRspParams->wcnssWlanVersion.revision;
14923 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14924 startRspParams->wcnssCrmVersionString,
14925 sizeof(wdiRspParams.wcnssSoftwareVersion));
14926 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14927 startRspParams->wcnssWlanVersionString,
14928 sizeof(wdiRspParams.wcnssHardwareVersion));
14929 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14930
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014931 /*Save the HAL Version*/
14932 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14933
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 wpalMutexAcquire(&pWDICtx->wptMutex);
14935 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14936 {
14937 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14938
14939 /*Cache the start response for further use*/
14940 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 sizeof(pWDICtx->wdiCachedStartRspParams));
14943
14944 }
14945 else
14946 {
14947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14948 "Failed to start device with status %s(%d)",
14949 WDI_getHALStatusMsgString(startRspParams->status),
14950 startRspParams->status);
14951
14952 /*Set the expected state transition to stopped - because the start has
14953 failed*/
14954 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14955
14956 wpalMutexRelease(&pWDICtx->wptMutex);
14957
14958 /*Notify UMAC*/
14959 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014960
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14962
14963 /*Although the response is an error - it was processed by our function
14964 so as far as the caller is concerned this is a succesful reponse processing*/
14965 return WDI_STATUS_SUCCESS;
14966 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014967
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 wpalMutexRelease(&pWDICtx->wptMutex);
14969
14970 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14971 {
14972 /* FTM mode does not need to execute below */
14973 /* Notify UMAC */
14974 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14975 return WDI_STATUS_SUCCESS;
14976 }
14977
14978 /* START the Data transport */
14979 WDTS_startTransport(pWDICtx);
14980
14981 /*Start the STA Table !- check this logic again*/
14982 WDI_STATableStart(pWDICtx);
14983
14984#ifndef HAL_SELF_STA_PER_BSS
14985 /* Store the Self STA Index */
14986 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14987
14988 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14989 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14990 WDI_MAC_ADDR_LEN);
14991
14992 /* At this point add the self-STA */
14993
14994 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14995 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14996 /*! TO DO: wdiAddSTAParam.dpuSig */
14997 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14998 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14999 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15000
15001 //all DPU indices are the same for self STA
15002 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15003 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015004 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15006 WDI_MAC_ADDR_LEN);
15007 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15008 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15009
15010 /* Note: Since we don't get an explicit config STA request for self STA, we
15011 add the self STA upon receiving the Start response message. But the
15012 self STA entry in the table is deleted when WDI gets an explicit delete STA
15013 request */
15014 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15015#endif
15016
15017 /*Notify UMAC*/
15018 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15019
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015021}/*WDI_ProcessStartRsp*/
15022
15023
15024/**
15025 @brief Process Stop Response function (called when a response
15026 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015027
15028 @param pWDICtx: pointer to the WLAN DAL context
15029 pEventData: pointer to the event information structure
15030
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 @see
15032 @return Result of the function call
15033*/
15034WDI_Status
15035WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015036(
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 WDI_ControlBlockType* pWDICtx,
15038 WDI_EventInfoType* pEventData
15039)
15040{
15041 WDI_Status wdiStatus;
15042 WDI_StopRspCb wdiStopRspCb = NULL;
15043
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15046
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 -------------------------------------------------------------------------*/
15051 if (( NULL == pEventData ) ||
15052 ( NULL == pEventData->pEventData) ||
15053 ( NULL == wdiStopRspCb ))
15054 {
15055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 }
15060
15061 /*-------------------------------------------------------------------------
15062 Extract response and send it to UMAC
15063 -------------------------------------------------------------------------*/
15064 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15065 {
15066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15067 "Invalid response length in Stop Resp %x %x",
15068 pEventData->uEventDataSize);
15069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 }
15072
15073 /*-------------------------------------------------------------------------
15074 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15078 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 sizeof(halMacStopRspMsg.stopRspParams));
15080
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015082
15083 wpalMutexAcquire(&pWDICtx->wptMutex);
15084
15085 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015086 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 --------------------------------------------------------------------------*/
15088 if ( WDI_STATUS_SUCCESS != wdiStatus )
15089 {
15090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15091 "Failed to stop the device with status %s (%d)",
15092 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15093 halMacStopRspMsg.stopRspParams.status);
15094
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15096
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015100
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15102
15103 /*Transition now as WDI may get preempted imediately after it sends
15104 up the Stop Response and it will not get to process the state transition
15105 from Main Rsp function*/
15106 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15107 wpalMutexRelease(&pWDICtx->wptMutex);
15108
15109 /*! TO DO: - STOP the Data transport */
15110
15111 /*Notify UMAC*/
15112 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15113
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115}/*WDI_ProcessStopRsp*/
15116
15117/**
15118 @brief Process Close Rsp function (called when a response
15119 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015120
15121 @param pWDICtx: pointer to the WLAN DAL context
15122 pEventData: pointer to the event information structure
15123
Jeff Johnson295189b2012-06-20 16:38:30 -070015124 @see
15125 @return Result of the function call
15126*/
15127WDI_Status
15128WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015129(
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 WDI_ControlBlockType* pWDICtx,
15131 WDI_EventInfoType* pEventData
15132)
15133{
15134 /*There is no close response comming from HAL - function just kept for
15135 simmetry */
15136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015138}/*WDI_ProcessCloseRsp*/
15139
15140
15141/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015143============================================================================*/
15144
15145/**
15146 @brief Process Init Scan Rsp function (called when a response
15147 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015148
15149 @param pWDICtx: pointer to the WLAN DAL context
15150 pEventData: pointer to the event information structure
15151
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 @see
15153 @return Result of the function call
15154*/
15155WDI_Status
15156WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015157(
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 WDI_ControlBlockType* pWDICtx,
15159 WDI_EventInfoType* pEventData
15160)
15161{
15162 WDI_Status wdiStatus;
15163 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015165 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15167
15168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 -------------------------------------------------------------------------*/
15171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15172 ( NULL == pEventData->pEventData))
15173 {
15174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 }
15179
15180 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15181 if( NULL == wdiInitScanRspCb)
15182 {
15183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015184 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 }
15188
15189 /*-------------------------------------------------------------------------
15190 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015191 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15194 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 sizeof(halInitScanRspMsg.initScanRspParams));
15196
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015198
15199 if ( pWDICtx->bInBmps )
15200 {
15201 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015202 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15203 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15205 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15206 WDI_ASSERT(0);
15207 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 }
15209
15210 /*Notify UMAC*/
15211 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15212
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214}/*WDI_ProcessInitScanRsp*/
15215
15216
15217/**
15218 @brief Process Start Scan Rsp function (called when a response
15219 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015220
15221 @param pWDICtx: pointer to the WLAN DAL context
15222 pEventData: pointer to the event information structure
15223
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 @see
15225 @return Result of the function call
15226*/
15227WDI_Status
15228WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015229(
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 WDI_ControlBlockType* pWDICtx,
15231 WDI_EventInfoType* pEventData
15232)
15233{
15234 WDI_StartScanRspParamsType wdiStartScanParams;
15235 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015236
15237 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15239
15240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 -------------------------------------------------------------------------*/
15243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15244 ( NULL == pEventData->pEventData))
15245 {
15246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 }
15251
15252 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15253 if( NULL == wdiStartScanRspCb)
15254 {
15255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015256 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 }
15260
15261 /*-------------------------------------------------------------------------
15262 Extract response and send it to UMAC
15263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 sizeof(halStartScanRspMsg.startScanRspParams));
15267
15268 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15269 halStartScanRspMsg.startScanRspParams.status);
15270#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 halStartScanRspMsg.startScanRspParams.startTSF,
15275 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015276#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015277
15278 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15279 {
15280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15281 "Start scan failed with status %s (%d)",
15282 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15283 halStartScanRspMsg.startScanRspParams.status);
15284 /* send the status to UMAC, don't return from here*/
15285 }
15286
15287 /*Notify UMAC*/
15288 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15289
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015291
15292}/*WDI_ProcessStartScanRsp*/
15293
15294
15295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015298
15299 @param pWDICtx: pointer to the WLAN DAL context
15300 pEventData: pointer to the event information structure
15301
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 @see
15303 @return Result of the function call
15304*/
15305WDI_Status
15306WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015307(
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 WDI_ControlBlockType* pWDICtx,
15309 WDI_EventInfoType* pEventData
15310)
15311{
15312 WDI_Status wdiStatus;
15313 tHalEndScanRspMsg halEndScanRspMsg;
15314 WDI_EndScanRspCb wdiEndScanRspCb;
15315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15316
15317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 -------------------------------------------------------------------------*/
15320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15321 ( NULL == pEventData->pEventData))
15322 {
15323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 }
15328
15329 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15330
15331 /*-------------------------------------------------------------------------
15332 Extract response and send it to UMAC
15333 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15335 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 sizeof(halEndScanRspMsg.endScanRspParams));
15337
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015339
15340 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15341 {
15342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15343 "End Scan failed with status %s (%d )",
15344 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15345 halEndScanRspMsg.endScanRspParams.status);
15346 /* send the status to UMAC, don't return from here*/
15347 }
15348
15349 /*Notify UMAC*/
15350 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15351
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015353}/*WDI_ProcessEndScanRsp*/
15354
15355
15356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015359
15360 @param pWDICtx: pointer to the WLAN DAL context
15361 pEventData: pointer to the event information structure
15362
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 @see
15364 @return Result of the function call
15365*/
15366WDI_Status
15367WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015368(
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 WDI_ControlBlockType* pWDICtx,
15370 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015371)
Jeff Johnson295189b2012-06-20 16:38:30 -070015372{
15373 WDI_Status wdiStatus;
15374 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015375
15376 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15378
15379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 -------------------------------------------------------------------------*/
15382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15383 ( NULL == pEventData->pEventData))
15384 {
15385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 }
15390
15391 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15392
15393 /*-------------------------------------------------------------------------
15394 Extract response and send it to UMAC
15395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15397 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15399
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015401
15402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 halFinishScanRspMsg.finishScanRspParams.status);
15405
15406 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15407 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15408 {
15409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15410 "Finish Scan failed with status %s (%d)",
15411 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15412 halFinishScanRspMsg.finishScanRspParams.status);
15413 /* send the status to UMAC, don't return from here*/
15414 }
15415
15416 /*Notify UMAC*/
15417 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15418
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015420}/*WDI_ProcessFinishScanRsp*/
15421
15422/**
15423 @brief Process Join Response function (called when a response
15424 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015425
15426 @param pWDICtx: pointer to the WLAN DAL context
15427 pEventData: pointer to the event information structure
15428
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 @see
15430 @return Result of the function call
15431*/
15432WDI_Status
15433WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015434(
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 WDI_ControlBlockType* pWDICtx,
15436 WDI_EventInfoType* pEventData
15437)
15438{
15439 WDI_Status wdiStatus;
15440 WDI_JoinRspCb wdiJoinRspCb;
15441 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015442
15443 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15445
15446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 -------------------------------------------------------------------------*/
15449 if (( NULL == pWDICtx ) ||
15450 ( NULL == pWDICtx->pfncRspCB ) ||
15451 ( NULL == pEventData ) ||
15452 ( NULL == pEventData->pEventData))
15453 {
15454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 }
15459
15460 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15461
15462 /*-------------------------------------------------------------------------
15463 Extract response and send it to UMAC
15464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15466 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 sizeof(halJoinRspMsg.joinRspParams));
15468
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015470
15471 wpalMutexAcquire(&pWDICtx->wptMutex);
15472
15473 /*-----------------------------------------------------------------------
15474 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15479 {
15480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15482 "association no longer in progress %d - mysterious HAL response",
15483 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015484
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 }
15489
15490 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15491
15492 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 -----------------------------------------------------------------------*/
15495 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15496 {
15497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15498 "Join only allowed in Joining state - failure state is %d "
15499 "strange HAL response", pBSSSes->wdiAssocState);
15500
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15502
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 }
15506
15507
15508 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 -----------------------------------------------------------------------*/
15511 if ( WDI_STATUS_SUCCESS != wdiStatus )
15512 {
15513 /*Association was failed by HAL - remove session*/
15514 WDI_DeleteSession(pWDICtx, pBSSSes);
15515
15516 /*Association no longer in progress */
15517 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15518
15519 /*Association no longer in progress - prepare pending assoc for processing*/
15520 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015521
Jeff Johnson295189b2012-06-20 16:38:30 -070015522 }
15523 else
15524 {
15525 /*Transition to state Joining - this may be redundant as we are supposed
15526 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 }
15529
15530 wpalMutexRelease(&pWDICtx->wptMutex);
15531
15532 /*Notify UMAC*/
15533 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15534
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015536}/*WDI_ProcessJoinRsp*/
15537
15538
15539/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015542
15543 @param pWDICtx: pointer to the WLAN DAL context
15544 pEventData: pointer to the event information structure
15545
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 @see
15547 @return Result of the function call
15548*/
15549WDI_Status
15550WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015551(
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 WDI_ControlBlockType* pWDICtx,
15553 WDI_EventInfoType* pEventData
15554)
15555{
15556 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15557 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015558 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 WDI_BSSSessionType* pBSSSes = NULL;
15560
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15563 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015564
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15566
15567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 -------------------------------------------------------------------------*/
15570 if (( NULL == pEventData ) ||
15571 ( NULL == pEventData->pEventData))
15572 {
15573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 }
15578
15579 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15580
15581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15585 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 sizeof(halConfigBssRspMsg.configBssRspParams));
15587
15588 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15589 halConfigBssRspMsg.configBssRspParams.status);
15590 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15591 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015592 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15594 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015595
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015597
15598 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015600
15601 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015603
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015605
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15609 #endif
15610 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15611 halConfigBssRspMsg.configBssRspParams.staMac,
15612 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015613
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 wpalMutexAcquire(&pWDICtx->wptMutex);
15615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15619 wdiConfigBSSParams.macBSSID,
15620 &pBSSSes);
15621
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 /*-----------------------------------------------------------------------
15623 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 -----------------------------------------------------------------------*/
15626 if ( NULL == pBSSSes )
15627 {
15628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15629 "Association sequence for this BSS does not yet exist "
15630 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015631
15632 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15633
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015637
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 /*Save data for this BSS*/
15639 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15640 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15651 pBSSSes->bcastStaIdx =
15652 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015653
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015655
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 /*-------------------------------------------------------------------------
15657 Add Peer STA
15658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15661 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015662
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015664 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015665 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015666 wdiAddSTAParam.ucHTCapable =
15667 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15668 wdiAddSTAParam.ucStaType =
15669 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15670
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15673 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015675
15676 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15677 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15678 WDI_MAC_ADDR_LEN);
15679
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015693
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15695 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015696
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15698 /*-------------------------------------------------------------------------
15699 Add Broadcast STA only in AP mode
15700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015702 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 {
15704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15705 "Add BCAST STA to table for index: %d",
15706 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015707
15708 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015710
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15712 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15713 }
15714 wpalMutexRelease(&pWDICtx->wptMutex);
15715 }
15716 else
15717 {
15718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15719 "Config BSS RSP failed with status : %s(%d)",
15720 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015721 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 halConfigBssRspMsg.configBssRspParams.status);
15723
Jeff Johnsone7245742012-09-05 17:12:55 -070015724
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 /*Association was failed by HAL - remove session*/
15726 WDI_DeleteSession(pWDICtx, pBSSSes);
15727
15728 /*Association no longer in progress */
15729 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15730
15731 /*Association no longer in progress - prepare pending assoc for processing*/
15732 WDI_DequeueAssocRequest(pWDICtx);
15733
15734 }
15735
15736 /*Notify UMAC*/
15737 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15738
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740}/*WDI_ProcessConfigBSSRsp*/
15741
15742
15743/**
15744 @brief Process Del BSS Response function (called when a response
15745 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015746
15747 @param pWDICtx: pointer to the WLAN DAL context
15748 pEventData: pointer to the event information structure
15749
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 @see
15751 @return Result of the function call
15752*/
15753WDI_Status
15754WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015755(
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 WDI_ControlBlockType* pWDICtx,
15757 WDI_EventInfoType* pEventData
15758)
15759{
15760 WDI_DelBSSRspParamsType wdiDelBSSParams;
15761 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015762 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015763 WDI_BSSSessionType* pBSSSes = NULL;
15764
Jeff Johnsone7245742012-09-05 17:12:55 -070015765 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15767
15768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 -------------------------------------------------------------------------*/
15771 if (( NULL == pEventData ) ||
15772 ( NULL == pEventData->pEventData))
15773 {
15774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 }
15779
15780 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15781
15782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15786 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 sizeof(halDelBssRspMsg.deleteBssRspParams));
15788
15789
15790 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015792
15793 wpalMutexAcquire(&pWDICtx->wptMutex);
15794
15795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15799 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15800 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015801
15802 /*-----------------------------------------------------------------------
15803 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 -----------------------------------------------------------------------*/
15806 if ( NULL == pBSSSes )
15807 {
15808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15809 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015810 "association no longer in progress - mysterious HAL response");
15811
15812 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15813
15814 wpalMutexRelease(&pWDICtx->wptMutex);
15815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015817
15818 /*Extract BSSID for the response to UMAC*/
15819 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15820 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15821
15822 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15823
15824 /*-----------------------------------------------------------------------
15825 The current session will be deleted
15826 -----------------------------------------------------------------------*/
15827 WDI_DeleteSession(pWDICtx, pBSSSes);
15828
15829
15830 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15831 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015833 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015834 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015835
15836 /* Delete the STA's in this BSS */
15837 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15838
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 wpalMutexRelease(&pWDICtx->wptMutex);
15840
15841 /*Notify UMAC*/
15842 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15843
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015845}/*WDI_ProcessDelBSSRsp*/
15846
15847/**
15848 @brief Process Post Assoc Rsp function (called when a response
15849 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015850
15851 @param pWDICtx: pointer to the WLAN DAL context
15852 pEventData: pointer to the event information structure
15853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 @see
15855 @return Result of the function call
15856*/
15857WDI_Status
15858WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015859(
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 WDI_ControlBlockType* pWDICtx,
15861 WDI_EventInfoType* pEventData
15862)
15863{
15864 WDI_PostAssocRspParamsType wdiPostAssocParams;
15865 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15870
15871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 -------------------------------------------------------------------------*/
15874 if (( NULL == pEventData ) ||
15875 ( NULL == pEventData->pEventData))
15876 {
15877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 }
15882
15883 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15884
15885 /*-------------------------------------------------------------------------
15886 Extract response and send it to UMAC
15887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15889 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 sizeof(halPostAssocRspMsg.postAssocRspParams));
15891
15892 /*Extract the Post Assoc STA Params */
15893
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15900
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 wdiPostAssocParams.wdiStatus =
15902 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015903
15904 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15905 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015906 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15907 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 WDI_MAC_ADDR_LEN);
15909
15910 /* Extract Post Assoc BSS Params */
15911
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15913 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15914 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015915
15916 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15917 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15920 .macSTA, WDI_MAC_ADDR_LEN);
15921
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15924
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15927
15928 wdiPostAssocParams.bssParams.ucBSSIdx =
15929 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15930
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15933
15934 wpalMutexAcquire(&pWDICtx->wptMutex);
15935
15936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015942
15943 /*-----------------------------------------------------------------------
15944 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 -----------------------------------------------------------------------*/
15947 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15950 {
15951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15952 "Association sequence for this BSS does not yet exist or "
15953 "association no longer in progress - mysterious HAL response");
15954
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15956
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 }
15960
15961 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 -----------------------------------------------------------------------*/
15964 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15965 {
15966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15967 "Post Assoc not allowed before JOIN - failing request "
15968 "strange HAL response");
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15971
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 }
15975
15976 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 -----------------------------------------------------------------------*/
15979 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15980 {
15981 /*Association was failed by HAL - remove session*/
15982 WDI_DeleteSession(pWDICtx, pBSSSes);
15983 }
15984 else
15985 {
15986 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015988
15989 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15998
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16001 }
16002
16003 /*Association no longer in progress */
16004 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16005
16006 /*Association no longer in progress - prepare pending assoc for processing*/
16007 WDI_DequeueAssocRequest(pWDICtx);
16008
16009 wpalMutexRelease(&pWDICtx->wptMutex);
16010
16011 /*Notify UMAC*/
16012 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16013
Jeff Johnsone7245742012-09-05 17:12:55 -070016014 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016015}/*WDI_ProcessPostAssocRsp*/
16016
16017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016018 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016020
16021 @param pWDICtx: pointer to the WLAN DAL context
16022 pEventData: pointer to the event information structure
16023
Jeff Johnson295189b2012-06-20 16:38:30 -070016024 @see
16025 @return Result of the function call
16026*/
16027WDI_Status
16028WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016029(
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 WDI_ControlBlockType* pWDICtx,
16031 WDI_EventInfoType* pEventData
16032)
16033{
16034 WDI_DelSTARspParamsType wdiDelSTARsp;
16035 WDI_DelSTARspCb wdiDelSTARspCb;
16036 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016037 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16039
16040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 -------------------------------------------------------------------------*/
16043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16044 ( NULL == pEventData->pEventData))
16045 {
16046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 }
16051
16052 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16053
16054 /*-------------------------------------------------------------------------
16055 Extract response and send it to UMAC
16056 -------------------------------------------------------------------------*/
16057 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016058 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 sizeof(halDelStaRspMsg.delStaRspParams));
16060
16061 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 wdiDelSTARsp.wdiStatus =
16063 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016064
16065 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16066
16067 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16068 if(staType == WDI_STA_ENTRY_SELF)
16069 {
16070 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16071
16072 /* At this point add the self-STA */
16073
16074 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16075 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16076 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16077
16078#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16079#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16080
16081 //all DPU indices are the same for self STA
16082 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16083 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16084 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16085 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16086 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16087 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016088
16089 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 }
16091 else
16092 {
16093 //Delete the station in the table
16094 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16095 }
16096
16097 /*Notify UMAC*/
16098 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16099
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016101}/*WDI_ProcessDelSTARsp*/
16102
16103
16104/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016106==========================================================================*/
16107
16108/**
16109 @brief Process Set BSS Key Rsp function (called when a response
16110 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016111
16112 @param pWDICtx: pointer to the WLAN DAL context
16113 pEventData: pointer to the event information structure
16114
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 @see
16116 @return Result of the function call
16117*/
16118WDI_Status
16119WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016120(
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 WDI_ControlBlockType* pWDICtx,
16122 WDI_EventInfoType* pEventData
16123)
16124{
16125 WDI_Status wdiStatus;
16126 eHalStatus halStatus;
16127 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16129
16130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 -------------------------------------------------------------------------*/
16133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16134 ( NULL == pEventData->pEventData))
16135 {
16136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 }
16141
16142 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16143
16144 /*-------------------------------------------------------------------------
16145 Extract response and send it to UMAC
16146 -------------------------------------------------------------------------*/
16147 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016149
16150 if ( eHAL_STATUS_SUCCESS != halStatus )
16151 {
16152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16153 "Set BSS Key failed with status %s (%d)",
16154 WDI_getHALStatusMsgString(halStatus),
16155 halStatus);
16156 /* send the status to UMAC, don't return from here*/
16157 }
16158
16159 /*Notify UMAC*/
16160 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16161
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016163}/*WDI_ProcessSetBssKeyRsp*/
16164
16165/**
16166 @brief Process Remove BSS Key Rsp function (called when a response
16167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016168
16169 @param pWDICtx: pointer to the WLAN DAL context
16170 pEventData: pointer to the event information structure
16171
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 @see
16173 @return Result of the function call
16174*/
16175WDI_Status
16176WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016177(
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 WDI_ControlBlockType* pWDICtx,
16179 WDI_EventInfoType* pEventData
16180)
16181{
16182 WDI_Status wdiStatus;
16183 eHalStatus halStatus;
16184 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16186
16187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 -------------------------------------------------------------------------*/
16190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16191 ( NULL == pEventData->pEventData))
16192 {
16193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 }
16198
16199 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16200
16201 /*-------------------------------------------------------------------------
16202 Extract response and send it to UMAC
16203 -------------------------------------------------------------------------*/
16204 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016206
16207 if ( eHAL_STATUS_SUCCESS != halStatus )
16208 {
16209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16210 "Remove BSS Key failed with status %s (%d )",
16211 WDI_getHALStatusMsgString(halStatus),
16212 halStatus);
16213 /* send the status to UMAC, don't return from here*/
16214 }
16215
16216 /*Notify UMAC*/
16217 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16218
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016220}/*WDI_ProcessSetBssKeyRsp*/
16221
16222
16223/**
16224 @brief Process Set STA Key Rsp function (called when a response
16225 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016226
16227 @param pWDICtx: pointer to the WLAN DAL context
16228 pEventData: pointer to the event information structure
16229
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 @see
16231 @return Result of the function call
16232*/
16233WDI_Status
16234WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016235(
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 WDI_ControlBlockType* pWDICtx,
16237 WDI_EventInfoType* pEventData
16238)
16239{
16240 WDI_Status wdiStatus;
16241 eHalStatus halStatus;
16242 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16244
16245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 -------------------------------------------------------------------------*/
16248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16249 ( NULL == pEventData->pEventData))
16250 {
16251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 }
16256
16257 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16258
16259 /*-------------------------------------------------------------------------
16260 Extract response and send it to UMAC
16261 -------------------------------------------------------------------------*/
16262 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016263 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016264
16265 if ( eHAL_STATUS_SUCCESS != halStatus )
16266 {
16267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16268 "Set STA Key failed with status %s (%d)",
16269 WDI_getHALStatusMsgString(halStatus),
16270 halStatus);
16271 /* send the status to UMAC, don't return from here*/
16272 }
16273
16274 /*Notify UMAC*/
16275 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16276
Jeff Johnsone7245742012-09-05 17:12:55 -070016277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016278}/*WDI_ProcessSetSTAKeyRsp*/
16279
16280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016283
16284 @param pWDICtx: pointer to the WLAN DAL context
16285 pEventData: pointer to the event information structure
16286
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 @see
16288 @return Result of the function call
16289*/
16290WDI_Status
16291WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016292(
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 WDI_ControlBlockType* pWDICtx,
16294 WDI_EventInfoType* pEventData
16295)
16296{
16297 WDI_Status wdiStatus;
16298 eHalStatus halStatus;
16299 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16301
16302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 -------------------------------------------------------------------------*/
16305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16306 ( NULL == pEventData->pEventData))
16307 {
16308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 }
16313
16314 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16315
16316 /*-------------------------------------------------------------------------
16317 Extract response and send it to UMAC
16318 -------------------------------------------------------------------------*/
16319 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016321
16322 if ( eHAL_STATUS_SUCCESS != halStatus )
16323 {
16324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16325 "Remove STA Key failed with status %s (%d)",
16326 WDI_getHALStatusMsgString(halStatus),
16327 halStatus);
16328 /* send the status to UMAC, don't return from here*/
16329 }
16330
16331 /*Notify UMAC*/
16332 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16333
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016335}/*WDI_ProcessRemoveStaKeyRsp*/
16336
16337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016338 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016340
16341 @param pWDICtx: pointer to the WLAN DAL context
16342 pEventData: pointer to the event information structure
16343
Jeff Johnson295189b2012-06-20 16:38:30 -070016344 @see
16345 @return Result of the function call
16346*/
16347WDI_Status
16348WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016349(
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 WDI_ControlBlockType* pWDICtx,
16351 WDI_EventInfoType* pEventData
16352)
16353{
16354 WDI_Status wdiStatus;
16355 eHalStatus halStatus;
16356 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16358
16359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 -------------------------------------------------------------------------*/
16362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16363 ( NULL == pEventData->pEventData))
16364 {
16365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 }
16370
16371 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16372
16373 /*-------------------------------------------------------------------------
16374 Extract response and send it to UMAC
16375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016376 wpalMemoryCopy( &halStatus,
16377 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 sizeof(halStatus));
16379
Jeff Johnsone7245742012-09-05 17:12:55 -070016380 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016381
16382 if ( eHAL_STATUS_SUCCESS != halStatus )
16383 {
16384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16385 "Set STA Key failed with status %s (%d)",
16386 WDI_getHALStatusMsgString(halStatus),
16387 halStatus);
16388 /* send the status to UMAC, don't return from here*/
16389 }
16390
16391 /*Notify UMAC*/
16392 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16393
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016395}/*WDI_ProcessSetSTABcastKeyRsp*/
16396
16397/**
16398 @brief Process Remove STA Bcast Key Rsp function (called when a
16399 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016400
16401 @param pWDICtx: pointer to the WLAN DAL context
16402 pEventData: pointer to the event information structure
16403
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 @see
16405 @return Result of the function call
16406*/
16407WDI_Status
16408WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016409(
Jeff Johnson295189b2012-06-20 16:38:30 -070016410 WDI_ControlBlockType* pWDICtx,
16411 WDI_EventInfoType* pEventData
16412)
16413{
16414 WDI_Status wdiStatus;
16415 eHalStatus halStatus;
16416 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16418
16419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 -------------------------------------------------------------------------*/
16422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16423 ( NULL == pEventData->pEventData))
16424 {
16425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
16430
16431 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16432
16433 /*-------------------------------------------------------------------------
16434 Extract response and send it to UMAC
16435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016436 wpalMemoryCopy( &halStatus,
16437 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 sizeof(halStatus));
16439
Jeff Johnsone7245742012-09-05 17:12:55 -070016440 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016441
16442 if ( eHAL_STATUS_SUCCESS != halStatus )
16443 {
16444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16445 "Remove STA Key failed with status %s (%d)",
16446 WDI_getHALStatusMsgString(halStatus),
16447 halStatus);
16448 /* send the status to UMAC, don't return from here*/
16449 }
16450
16451 /*Notify UMAC*/
16452 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16453
Jeff Johnsone7245742012-09-05 17:12:55 -070016454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016455}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16456
16457
16458/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016459 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016460==========================================================================*/
16461
16462/**
16463 @brief Process Add TSpec Rsp function (called when a response
16464 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016465
16466 @param pWDICtx: pointer to the WLAN DAL context
16467 pEventData: pointer to the event information structure
16468
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 @see
16470 @return Result of the function call
16471*/
16472WDI_Status
16473WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016474(
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 WDI_ControlBlockType* pWDICtx,
16476 WDI_EventInfoType* pEventData
16477)
16478{
16479 WDI_Status wdiStatus;
16480 eHalStatus halStatus;
16481 WDI_AddTsRspCb wdiAddTsRspCb;
16482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16483
16484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 -------------------------------------------------------------------------*/
16487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16488 ( NULL == pEventData->pEventData))
16489 {
16490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 }
16495
16496 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16497
16498 /*-------------------------------------------------------------------------
16499 Extract response and send it to UMAC
16500 -------------------------------------------------------------------------*/
16501 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016503
16504 /*Notify UMAC*/
16505 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16506
Jeff Johnsone7245742012-09-05 17:12:55 -070016507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016508}/*WDI_ProcessAddTSpecRsp*/
16509
16510
16511/**
16512 @brief Process Del TSpec Rsp function (called when a response
16513 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016514
16515 @param pWDICtx: pointer to the WLAN DAL context
16516 pEventData: pointer to the event information structure
16517
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 @see
16519 @return Result of the function call
16520*/
16521WDI_Status
16522WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016523(
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 WDI_ControlBlockType* pWDICtx,
16525 WDI_EventInfoType* pEventData
16526)
16527{
16528 WDI_Status wdiStatus;
16529 eHalStatus halStatus;
16530 WDI_DelTsRspCb wdiDelTsRspCb;
16531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16532
16533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 -------------------------------------------------------------------------*/
16536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16537 ( NULL == pEventData->pEventData))
16538 {
16539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 }
16544
16545 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16546
16547 /*-------------------------------------------------------------------------
16548 Extract response and send it to UMAC
16549 -------------------------------------------------------------------------*/
16550 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016552
16553 /*Notify UMAC*/
16554 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16555
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016557}/*WDI_ProcessDelTSpecRsp*/
16558
16559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016562
16563 @param pWDICtx: pointer to the WLAN DAL context
16564 pEventData: pointer to the event information structure
16565
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 @see
16567 @return Result of the function call
16568*/
16569WDI_Status
16570WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016571(
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 WDI_ControlBlockType* pWDICtx,
16573 WDI_EventInfoType* pEventData
16574)
16575{
16576 WDI_Status wdiStatus;
16577 eHalStatus halStatus;
16578 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16580
16581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 -------------------------------------------------------------------------*/
16584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16585 ( NULL == pEventData->pEventData))
16586 {
16587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 }
16592
16593 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16594
16595 /*-------------------------------------------------------------------------
16596 Extract response and send it to UMAC
16597 -------------------------------------------------------------------------*/
16598 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016600
16601 /*Notify UMAC*/
16602 wdiUpdateEDCAParamsRspCb( 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_ProcessUpdateEDCAParamsRsp*/
16606
16607
16608/**
16609 @brief Process Add BA Rsp function (called when a response
16610 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016611
16612 @param pWDICtx: pointer to the WLAN DAL context
16613 pEventData: pointer to the event information structure
16614
Jeff Johnson295189b2012-06-20 16:38:30 -070016615 @see
16616 @return Result of the function call
16617*/
16618WDI_Status
16619WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016620(
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 WDI_ControlBlockType* pWDICtx,
16622 WDI_EventInfoType* pEventData
16623)
16624{
16625 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16626
16627 tAddBASessionRspParams halBASessionRsp;
16628 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16629
Jeff Johnsone7245742012-09-05 17:12:55 -070016630
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16632
16633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 -------------------------------------------------------------------------*/
16636 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16637 ( NULL == pEventData->pEventData))
16638 {
16639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 }
16644
16645 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16646
16647 /*-------------------------------------------------------------------------
16648 Extract response and send it to UMAC
16649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 wpalMemoryCopy( &halBASessionRsp,
16651 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 sizeof(halBASessionRsp));
16653
16654 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16655
Jeff Johnson43971f52012-07-17 12:26:56 -070016656 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 {
16658 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16659 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16660 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16661 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16662 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16663 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16664 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16665 }
16666
16667 /*Notify UMAC*/
16668 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16669
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016671}/*WDI_ProcessAddSessionBARsp*/
16672
16673
16674/**
16675 @brief Process Del BA Rsp function (called when a response
16676 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016677
16678 @param pWDICtx: pointer to the WLAN DAL context
16679 pEventData: pointer to the event information structure
16680
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 @see
16682 @return Result of the function call
16683*/
16684WDI_Status
16685WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016686(
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 WDI_ControlBlockType* pWDICtx,
16688 WDI_EventInfoType* pEventData
16689)
16690{
16691 WDI_Status wdiStatus;
16692 eHalStatus halStatus;
16693 WDI_DelBARspCb wdiDelBARspCb;
16694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16695
16696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 -------------------------------------------------------------------------*/
16699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16700 ( NULL == pEventData->pEventData))
16701 {
16702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016706 }
16707
16708 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16709
16710 /*-------------------------------------------------------------------------
16711 Extract response and send it to UMAC
16712 -------------------------------------------------------------------------*/
16713 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016715
16716 if ( eHAL_STATUS_SUCCESS == halStatus )
16717 {
16718 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16719 }
16720
16721 /*Notify UMAC*/
16722 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16723
Jeff Johnsone7245742012-09-05 17:12:55 -070016724 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016725}/*WDI_ProcessDelBARsp*/
16726
16727#ifdef FEATURE_WLAN_CCX
16728/**
16729 @brief Process TSM Stats Rsp function (called when a response
16730 is being received over the bus from HAL)
16731
16732 @param pWDICtx: pointer to the WLAN DAL context
16733 pEventData: pointer to the event information structure
16734
16735 @see
16736 @return Result of the function call
16737*/
16738WDI_Status
16739WDI_ProcessTsmStatsRsp
16740(
16741 WDI_ControlBlockType* pWDICtx,
16742 WDI_EventInfoType* pEventData
16743)
16744{
16745 WDI_TsmRspCb wdiTsmStatsRspCb;
16746 tTsmStatsRspMsg halTsmStatsRspMsg;
16747 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16749
16750 /*-------------------------------------------------------------------------
16751 Sanity check
16752 -------------------------------------------------------------------------*/
16753 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16754 ( NULL == pEventData->pEventData))
16755 {
16756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 WDI_ASSERT(0);
16759 return WDI_STATUS_E_FAILURE;
16760 }
16761
16762 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16763
16764 /*-------------------------------------------------------------------------
16765 Unpack HAL Response Message - the header was already extracted by the
16766 main Response Handling procedure
16767 -------------------------------------------------------------------------*/
16768 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16769 pEventData->pEventData,
16770 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16771
16772 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16773 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16774 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16775 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16776 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16777 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16778 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16779 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16780 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16781 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16782 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16783 halTsmStatsRspMsg.tsmStatsRspParams.status);
16784
16785 /*Notify UMAC*/
16786 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16787
16788 return WDI_STATUS_SUCCESS;
16789}/*WDI_ProcessTsmStatsRsp*/
16790
16791#endif
16792
16793
16794
16795/**
16796 @brief Process Flush AC Rsp function (called when a response
16797 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016798
16799 @param pWDICtx: pointer to the WLAN DAL context
16800 pEventData: pointer to the event information structure
16801
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 @see
16803 @return Result of the function call
16804*/
16805WDI_Status
16806WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016807(
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 WDI_ControlBlockType* pWDICtx,
16809 WDI_EventInfoType* pEventData
16810)
16811{
16812 WDI_Status wdiStatus;
16813 eHalStatus halStatus;
16814 WDI_FlushAcRspCb wdiFlushAcRspCb;
16815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16816
16817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 -------------------------------------------------------------------------*/
16820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16821 ( NULL == pEventData->pEventData))
16822 {
16823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016824 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 }
16828
16829 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16830
16831 /*-------------------------------------------------------------------------
16832 Extract response and send it to UMAC
16833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 wpalMemoryCopy( &halStatus,
16835 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 sizeof(halStatus));
16837
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016839
16840 /*Notify UMAC*/
16841 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16842
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016844}/*WDI_ProcessFlushAcRsp*/
16845
16846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016847 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016849
16850 @param pWDICtx: pointer to the WLAN DAL context
16851 pEventData: pointer to the event information structure
16852
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 @see
16854 @return Result of the function call
16855*/
16856WDI_Status
16857WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016858(
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 WDI_ControlBlockType* pWDICtx,
16860 WDI_EventInfoType* pEventData
16861)
16862{
16863 WDI_Status wdiStatus;
16864 eHalStatus halStatus;
16865 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16867
16868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 -------------------------------------------------------------------------*/
16871 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16872 ( NULL == pEventData->pEventData))
16873 {
16874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 }
16879
16880 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16881
16882 /*-------------------------------------------------------------------------
16883 Extract response and send it to UMAC
16884 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 wpalMemoryCopy( &halStatus,
16886 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 sizeof(halStatus));
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016890
16891 /*Notify UMAC*/
16892 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16893
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016895}/*WDI_ProcessBtAmpEventRsp*/
16896
16897
16898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016901
16902 @param pWDICtx: pointer to the WLAN DAL context
16903 pEventData: pointer to the event information structure
16904
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 @see
16906 @return Result of the function call
16907*/
16908WDI_Status
16909WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016910(
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 WDI_ControlBlockType* pWDICtx,
16912 WDI_EventInfoType* pEventData
16913)
16914{
16915 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16916 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16917 tAddStaSelfRspMsg halAddStaSelfRsp;
16918 WDI_AddStaParams wdiAddSTAParam = {0};
16919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16920
16921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 -------------------------------------------------------------------------*/
16924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16925 ( NULL == pEventData->pEventData))
16926 {
16927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016931 }
16932
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16935
16936 /*-------------------------------------------------------------------------
16937 Extract response and send it to UMAC
16938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16940 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16942
16943
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 wdiAddSTASelfParams.wdiStatus =
16945 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016946
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016949 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016951 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016952 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16953
16954 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16955 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16956 WDI_MAC_ADDR_LEN);
16957
16958
16959#ifdef HAL_SELF_STA_PER_BSS
16960
16961 /* At this point add the self-STA */
16962
16963 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16964 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16965 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16966
16967 //all DPU indices are the same for self STA
16968
16969 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16972 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16973 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16974 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16975 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16976
16977 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16978 WDI_MAC_ADDR_LEN);
16979
16980 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16981 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16982
Jeff Johnsone7245742012-09-05 17:12:55 -070016983 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016984 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16985 {
16986 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16987 }
16988#endif
16989
16990 /*Notify UMAC*/
16991 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16992
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994}/*WDI_ProcessAddSTASelfRsp*/
16995
16996
16997
16998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016999 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017001
17002 @param pWDICtx: pointer to the WLAN DAL context
17003 pEventData: pointer to the event information structure
17004
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 @see
17006 @return Result of the function call
17007*/
17008WDI_Status
17009WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017010(
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 WDI_ControlBlockType* pWDICtx,
17012 WDI_EventInfoType* pEventData
17013)
17014{
17015 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17016 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17017 tDelStaSelfRspParams delStaSelfRspParams;
17018 wpt_uint8 ucStaIdx;
17019
17020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17021
17022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 -------------------------------------------------------------------------*/
17025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17026 ( NULL == pEventData->pEventData))
17027 {
17028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 }
17033
17034 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17035
17036 /*-------------------------------------------------------------------------
17037 Extract response and send it to UMAC
17038 -------------------------------------------------------------------------*/
17039
Jeff Johnsone7245742012-09-05 17:12:55 -070017040 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 (wpt_uint8*)pEventData->pEventData,
17042 sizeof(tDelStaSelfRspParams));
17043
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 wdiDelStaSelfRspParams.wdiStatus =
17045 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017046
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17049 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17050 {
17051 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017052 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 delStaSelfRspParams.selfMacAddr,
17054 &ucStaIdx);
17055 if(WDI_STATUS_E_FAILURE == wdiStatus)
17056 {
17057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017058 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 }
17062 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17063 }
17064
17065 /*Notify UMAC*/
17066 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17067
17068 return WDI_STATUS_SUCCESS;
17069}
17070
Jeff Johnsone7245742012-09-05 17:12:55 -070017071#ifdef FEATURE_OEM_DATA_SUPPORT
17072/**
17073 @brief Start Oem Data Rsp function (called when a
17074 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017075
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 @param pWDICtx: pointer to the WLAN DAL context
17077 pEventData: pointer to the event information structure
17078
17079 @see
17080 @return Result of the function call
17081*/
17082#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17083
17084WDI_Status
17085WDI_ProcessStartOemDataRsp
17086(
17087 WDI_ControlBlockType* pWDICtx,
17088 WDI_EventInfoType* pEventData
17089)
17090{
17091 WDI_oemDataRspCb wdiOemDataRspCb;
17092 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17093 tStartOemDataRspParams* halStartOemDataRspParams;
17094
17095 /*-------------------------------------------------------------------------
17096 Sanity check
17097 -------------------------------------------------------------------------*/
17098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17099 ( NULL == pEventData->pEventData))
17100 {
17101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017102 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 WDI_ASSERT(0);
17104 return WDI_STATUS_E_FAILURE;
17105 }
17106
17107 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17108
17109 /*-------------------------------------------------------------------------
17110 Extract response and send it to UMAC
17111 -------------------------------------------------------------------------*/
17112 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17113
17114
17115 //It is the responsibility of the application code to check for failure
17116 //conditions!
17117
17118 //Allocate memory for WDI OEM DATA RSP structure
17119 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17120
17121 if(NULL == wdiOemDataRspParams)
17122 {
17123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17124 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17125 pWDICtx, pEventData, pEventData->pEventData);
17126 WDI_ASSERT(0);
17127 return WDI_STATUS_E_FAILURE;
17128 }
17129
17130 /* Populate WDI structure members */
17131 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17132
17133 /*Notify UMAC*/
17134 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17135
17136 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17137 wpalMemoryFree(wdiOemDataRspParams);
17138
17139 return WDI_STATUS_SUCCESS;
17140}/*WDI_PrcoessStartOemDataRsp*/
17141#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017142
17143/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017145===========================================================================*/
17146
17147/**
17148 @brief Process Channel Switch Rsp function (called when a response
17149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017150
17151 @param pWDICtx: pointer to the WLAN DAL context
17152 pEventData: pointer to the event information structure
17153
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 @see
17155 @return Result of the function call
17156*/
17157WDI_Status
17158WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017159(
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 WDI_ControlBlockType* pWDICtx,
17161 WDI_EventInfoType* pEventData
17162)
17163{
17164 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17165 WDI_SwitchChRspCb wdiChSwitchRspCb;
17166 tSwitchChannelRspParams halSwitchChannelRsp;
17167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17168
17169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 -------------------------------------------------------------------------*/
17172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17173 ( NULL == pEventData->pEventData))
17174 {
17175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017179 }
17180
17181 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17182
17183 /*-------------------------------------------------------------------------
17184 Extract response and send it to UMAC
17185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 (wpt_uint8*)pEventData->pEventData,
17188 sizeof(halSwitchChannelRsp));
17189
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 wdiSwitchChRsp.wdiStatus =
17191 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17193
17194#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017195 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017196#endif
17197
17198 /*Notify UMAC*/
17199 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17200
Jeff Johnsone7245742012-09-05 17:12:55 -070017201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017202}/*WDI_ProcessChannelSwitchRsp*/
17203
17204
17205/**
17206 @brief Process Config STA Rsp function (called when a response
17207 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017208
17209 @param pWDICtx: pointer to the WLAN DAL context
17210 pEventData: pointer to the event information structure
17211
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 @see
17213 @return Result of the function call
17214*/
17215WDI_Status
17216WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017217(
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 WDI_ControlBlockType* pWDICtx,
17219 WDI_EventInfoType* pEventData
17220)
17221{
17222 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17223 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17224 WDI_AddStaParams wdiAddSTAParam;
17225
17226 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017227 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017228
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17245
17246 /*-------------------------------------------------------------------------
17247 Extract response and send it to UMAC
17248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17250 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 sizeof(halConfigStaRsp.configStaRspParams));
17252
17253
17254 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17255 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17256 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17257 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17258 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17259
17260 /* MAC Address of STA - take from cache as it does not come back in the
17261 response*/
17262 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017265
17266 wdiCfgSTAParams.wdiStatus =
17267 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017268
17269 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17270 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17271 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17272
17273 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17274 {
17275 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17276 {
17277 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017278 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17280 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017281
Jeff Johnson295189b2012-06-20 16:38:30 -070017282 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017283 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017284 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 wdiAddSTAParam.ucHTCapable =
17286 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17287 wdiAddSTAParam.ucStaType =
17288 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017289 wdiAddSTAParam.ucRmfEnabled =
17290 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017291
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17294 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017295 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017296
17297 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17298 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17299 WDI_MAC_ADDR_LEN);
17300
17301 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17302 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17303 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017304
17305 if ( NULL == pBSSSes )
17306 {
17307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17308 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017309
Jeff Johnson295189b2012-06-20 16:38:30 -070017310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017311 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 }
17313
17314 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017315 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017316 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017317 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017324
Jeff Johnson295189b2012-06-20 16:38:30 -070017325 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17326 }
17327 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17328 {
17329 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17330
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017337 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017338 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 halConfigStaRsp.configStaRspParams.ucUcastSig;
17345 }
17346 }
17347
17348 /*Notify UMAC*/
17349 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17350
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017352}/*WDI_ProcessConfigStaRsp*/
17353
17354
17355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017358
17359 @param pWDICtx: pointer to the WLAN DAL context
17360 pEventData: pointer to the event information structure
17361
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 @see
17363 @return Result of the function call
17364*/
17365WDI_Status
17366WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017367(
Jeff Johnson295189b2012-06-20 16:38:30 -070017368 WDI_ControlBlockType* pWDICtx,
17369 WDI_EventInfoType* pEventData
17370)
17371{
17372 WDI_Status wdiStatus;
17373 eHalStatus halStatus;
17374 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17375
17376 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17379
17380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 -------------------------------------------------------------------------*/
17383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17384 ( NULL == pEventData->pEventData))
17385 {
17386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017390 }
17391
17392 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17393
17394 wpalMutexAcquire(&pWDICtx->wptMutex);
17395
17396 /*If the link is being transitioned to idle - the BSS is to be deleted
17397 - this type of ending a session is possible when UMAC has failed an
17398 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017399 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17401 {
17402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17406 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17407 &pBSSSes);
17408
Jeff Johnson295189b2012-06-20 16:38:30 -070017409 /*-----------------------------------------------------------------------
17410 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 -----------------------------------------------------------------------*/
17413 if ( NULL == pBSSSes )
17414 {
17415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17416 "Set link response received outside association session");
17417 }
17418 else
17419 {
17420 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17421 will be del BSS coming after this to stop the beaconing & cleaning up the
17422 sessions*/
17423 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17424 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17425 {
17426 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017427 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 -----------------------------------------------------------------------*/
17429 WDI_DeleteSession(pWDICtx, pBSSSes);
17430
17431 /*-----------------------------------------------------------------------
17432 Check to see if this association is in progress - if so disable the
17433 flag as this has ended
17434 -----------------------------------------------------------------------*/
17435 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 /*Association no longer in progress */
17438 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17439 /*Association no longer in progress - prepare pending assoc for processing*/
17440 WDI_DequeueAssocRequest(pWDICtx);
17441 }
17442 }
17443 }
17444 }
17445 /* If the link state has been set to POST ASSOC, reset the "association in
17446 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17449 {
17450 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17451 WDI_DequeueAssocRequest(pWDICtx);
17452 }
17453
17454 wpalMutexRelease(&pWDICtx->wptMutex);
17455
17456 /*-------------------------------------------------------------------------
17457 Extract response and send it to UMAC
17458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 wpalMemoryCopy( &halStatus,
17460 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017461 sizeof(halStatus));
17462
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017464
17465 /*Notify UMAC*/
17466 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17467
Jeff Johnsone7245742012-09-05 17:12:55 -070017468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017469}/*WDI_ProcessSetLinkStateRsp*/
17470
17471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017472 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017474
17475 @param pWDICtx: pointer to the WLAN DAL context
17476 pEventData: pointer to the event information structure
17477
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 @see
17479 @return Result of the function call
17480*/
17481WDI_Status
17482WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017483(
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 WDI_ControlBlockType* pWDICtx,
17485 WDI_EventInfoType* pEventData
17486)
17487{
17488 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17489 WDI_GetStatsRspCb wdiGetStatsRspCb;
17490 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017491
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17493
17494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 -------------------------------------------------------------------------*/
17497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17498 ( NULL == pEventData->pEventData))
17499 {
17500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017504 }
17505
17506 /*-------------------------------------------------------------------------
17507 Extract response and send it to UMAC
17508 -------------------------------------------------------------------------*/
17509 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17510
17511 /*allocate the stats response buffer */
17512 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17513 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17514 + sizeof(WDI_GetStatsRspParamsType));
17515
17516 if(NULL == wdiGetStatsRsp)
17517 {
17518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17519 "Failed to allocate memory in Get Stats Response %x %x %x ",
17520 pWDICtx, pEventData, pEventData->pEventData);
17521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 }
17524
17525 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17526
17527 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17528 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17529 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17530 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17531 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17532 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17533
17534 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17535 wpalMemoryCopy(wdiGetStatsRsp + 1,
17536 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17537 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17538
17539 /*Notify UMAC*/
17540 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17541
17542 wpalMemoryFree(wdiGetStatsRsp);
17543
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017545}/*WDI_ProcessGetStatsRsp*/
17546
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017547#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17548/**
17549 @brief Process Get Roam Rssi Rsp function (called when a response is
17550 being received over the bus from HAL)
17551
17552 @param pWDICtx: pointer to the WLAN DAL context
17553 pEventData: pointer to the event information structure
17554
17555 @see
17556 @return Result of the function call
17557*/
17558WDI_Status
17559WDI_ProcessGetRoamRssiRsp
17560(
17561 WDI_ControlBlockType* pWDICtx,
17562 WDI_EventInfoType* pEventData
17563)
17564{
17565 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17566 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17567 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17569
17570 /*-------------------------------------------------------------------------
17571 Sanity check
17572 -------------------------------------------------------------------------*/
17573 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17574 ( NULL == pEventData->pEventData))
17575 {
17576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17577 "%s: Invalid parameters", __func__);
17578 WDI_ASSERT(0);
17579 return WDI_STATUS_E_FAILURE;
17580 }
17581
17582 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17583 if(NULL == wdiGetRoamRssiRspCb)
17584 {
17585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17586 "%s: call back function is NULL", __func__);
17587 WDI_ASSERT(0);
17588 return WDI_STATUS_E_FAILURE;
17589 }
17590
17591 /*-------------------------------------------------------------------------
17592 Extract response and send it to UMAC
17593 -------------------------------------------------------------------------*/
17594 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17595 pEventData->pEventData,
17596 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17597
17598 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17599 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17600 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17601
17602 /*Notify UMAC*/
17603 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17604
17605 return WDI_STATUS_SUCCESS;
17606}/*WDI_ProcessGetRoamRssiRsp*/
17607#endif
17608
Jeff Johnson295189b2012-06-20 16:38:30 -070017609
17610/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017613
17614 @param pWDICtx: pointer to the WLAN DAL context
17615 pEventData: pointer to the event information structure
17616
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 @see
17618 @return Result of the function call
17619*/
17620WDI_Status
17621WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017622(
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 WDI_ControlBlockType* pWDICtx,
17624 WDI_EventInfoType* pEventData
17625)
17626{
17627 WDI_Status wdiStatus;
17628 eHalStatus halStatus;
17629 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17631
17632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017634 -------------------------------------------------------------------------*/
17635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17636 ( NULL == pEventData->pEventData))
17637 {
17638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 }
17643
17644 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17645
17646 /*-------------------------------------------------------------------------
17647 Extract response and send it to UMAC
17648 -------------------------------------------------------------------------*/
17649 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017651
17652 /*Notify UMAC*/
17653 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17654
Jeff Johnsone7245742012-09-05 17:12:55 -070017655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017656}/*WDI_ProcessUpdateCfgRsp*/
17657
17658
17659
17660/**
17661 @brief Process Add BA Rsp function (called when a response
17662 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017663
17664 @param pWDICtx: pointer to the WLAN DAL context
17665 pEventData: pointer to the event information structure
17666
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 @see
17668 @return Result of the function call
17669*/
17670WDI_Status
17671WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017672(
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 WDI_ControlBlockType* pWDICtx,
17674 WDI_EventInfoType* pEventData
17675)
17676{
17677 WDI_AddBARspCb wdiAddBARspCb;
17678
17679 tAddBARspParams halAddBARsp;
17680 WDI_AddBARspinfoType wdiAddBARsp;
17681
17682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17683
17684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 -------------------------------------------------------------------------*/
17687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17688 ( NULL == pEventData->pEventData))
17689 {
17690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 }
17695
17696 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17697
17698 /*-------------------------------------------------------------------------
17699 Extract response and send it to UMAC
17700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 wpalMemoryCopy( &halAddBARsp,
17702 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 sizeof(halAddBARsp));
17704
17705 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17706
Jeff Johnson43971f52012-07-17 12:26:56 -070017707 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 {
17709 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17710 }
17711
17712 /*Notify UMAC*/
17713 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17714
Jeff Johnsone7245742012-09-05 17:12:55 -070017715 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017716}/*WDI_ProcessAddSessionBARsp*/
17717
17718/**
17719 @brief Process Add BA Rsp function (called when a response
17720 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017721
17722 @param pWDICtx: pointer to the WLAN DAL context
17723 pEventData: pointer to the event information structure
17724
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 @see
17726 @return Result of the function call
17727*/
17728WDI_Status
17729WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017730(
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 WDI_ControlBlockType* pWDICtx,
17732 WDI_EventInfoType* pEventData
17733)
17734{
17735 WDI_TriggerBARspCb wdiTriggerBARspCb;
17736
17737 tTriggerBARspParams* halTriggerBARsp;
17738 tTriggerBaRspCandidate* halBaCandidate;
17739 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17740 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17741 wpt_uint16 index;
17742 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017743 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17745
17746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 -------------------------------------------------------------------------*/
17749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17750 ( NULL == pEventData->pEventData))
17751 {
17752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756 }
17757
17758 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17759
17760 /*-------------------------------------------------------------------------
17761 Extract response and send it to UMAC
17762 -------------------------------------------------------------------------*/
17763 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17764
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017765 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17766
17767 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17768 {
17769 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017772
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017773 if(NULL == wdiTriggerBARsp)
17774 {
17775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17776 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17777 pWDICtx, pEventData, pEventData->pEventData);
17778 WDI_ASSERT(0);
17779 return WDI_STATUS_E_FAILURE;
17780 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017781
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017782 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17783
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17787
17788 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17789 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17790
17791 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17792 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017793 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17795 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17796 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017797 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017798 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017799 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017800 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17801 }
17802 wdiTriggerBARspCandidate++;
17803 halBaCandidate++;
17804 }
17805 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017806 else
17807 {
17808 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17809
17810 if(NULL == wdiTriggerBARsp)
17811 {
17812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17813 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17814 pWDICtx, pEventData, pEventData->pEventData);
17815 WDI_ASSERT(0);
17816 return WDI_STATUS_E_FAILURE;
17817 }
17818
17819 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17820
17821 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017822
17823 /*Notify UMAC*/
17824 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17825
17826 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017828}/*WDI_ProcessAddSessionBARsp*/
17829
17830/**
17831 @brief Process Update Beacon Params Rsp function (called when a response
17832 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017833
17834 @param pWDICtx: pointer to the WLAN DAL context
17835 pEventData: pointer to the event information structure
17836
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 @see
17838 @return Result of the function call
17839*/
17840WDI_Status
17841WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017842(
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 WDI_ControlBlockType* pWDICtx,
17844 WDI_EventInfoType* pEventData
17845)
17846{
17847 WDI_Status wdiStatus;
17848 eHalStatus halStatus;
17849 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17851
17852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 -------------------------------------------------------------------------*/
17855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17856 ( NULL == pEventData->pEventData))
17857 {
17858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862 }
17863
17864 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17865
17866 /*-------------------------------------------------------------------------
17867 Extract response and send it to UMAC
17868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017869 wpalMemoryCopy( &halStatus,
17870 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 sizeof(halStatus));
17872
Jeff Johnsone7245742012-09-05 17:12:55 -070017873 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017874
17875 /*Notify UMAC*/
17876 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17877
Jeff Johnsone7245742012-09-05 17:12:55 -070017878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017879}/*WDI_ProcessUpdateBeaconParamsRsp*/
17880
17881/**
17882 @brief Process Send Beacon template Rsp function (called when a response
17883 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017884
17885 @param pWDICtx: pointer to the WLAN DAL context
17886 pEventData: pointer to the event information structure
17887
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 @see
17889 @return Result of the function call
17890*/
17891WDI_Status
17892WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017893(
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ControlBlockType* pWDICtx,
17895 WDI_EventInfoType* pEventData
17896)
17897{
17898 WDI_Status wdiStatus;
17899 eHalStatus halStatus;
17900 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17902
17903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 -------------------------------------------------------------------------*/
17906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17907 ( NULL == pEventData->pEventData))
17908 {
17909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 }
17914
17915 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17916
17917 /*-------------------------------------------------------------------------
17918 Extract response and send it to UMAC
17919 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 wpalMemoryCopy( &halStatus,
17921 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017922 sizeof(halStatus));
17923
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017925
17926 /*Notify UMAC*/
17927 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17928
Jeff Johnsone7245742012-09-05 17:12:55 -070017929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017930}/*WDI_ProcessSendBeaconParamsRsp*/
17931
Jeff Johnsone7245742012-09-05 17:12:55 -070017932
Jeff Johnson295189b2012-06-20 16:38:30 -070017933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017934 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017936
17937 @param pWDICtx: pointer to the WLAN DAL context
17938 pEventData: pointer to the event information structure
17939
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 @see
17941 @return Result of the function call
17942*/
17943WDI_Status
17944WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017945(
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 WDI_ControlBlockType* pWDICtx,
17947 WDI_EventInfoType* pEventData
17948)
17949{
17950 WDI_Status wdiStatus;
17951 eHalStatus halStatus;
17952 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17954
17955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 -------------------------------------------------------------------------*/
17958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17959 ( NULL == pEventData->pEventData))
17960 {
17961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 }
17966
17967 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17968
17969 /*-------------------------------------------------------------------------
17970 Extract response and send it to UMAC
17971 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 wpalMemoryCopy( &halStatus,
17973 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 sizeof(halStatus));
17975
Jeff Johnsone7245742012-09-05 17:12:55 -070017976 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017977
17978 /*Notify UMAC*/
17979 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17980
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017982}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17983
17984 /**
17985 @brief Process Set Max Tx Power Rsp function (called when a response
17986 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017987
17988 @param pWDICtx: pointer to the WLAN DAL context
17989 pEventData: pointer to the event information structure
17990
Jeff Johnson295189b2012-06-20 16:38:30 -070017991 @see
17992 @return Result of the function call
17993*/
17994WDI_Status
17995WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017996(
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 WDI_ControlBlockType* pWDICtx,
17998 WDI_EventInfoType* pEventData
17999)
18000{
18001 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018002
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018004
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18007
18008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 -------------------------------------------------------------------------*/
18011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18012 ( NULL == pEventData->pEventData))
18013 {
18014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 }
18019
18020 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18021
18022 /*-------------------------------------------------------------------------
18023 Extract response and send it to UMAC
18024 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18026 pEventData->pEventData,
18027 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018028
18029 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18030 {
18031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18032 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 }
18036
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018040
18041 /*Notify UMAC*/
18042 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18043
Jeff Johnsone7245742012-09-05 17:12:55 -070018044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018045}
18046
schangd82195a2013-03-13 18:41:24 -070018047 /**
18048 @brief Process Set Tx Power Rsp function (called when a response
18049 is being received over the bus from HAL)
18050
18051 @param pWDICtx: pointer to the WLAN DAL context
18052 pEventData: pointer to the event information structure
18053
18054 @see
18055 @return Result of the function call
18056*/
18057WDI_Status
18058WDI_ProcessSetTxPowerRsp
18059(
18060 WDI_ControlBlockType* pWDICtx,
18061 WDI_EventInfoType* pEventData
18062)
18063{
18064 tSetTxPwrRspMsg halTxpowerrsp;
18065 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18066 WDA_SetTxPowerRspCb wdiReqStatusCb;
18067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18068
18069 /*-------------------------------------------------------------------------
18070 Sanity check
18071 -------------------------------------------------------------------------*/
18072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18073 ( NULL == pEventData->pEventData))
18074 {
18075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18076 "%s: Invalid parameters", __func__);
18077 WDI_ASSERT(0);
18078 return WDI_STATUS_E_FAILURE;
18079 }
18080
18081 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18082
18083 /*-------------------------------------------------------------------------
18084 Extract response and send it to UMAC
18085 -------------------------------------------------------------------------*/
18086 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18087 pEventData->pEventData,
18088 sizeof(halTxpowerrsp.setTxPwrRspParams));
18089
18090 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18091 {
18092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18093 "Error status returned in Set Tx Power Response ");
18094 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18095 return WDI_STATUS_E_FAILURE;
18096 }
18097
18098 wdiSetTxPowerRspMsg.wdiStatus =
18099 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18100
18101 /*Notify UMAC*/
18102 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18103
18104 return WDI_STATUS_SUCCESS;
18105}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018106#ifdef FEATURE_WLAN_TDLS
18107/**
18108 @brief Process TDLS Link Establish Rsp function (called
18109 when a response is being received over the bus from HAL)
18110
18111 @param pWDICtx: pointer to the WLAN DAL context
18112 pEventData: pointer to the event information structure
18113
18114 @see
18115 @return Result of the function call
18116*/
18117WDI_Status
18118WDI_ProcessLinkEstablishReqRsp
18119(
18120 WDI_ControlBlockType* pWDICtx,
18121 WDI_EventInfoType* pEventData
18122)
18123{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018124 eHalStatus halStatus;
18125 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018126 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18127 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18128
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18130
18131 /*-------------------------------------------------------------------------
18132 Sanity check
18133 -------------------------------------------------------------------------*/
18134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18135 ( NULL == pEventData->pEventData))
18136 {
18137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18138 "%s: Invalid parameters", __func__);
18139 WDI_ASSERT(0);
18140 return WDI_STATUS_E_FAILURE;
18141 }
18142
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018143 /*-------------------------------------------------------------------------
18144 Extract indication and send it to UMAC
18145 -------------------------------------------------------------------------*/
18146 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18147 pEventData->pEventData,
18148 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18149
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018150 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18151
18152 /*-------------------------------------------------------------------------
18153 Extract response and send it to UMAC
18154 -------------------------------------------------------------------------*/
18155 wpalMemoryCopy( &halStatus,
18156 pEventData->pEventData,
18157 sizeof(halStatus));
18158
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018159 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18160 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018161
18162 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018163 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018164
18165 return WDI_STATUS_SUCCESS;
18166}/*WDI_ProcessLinkEstablishReqRsp*/
18167#endif
schangd82195a2013-03-13 18:41:24 -070018168
Jeff Johnson295189b2012-06-20 16:38:30 -070018169/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018172
18173 @param pWDICtx: pointer to the WLAN DAL context
18174 pEventData: pointer to the event information structure
18175
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 @see
18177 @return Result of the function call
18178*/
18179WDI_Status
18180WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018181(
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 WDI_ControlBlockType* pWDICtx,
18183 WDI_EventInfoType* pEventData
18184)
18185{
18186 WDI_Status wdiStatus;
18187 eHalStatus halStatus;
18188 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18190
18191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 -------------------------------------------------------------------------*/
18194 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18195 ( NULL == pEventData->pEventData))
18196 {
18197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 }
18202
18203 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18204
18205 /*-------------------------------------------------------------------------
18206 Extract response and send it to UMAC
18207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 wpalMemoryCopy( &halStatus,
18209 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 sizeof(halStatus));
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018213
18214 /*Notify UMAC*/
18215 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18216
Jeff Johnsone7245742012-09-05 17:12:55 -070018217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018218}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018222
18223 @param pWDICtx: pointer to the WLAN DAL context
18224 pEventData: pointer to the event information structure
18225
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 @see
18227 @return Result of the function call
18228*/
18229WDI_Status
18230WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018231(
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 WDI_ControlBlockType* pWDICtx,
18233 WDI_EventInfoType* pEventData
18234)
18235{
18236 WDI_Status wdiStatus;
18237 eHalStatus halStatus;
18238 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018239 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18241
18242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018244 -------------------------------------------------------------------------*/
18245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18246 ( NULL == pEventData->pEventData))
18247 {
18248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018252 }
18253
18254 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18255
18256 /*-------------------------------------------------------------------------
18257 Extract response and send it to UMAC
18258 -------------------------------------------------------------------------*/
18259 halStatus = *((eHalStatus*)pEventData->pEventData);
18260
Jeff Johnsone7245742012-09-05 17:12:55 -070018261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018262
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018263 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18264 * Other module states are taken care by PMC.
18265 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18266 */
18267 if (wdiStatus != WDI_STATUS_SUCCESS) {
18268
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18270 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18271 halStatus);
18272 /* Call Back is not required as we are putting the DXE in FULL
18273 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018274 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18275
18276 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18278 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18279 WDI_ASSERT(0);
18280 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018281 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 /*Notify UMAC*/
18283 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18284
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018286}/*WDI_ProcessEnterImpsRsp*/
18287
18288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018289 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018291
18292 @param pWDICtx: pointer to the WLAN DAL context
18293 pEventData: pointer to the event information structure
18294
Jeff Johnson295189b2012-06-20 16:38:30 -070018295 @see
18296 @return Result of the function call
18297*/
18298WDI_Status
18299WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018300(
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 WDI_ControlBlockType* pWDICtx,
18302 WDI_EventInfoType* pEventData
18303)
18304{
18305 WDI_Status wdiStatus;
18306 eHalStatus halStatus;
18307 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018308 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18310
18311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 -------------------------------------------------------------------------*/
18314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18315 ( NULL == pEventData->pEventData))
18316 {
18317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 }
18322
18323 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18324
18325 /*-------------------------------------------------------------------------
18326 Extract response and send it to UMAC
18327 -------------------------------------------------------------------------*/
18328 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018329 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018330
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018331 if (halStatus != eHAL_STATUS_SUCCESS)
18332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18333 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18334
Jeff Johnson295189b2012-06-20 16:38:30 -070018335 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018336 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18337 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18338 {
18339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18340 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18341 WDI_ASSERT(0);
18342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018343 /*Notify UMAC*/
18344 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18345
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347}/*WDI_ProcessExitImpsRsp*/
18348
18349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018350 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018352
18353 @param pWDICtx: pointer to the WLAN DAL context
18354 pEventData: pointer to the event information structure
18355
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 @see
18357 @return Result of the function call
18358*/
18359WDI_Status
18360WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018361(
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 WDI_ControlBlockType* pWDICtx,
18363 WDI_EventInfoType* pEventData
18364)
18365{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018366 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18367 tHalEnterBmpsRspParams halEnterBmpsRsp;
18368 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18369 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018370 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18372
18373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018375 -------------------------------------------------------------------------*/
18376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18377 ( NULL == pEventData->pEventData))
18378 {
18379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018383 }
18384
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018386 Extract response and send it to UMAC
18387 -------------------------------------------------------------------------*/
18388 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18389 {
18390 wpalMemoryCopy( &halEnterBmpsRsp,
18391 pEventData->pEventData,
18392 sizeof(halEnterBmpsRsp));
18393
18394 //Used to print debug message
18395 halStatus = halEnterBmpsRsp.status;
18396 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18397 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18398 }
18399 else
18400 {
18401 halStatus = *((eHalStatus*)pEventData->pEventData);
18402 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18403 }
18404
18405 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018406
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018407 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18408 * Other module states are taken care by PMC.
18409 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18410 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018411 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18412 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018413
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018415 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18416 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018417 /* Call Back is not required as we are putting the DXE in FULL
18418 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018419 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18420 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18421 {
18422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18423 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18424 WDI_ASSERT(0);
18425 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018426 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018427 }
18428
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018430 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018431
Jeff Johnsone7245742012-09-05 17:12:55 -070018432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018433}/*WDI_ProcessEnterBmpsRsp*/
18434
18435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018436 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018438
18439 @param pWDICtx: pointer to the WLAN DAL context
18440 pEventData: pointer to the event information structure
18441
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 @see
18443 @return Result of the function call
18444*/
18445WDI_Status
18446WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018447(
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 WDI_ControlBlockType* pWDICtx,
18449 WDI_EventInfoType* pEventData
18450)
18451{
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 eHalStatus halStatus;
18453 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018454 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018455 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18456 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18458
18459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 -------------------------------------------------------------------------*/
18462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18463 ( NULL == pEventData->pEventData))
18464 {
18465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 }
18470
18471 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18472
18473 /*-------------------------------------------------------------------------
18474 Extract response and send it to UMAC
18475 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018476
18477 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18478 {
18479 wpalMemoryCopy( &halExitBmpsRsp,
18480 pEventData->pEventData,
18481 sizeof(halExitBmpsRsp));
18482
18483 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18484 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18485 }
18486 else
18487 {
18488 halStatus = *((eHalStatus*)pEventData->pEventData);
18489 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18490 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018491
18492 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018493 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18494 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18495 {
18496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18497 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18498 WDI_ASSERT(0);
18499 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18501
18502 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018503 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018504
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506}/*WDI_ProcessExitBmpsRsp*/
18507
18508/**
18509 @brief Process Enter UAPSD Rsp function (called when a response
18510 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018511
18512 @param pWDICtx: pointer to the WLAN DAL context
18513 pEventData: pointer to the event information structure
18514
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 @see
18516 @return Result of the function call
18517*/
18518WDI_Status
18519WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018520(
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 WDI_ControlBlockType* pWDICtx,
18522 WDI_EventInfoType* pEventData
18523)
18524{
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018526 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018527 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018528 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18529
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18531
18532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 -------------------------------------------------------------------------*/
18535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18536 ( NULL == pEventData->pEventData))
18537 {
18538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 }
18543
18544 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18545
18546 /*-------------------------------------------------------------------------
18547 Extract response and send it to UMAC
18548 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018549 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18550 {
18551 wpalMemoryCopy( &halEnterUapsdRsp,
18552 pEventData->pEventData,
18553 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018554
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018555 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18556 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18557 }
18558 else
18559 {
18560 halStatus = *((eHalStatus*)pEventData->pEventData);
18561 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18562 }
18563
18564 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 {
18566 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18567 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18568 // the traffic to decide when to suspend the trigger frames when there is no traffic
18569 // activity on the trigger enabled ACs
18570 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18571
18572#ifdef WLAN_PERF
18573 // Increment the BD signature to refresh the fast path BD utilization
18574 pWDICtx->uBdSigSerialNum++;
18575#endif
18576 }
18577
18578 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018579 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018580
Jeff Johnsone7245742012-09-05 17:12:55 -070018581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018582}/*WDI_ProcessEnterUapsdRsp*/
18583
18584/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018585 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018587
18588 @param pWDICtx: pointer to the WLAN DAL context
18589 pEventData: pointer to the event information structure
18590
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 @see
18592 @return Result of the function call
18593*/
18594WDI_Status
18595WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018596(
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 WDI_ControlBlockType* pWDICtx,
18598 WDI_EventInfoType* pEventData
18599)
18600{
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 eHalStatus halStatus;
18602 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018603 tHalExitUapsdRspParams halExitUapsdRsp;
18604 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18606
18607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 -------------------------------------------------------------------------*/
18610 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18611 ( NULL == pEventData->pEventData))
18612 {
18613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 }
18618
18619 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18620
18621 /*-------------------------------------------------------------------------
18622 Extract response and send it to UMAC
18623 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018624 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18625 {
18626 wpalMemoryCopy( &halExitUapsdRsp,
18627 pEventData->pEventData,
18628 sizeof(halExitUapsdRsp));
18629
18630 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18631 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18632 }
18633 else
18634 {
18635 halStatus = *((eHalStatus*)pEventData->pEventData);
18636 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18637 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18639 // directly instead of the FW WQ.
18640 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18641
18642#ifdef WLAN_PERF
18643 // Increment the BD signature to refresh the fast path BD utilization
18644 pWDICtx->uBdSigSerialNum++;
18645#endif
18646
18647 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018648 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018649
Jeff Johnsone7245742012-09-05 17:12:55 -070018650 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018651}/*WDI_ProcessExitUapsdRsp*/
18652
18653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018656
18657 @param pWDICtx: pointer to the WLAN DAL context
18658 pEventData: pointer to the event information structure
18659
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 @see
18661 @return Result of the function call
18662*/
18663WDI_Status
18664WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018665(
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 WDI_ControlBlockType* pWDICtx,
18667 WDI_EventInfoType* pEventData
18668)
18669{
18670 WDI_Status wdiStatus;
18671 eHalStatus halStatus;
18672 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18674
18675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 -------------------------------------------------------------------------*/
18678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18679 ( NULL == pEventData->pEventData))
18680 {
18681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 }
18686
18687 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18688
18689 /*-------------------------------------------------------------------------
18690 Extract response and send it to UMAC
18691 -------------------------------------------------------------------------*/
18692 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018694
18695 /*Notify UMAC*/
18696 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18697
Jeff Johnsone7245742012-09-05 17:12:55 -070018698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018699}/*WDI_ProcessSetUapsdAcParamsRsp*/
18700
18701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018704
18705 @param pWDICtx: pointer to the WLAN DAL context
18706 pEventData: pointer to the event information structure
18707
Jeff Johnson295189b2012-06-20 16:38:30 -070018708 @see
18709 @return Result of the function call
18710*/
18711WDI_Status
18712WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018713(
Jeff Johnson295189b2012-06-20 16:38:30 -070018714 WDI_ControlBlockType* pWDICtx,
18715 WDI_EventInfoType* pEventData
18716)
18717{
18718 WDI_Status wdiStatus;
18719 eHalStatus halStatus;
18720 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18722
18723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 -------------------------------------------------------------------------*/
18726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18727 ( NULL == pEventData->pEventData))
18728 {
18729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 }
18734
18735 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18736
18737 /*-------------------------------------------------------------------------
18738 Extract response and send it to UMAC
18739 -------------------------------------------------------------------------*/
18740 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018742
18743 /*Notify UMAC*/
18744 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18745
Jeff Johnsone7245742012-09-05 17:12:55 -070018746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018747}/*WDI_ProcessUpdateUapsdParamsRsp*/
18748
18749/**
18750 @brief Process Configure RXP filter Rsp function (called when a
18751 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018752
18753 @param pWDICtx: pointer to the WLAN DAL context
18754 pEventData: pointer to the event information structure
18755
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 @see
18757 @return Result of the function call
18758*/
18759WDI_Status
18760WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018761(
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 WDI_ControlBlockType* pWDICtx,
18763 WDI_EventInfoType* pEventData
18764)
18765{
18766 WDI_Status wdiStatus;
18767 eHalStatus halStatus;
18768 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18770
18771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018773 -------------------------------------------------------------------------*/
18774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18775 ( NULL == pEventData->pEventData))
18776 {
18777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018781 }
18782
18783 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18784
18785 /*-------------------------------------------------------------------------
18786 Extract response and send it to UMAC
18787 -------------------------------------------------------------------------*/
18788 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018790
18791 /*Notify UMAC*/
18792 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18793
Jeff Johnsone7245742012-09-05 17:12:55 -070018794 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018795}/*WDI_ProcessConfigureRxpFilterRsp*/
18796
18797/**
18798 @brief Process Set beacon filter Rsp function (called when a
18799 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018800
18801 @param pWDICtx: pointer to the WLAN DAL context
18802 pEventData: pointer to the event information structure
18803
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 @see
18805 @return Result of the function call
18806*/
18807WDI_Status
18808WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018809(
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 WDI_ControlBlockType* pWDICtx,
18811 WDI_EventInfoType* pEventData
18812)
18813{
18814 WDI_Status wdiStatus;
18815 eHalStatus halStatus;
18816 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18818
18819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 -------------------------------------------------------------------------*/
18822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18823 ( NULL == pEventData->pEventData))
18824 {
18825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 }
18830
18831 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18832
18833 /*-------------------------------------------------------------------------
18834 Extract response and send it to UMAC
18835 -------------------------------------------------------------------------*/
18836 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018837 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018838
18839 /*Notify UMAC*/
18840 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18841
Jeff Johnsone7245742012-09-05 17:12:55 -070018842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018843}/*WDI_ProcessSetBeaconFilterRsp*/
18844
18845/**
18846 @brief Process remove beacon filter Rsp function (called when a
18847 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018848
18849 @param pWDICtx: pointer to the WLAN DAL context
18850 pEventData: pointer to the event information structure
18851
Jeff Johnson295189b2012-06-20 16:38:30 -070018852 @see
18853 @return Result of the function call
18854*/
18855WDI_Status
18856WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018857(
Jeff Johnson295189b2012-06-20 16:38:30 -070018858 WDI_ControlBlockType* pWDICtx,
18859 WDI_EventInfoType* pEventData
18860)
18861{
18862 WDI_Status wdiStatus;
18863 eHalStatus halStatus;
18864 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18866
18867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 -------------------------------------------------------------------------*/
18870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18871 ( NULL == pEventData->pEventData))
18872 {
18873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 }
18878
18879 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18880
18881 /*-------------------------------------------------------------------------
18882 Extract response and send it to UMAC
18883 -------------------------------------------------------------------------*/
18884 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018885 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018886
18887 /*Notify UMAC*/
18888 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18889
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018891}/*WDI_ProcessRemBeaconFilterRsp*/
18892
18893/**
18894 @brief Process set RSSI thresholds Rsp function (called when a
18895 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018896
18897 @param pWDICtx: pointer to the WLAN DAL context
18898 pEventData: pointer to the event information structure
18899
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 @see
18901 @return Result of the function call
18902*/
18903WDI_Status
18904WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018905(
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 WDI_ControlBlockType* pWDICtx,
18907 WDI_EventInfoType* pEventData
18908)
18909{
18910 WDI_Status wdiStatus;
18911 eHalStatus halStatus;
18912 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18914
18915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 -------------------------------------------------------------------------*/
18918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18919 ( NULL == pEventData->pEventData))
18920 {
18921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 }
18926
18927 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18928
18929 /*-------------------------------------------------------------------------
18930 Extract response and send it to UMAC
18931 -------------------------------------------------------------------------*/
18932 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018933 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018934
18935 /*Notify UMAC*/
18936 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18937
Jeff Johnsone7245742012-09-05 17:12:55 -070018938 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018939}/*WDI_ProcessSetRSSIThresoldsRsp*/
18940
18941/**
18942 @brief Process host offload Rsp function (called when a
18943 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018944
18945 @param pWDICtx: pointer to the WLAN DAL context
18946 pEventData: pointer to the event information structure
18947
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 @see
18949 @return Result of the function call
18950*/
18951WDI_Status
18952WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018953(
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 WDI_ControlBlockType* pWDICtx,
18955 WDI_EventInfoType* pEventData
18956)
18957{
18958 WDI_Status wdiStatus;
18959 eHalStatus halStatus;
18960 WDI_HostOffloadCb wdiHostOffloadCb;
18961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18962
18963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 -------------------------------------------------------------------------*/
18966 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18967 ( NULL == pEventData->pEventData))
18968 {
18969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018970 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 }
18974
18975 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18976
18977 /*-------------------------------------------------------------------------
18978 Extract response and send it to UMAC
18979 -------------------------------------------------------------------------*/
18980 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018982
18983 /*Notify UMAC*/
18984 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18985
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018987}/*WDI_ProcessHostOffloadRsp*/
18988
18989/**
18990 @brief Process keep alive Rsp function (called when a
18991 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018992
18993 @param pWDICtx: pointer to the WLAN DAL context
18994 pEventData: pointer to the event information structure
18995
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 @see
18997 @return Result of the function call
18998*/
18999WDI_Status
19000WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019001(
Jeff Johnson295189b2012-06-20 16:38:30 -070019002 WDI_ControlBlockType* pWDICtx,
19003 WDI_EventInfoType* pEventData
19004)
19005{
19006 WDI_Status wdiStatus;
19007 eHalStatus halStatus;
19008 WDI_KeepAliveCb wdiKeepAliveCb;
19009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19011 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19012
19013
19014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 -------------------------------------------------------------------------*/
19017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19018 ( NULL == pEventData->pEventData))
19019 {
19020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 }
19025
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19027
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 /*-------------------------------------------------------------------------
19029 Extract response and send it to UMAC
19030 -------------------------------------------------------------------------*/
19031 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019033
19034 /*Notify UMAC*/
19035 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19036
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019038}/*WDI_ProcessKeepAliveRsp*/
19039
19040/**
19041 @brief Process wowl add ptrn Rsp function (called when a
19042 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019043
19044 @param pWDICtx: pointer to the WLAN DAL context
19045 pEventData: pointer to the event information structure
19046
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 @see
19048 @return Result of the function call
19049*/
19050WDI_Status
19051WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019052(
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 WDI_ControlBlockType* pWDICtx,
19054 WDI_EventInfoType* pEventData
19055)
19056{
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 eHalStatus halStatus;
19058 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019059 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19060 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19061
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19063
19064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 -------------------------------------------------------------------------*/
19067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19068 ( NULL == pEventData->pEventData))
19069 {
19070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 }
19075
19076 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19077
19078 /*-------------------------------------------------------------------------
19079 Extract response and send it to UMAC
19080 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019081 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19082 {
19083 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19084 pEventData->pEventData,
19085 sizeof(halAddWowlBcastPtrRsp));
19086
19087 wdiWowlAddBcPtrRsp.wdiStatus =
19088 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19089 }
19090 else
19091 {
19092 halStatus = *((eHalStatus*)pEventData->pEventData);
19093 wdiWowlAddBcPtrRsp.wdiStatus =
19094 WDI_HAL_2_WDI_STATUS(halStatus);
19095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019096
19097 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019098 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019099
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019101}/*WDI_ProcessWowlAddBcPtrnRsp*/
19102
19103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019104 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019106
19107 @param pWDICtx: pointer to the WLAN DAL context
19108 pEventData: pointer to the event information structure
19109
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 @see
19111 @return Result of the function call
19112*/
19113WDI_Status
19114WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019115(
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 WDI_ControlBlockType* pWDICtx,
19117 WDI_EventInfoType* pEventData
19118)
19119{
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 eHalStatus halStatus;
19121 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019122 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19123 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19125
19126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 -------------------------------------------------------------------------*/
19129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19130 ( NULL == pEventData->pEventData))
19131 {
19132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 }
19137
19138 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19139
19140 /*-------------------------------------------------------------------------
19141 Extract response and send it to UMAC
19142 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019143 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19144 {
19145 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19146 pEventData->pEventData,
19147 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019148
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019149 wdiWowlDelBcstPtrRsp.wdiStatus =
19150 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19151 }
19152 else
19153 {
19154 halStatus = *((eHalStatus*)pEventData->pEventData);
19155 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19156 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019158 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019159
Jeff Johnsone7245742012-09-05 17:12:55 -070019160 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019161}/*WDI_ProcessWowlDelBcPtrnRsp*/
19162
19163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019164 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019166
19167 @param pWDICtx: pointer to the WLAN DAL context
19168 pEventData: pointer to the event information structure
19169
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 @see
19171 @return Result of the function call
19172*/
19173WDI_Status
19174WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019175(
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 WDI_ControlBlockType* pWDICtx,
19177 WDI_EventInfoType* pEventData
19178)
19179{
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 eHalStatus halStatus;
19181 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019182 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19183 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19185
19186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 -------------------------------------------------------------------------*/
19189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19190 ( NULL == pEventData->pEventData))
19191 {
19192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 }
19197
19198 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19199
19200 /*-------------------------------------------------------------------------
19201 Extract response and send it to UMAC
19202 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019203 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19204 {
19205 wpalMemoryCopy( &halEnterWowlRspParams,
19206 (wpt_uint8*)pEventData->pEventData,
19207 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019208
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019209 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19210 wdiwowlEnterRsp.status =
19211 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19212 }
19213 else
19214 {
19215 halStatus = *((eHalStatus*)pEventData->pEventData);
19216 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19217 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019219 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019220
Jeff Johnsone7245742012-09-05 17:12:55 -070019221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019222}/*WDI_ProcessWowlEnterRsp*/
19223
19224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019227
19228 @param pWDICtx: pointer to the WLAN DAL context
19229 pEventData: pointer to the event information structure
19230
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 @see
19232 @return Result of the function call
19233*/
19234WDI_Status
19235WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019236(
Jeff Johnson295189b2012-06-20 16:38:30 -070019237 WDI_ControlBlockType* pWDICtx,
19238 WDI_EventInfoType* pEventData
19239)
19240{
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 eHalStatus halStatus;
19242 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019243 tHalExitWowlRspParams halExitWowlRspParams;
19244 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19245
Jeff Johnson295189b2012-06-20 16:38:30 -070019246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19247
19248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 -------------------------------------------------------------------------*/
19251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19252 ( NULL == pEventData->pEventData))
19253 {
19254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 }
19259
19260 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19261
19262 /*-------------------------------------------------------------------------
19263 Extract response and send it to UMAC
19264 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019265 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19266 {
19267 wpalMemoryCopy( &halExitWowlRspParams,
19268 pEventData->pEventData,
19269 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019270
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019271 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19272 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19273
19274 }
19275 else
19276 {
19277 halStatus = *((eHalStatus*)pEventData->pEventData);
19278 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19279 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019281 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019282
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019284}/*WDI_ProcessWowlExitRsp*/
19285
19286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019287 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 (called when a response is being received over the bus
19289 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019290
19291 @param pWDICtx: pointer to the WLAN DAL context
19292 pEventData: pointer to the event information structure
19293
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 @see
19295 @return Result of the function call
19296*/
19297WDI_Status
19298WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019299(
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 WDI_ControlBlockType* pWDICtx,
19301 WDI_EventInfoType* pEventData
19302)
19303{
19304 WDI_Status wdiStatus;
19305 eHalStatus halStatus;
19306 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19308
19309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 -------------------------------------------------------------------------*/
19312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19313 ( NULL == pEventData->pEventData))
19314 {
19315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 }
19320
19321 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19322
19323 /*-------------------------------------------------------------------------
19324 Extract response and send it to UMAC
19325 -------------------------------------------------------------------------*/
19326 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019328
19329 /*Notify UMAC*/
19330 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19331
Jeff Johnsone7245742012-09-05 17:12:55 -070019332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019333}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19334
19335
19336/**
19337 @brief Process Nv download(called when a response
19338 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019339
19340 @param pWDICtx: pointer to the WLAN DAL context
19341 pEventData: pointer to the event information structure
19342
Jeff Johnson295189b2012-06-20 16:38:30 -070019343 @see
19344 @return Result of the function call
19345*/
19346WDI_Status
19347WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019348(
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 WDI_ControlBlockType* pWDICtx,
19350 WDI_EventInfoType* pEventData
19351)
19352{
19353
19354 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19355 tHalNvImgDownloadRspParams halNvDownloadRsp;
19356 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19357
19358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 -------------------------------------------------------------------------*/
19361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19362 ( NULL == pEventData->pEventData))
19363 {
19364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 }
19369
19370 /*-------------------------------------------------------------------------
19371 Extract response and send it to UMAC
19372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 wpalMemoryCopy( &halNvDownloadRsp,
19374 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 sizeof(halNvDownloadRsp));
19376
19377 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19378
19379 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019380 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19381 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 {
19383 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 }
19386 else
19387 {
19388 /*Reset the Nv related global information in WDI context information */
19389 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19390 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19391 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19392 /*call WDA callback function for last fragment */
19393 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19394 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19395 }
19396
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019398}
19399#ifdef WLAN_FEATURE_VOWIFI_11R
19400/**
19401 @brief Process Add TSpec Rsp function (called when a response
19402 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019403
19404 @param pWDICtx: pointer to the WLAN DAL context
19405 pEventData: pointer to the event information structure
19406
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 @see
19408 @return Result of the function call
19409*/
19410WDI_Status
19411WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019412(
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 WDI_ControlBlockType* pWDICtx,
19414 WDI_EventInfoType* pEventData
19415)
19416{
19417 WDI_Status wdiStatus;
19418 tAggrAddTsRspParams aggrAddTsRsp;
19419 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19421
19422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 -------------------------------------------------------------------------*/
19425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19426 ( NULL == pEventData->pEventData))
19427 {
19428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019432 }
19433
19434 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19435
19436 /*-------------------------------------------------------------------------
19437 Extract response and send it to UMAC
19438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019439 wpalMemoryCopy( &aggrAddTsRsp,
19440 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 sizeof(aggrAddTsRsp));
19442
19443 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019444 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019445
19446 /*Notify UMAC*/
19447 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19448
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019450}/*WDI_ProcessAddTSpecRsp*/
19451#endif /* WLAN_FEATURE_VOWIFI_11R */
19452
19453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019454 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019456
19457 @param pWDICtx: pointer to the WLAN DAL context
19458 pEventData: pointer to the event information structure
19459
Jeff Johnson295189b2012-06-20 16:38:30 -070019460 @see
19461 @return Result of the function call
19462*/
19463WDI_Status
19464WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019465(
Jeff Johnson295189b2012-06-20 16:38:30 -070019466 WDI_ControlBlockType* pWDICtx,
19467 WDI_EventInfoType* pEventData
19468)
19469{
19470 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19471 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19472 tHalHostResumeRspParams hostResumeRspMsg;
19473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19474
19475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 -------------------------------------------------------------------------*/
19478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19479 ( NULL == pEventData->pEventData))
19480 {
19481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 }
19486
19487 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19488
19489 /*-------------------------------------------------------------------------
19490 Extract response and send it to UMAC
19491 -------------------------------------------------------------------------*/
19492
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 (wpt_uint8*)pEventData->pEventData,
19495 sizeof(hostResumeRspMsg));
19496
Jeff Johnsone7245742012-09-05 17:12:55 -070019497 wdiResumeRspParams.wdiStatus =
19498 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019499
19500 /*Notify UMAC*/
19501 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19502
19503 return WDI_STATUS_SUCCESS;
19504}
19505
19506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019509
19510 @param pWDICtx: pointer to the WLAN DAL context
19511 pEventData: pointer to the event information structure
19512
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 @see
19514 @return Result of the function call
19515*/
19516WDI_Status
19517WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019518(
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 WDI_ControlBlockType* pWDICtx,
19520 WDI_EventInfoType* pEventData
19521)
19522{
19523 WDI_Status wdiStatus;
19524 eHalStatus halStatus;
19525 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19527
19528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 -------------------------------------------------------------------------*/
19531 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19532 ( NULL == pEventData->pEventData))
19533 {
19534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019539
19540 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019541
19542 /*-------------------------------------------------------------------------
19543 Extract response and send it to UMAC
19544 -------------------------------------------------------------------------*/
19545 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019547
19548 /*Notify UMAC*/
19549 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19550
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019552}/*WDI_ProcessSetTxPerTrackingRsp*/
19553
19554/*==========================================================================
19555 Indications from HAL
19556 ==========================================================================*/
19557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019559 indication of this kind is being received over the bus
19560 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019561
19562 @param pWDICtx: pointer to the WLAN DAL context
19563 pEventData: pointer to the event information structure
19564
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 @see
19566 @return Result of the function call
19567*/
19568WDI_Status
19569WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019570(
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 WDI_ControlBlockType* pWDICtx,
19572 WDI_EventInfoType* pEventData
19573)
19574{
19575 WDI_LowLevelIndType wdiInd;
19576 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19578
19579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 -------------------------------------------------------------------------*/
19582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19583 ( NULL == pEventData->pEventData))
19584 {
19585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 }
19590
19591 /*-------------------------------------------------------------------------
19592 Extract indication and send it to UMAC
19593 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19595 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 sizeof(tHalRSSINotification));
19597
19598 /*Fill in the indication parameters*/
19599 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19600 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19601 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19602 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19603 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19604 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19605 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19606 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19607 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19608 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19609 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19610 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19611 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019612 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19613 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019614
ltimariu034f7d62013-01-24 18:54:33 -080019615 if ( pWDICtx->wdiLowLevelIndCB )
19616 {
19617 /*Notify UMAC of indication*/
19618 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19619 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019620
19621 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019622}/*WDI_ProcessLowRSSIInd*/
19623
19624
19625/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019627 an indication of this kind is being received over the
19628 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019629
19630 @param pWDICtx: pointer to the WLAN DAL context
19631 pEventData: pointer to the event information structure
19632
Jeff Johnson295189b2012-06-20 16:38:30 -070019633 @see
19634 @return Result of the function call
19635*/
19636WDI_Status
19637WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019638(
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 WDI_ControlBlockType* pWDICtx,
19640 WDI_EventInfoType* pEventData
19641)
19642{
19643 WDI_Status wdiStatus;
19644 eHalStatus halStatus;
19645 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019646 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19648
19649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 -------------------------------------------------------------------------*/
19652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19653 ( NULL == pEventData->pEventData))
19654 {
19655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019660 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 /*-------------------------------------------------------------------------
19662 Extract indication and send it to UMAC
19663 -------------------------------------------------------------------------*/
19664 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19665 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019666 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019667
19668 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019670 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19671 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019672 if ( pWDICtx->wdiLowLevelIndCB )
19673 {
19674 /*Notify UMAC*/
19675 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19676 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019677
19678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019679}/*WDI_ProcessMissedBeaconInd*/
19680
19681
19682/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019683 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019684 an indication of this kind is being received over the
19685 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019686
19687 @param pWDICtx: pointer to the WLAN DAL context
19688 pEventData: pointer to the event information structure
19689
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 @see
19691 @return Result of the function call
19692*/
19693WDI_Status
19694WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019695(
Jeff Johnson295189b2012-06-20 16:38:30 -070019696 WDI_ControlBlockType* pWDICtx,
19697 WDI_EventInfoType* pEventData
19698)
19699{
19700 WDI_Status wdiStatus;
19701 eHalStatus halStatus;
19702 WDI_LowLevelIndType wdiInd;
19703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19704
19705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 -------------------------------------------------------------------------*/
19708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19709 ( NULL == pEventData->pEventData))
19710 {
19711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 }
19716
19717 /*-------------------------------------------------------------------------
19718 Extract indication and send it to UMAC
19719 -------------------------------------------------------------------------*/
19720 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19721 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019723
19724 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 /* ! TO DO - fill in from HAL struct:
19727 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19728
ltimariu034f7d62013-01-24 18:54:33 -080019729 if ( pWDICtx->wdiLowLevelIndCB )
19730 {
19731 /*Notify UMAC*/
19732 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19733 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019734
19735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019736}/*WDI_ProcessUnkAddrFrameInd*/
19737
19738
19739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 indication of this kind is being received over the bus
19742 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019743
19744 @param pWDICtx: pointer to the WLAN DAL context
19745 pEventData: pointer to the event information structure
19746
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 @see
19748 @return Result of the function call
19749*/
19750WDI_Status
19751WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019752(
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 WDI_ControlBlockType* pWDICtx,
19754 WDI_EventInfoType* pEventData
19755)
19756{
19757 WDI_LowLevelIndType wdiInd;
19758 tpSirMicFailureInd pHalMicFailureInd;
19759
19760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19761
19762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019764 -------------------------------------------------------------------------*/
19765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19766 ( NULL == pEventData->pEventData))
19767 {
19768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019773
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19775 /*-------------------------------------------------------------------------
19776 Extract indication and send it to UMAC
19777 -------------------------------------------------------------------------*/
19778
19779 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019780 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19782 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19783 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19784 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19785 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19786 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19787 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19788 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019789 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019791 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019793 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 pHalMicFailureInd->info.keyId;
19795 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19796 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19797 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19798 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019799
19800 if ( pWDICtx->wdiLowLevelIndCB )
19801 {
19802 /*Notify UMAC*/
19803 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19804 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019805
19806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019807}/*WDI_ProcessMicFailureInd*/
19808
19809
19810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019811 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019812 an indication of this kind is being received over the
19813 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019814
19815 @param pWDICtx: pointer to the WLAN DAL context
19816 pEventData: pointer to the event information structure
19817
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 @see
19819 @return Result of the function call
19820*/
19821WDI_Status
19822WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019823(
Jeff Johnson295189b2012-06-20 16:38:30 -070019824 WDI_ControlBlockType* pWDICtx,
19825 WDI_EventInfoType* pEventData
19826)
19827{
19828 WDI_Status wdiStatus;
19829 eHalStatus halStatus;
19830 WDI_LowLevelIndType wdiInd;
19831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19832
19833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 -------------------------------------------------------------------------*/
19836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19837 ( NULL == pEventData->pEventData))
19838 {
19839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 }
19844
19845 /*-------------------------------------------------------------------------
19846 Extract indication and send it to UMAC
19847 -------------------------------------------------------------------------*/
19848
19849 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19850 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019852
19853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19854 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019855
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19858 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019859
ltimariu034f7d62013-01-24 18:54:33 -080019860 if ( pWDICtx->wdiLowLevelIndCB )
19861 {
19862 /*Notify UMAC*/
19863 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19864 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019865
19866 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019867}/*WDI_ProcessFatalErrorInd*/
19868
19869/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 an indication of this kind is being received over the
19872 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019873
19874 @param pWDICtx: pointer to the WLAN DAL context
19875 pEventData: pointer to the event information structure
19876
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 @see
19878 @return Result of the function call
19879*/
19880WDI_Status
19881WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019882(
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 WDI_ControlBlockType* pWDICtx,
19884 WDI_EventInfoType* pEventData
19885)
19886{
19887 tDeleteStaContextParams halDelSTACtx;
19888 WDI_LowLevelIndType wdiInd;
19889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19890
19891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 -------------------------------------------------------------------------*/
19894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19895 ( NULL == pEventData->pEventData))
19896 {
19897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019901 }
19902
19903 /*-------------------------------------------------------------------------
19904 Extract indication and send it to UMAC
19905 -------------------------------------------------------------------------*/
19906
19907 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 wpalMemoryCopy( &halDelSTACtx,
19909 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 sizeof(halDelSTACtx));
19911
19912 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019914
19915 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19916 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19917 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19918 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19919
Jeff Johnsone7245742012-09-05 17:12:55 -070019920 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19925 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019926
ltimariu034f7d62013-01-24 18:54:33 -080019927 if ( pWDICtx->wdiLowLevelIndCB )
19928 {
19929 /*Notify UMAC*/
19930 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19931 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019932
19933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019934}/*WDI_ProcessDelSTAInd*/
19935
19936/**
19937*@brief Process Coex Indication function (called when
19938 an indication of this kind is being received over the
19939 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019940
19941 @param pWDICtx: pointer to the WLAN DAL context
19942 pEventData: pointer to the event information structure
19943
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 @see
19945 @return Result of the function call
19946*/
19947WDI_Status
19948WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019949(
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 WDI_ControlBlockType* pWDICtx,
19951 WDI_EventInfoType* pEventData
19952)
19953{
19954 WDI_LowLevelIndType wdiInd;
19955 tCoexIndMsg halCoexIndMsg;
19956 wpt_uint32 index;
19957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19958
19959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 -------------------------------------------------------------------------*/
19962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19963 ( NULL == pEventData->pEventData ))
19964 {
19965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 }
19970
19971 /*-------------------------------------------------------------------------
19972 Extract indication and send it to UMAC
19973 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19975 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 sizeof(halCoexIndMsg.coexIndParams) );
19977
19978 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019979 wdiInd.wdiIndicationType = WDI_COEX_IND;
19980 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19982 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 }
19985
19986 // DEBUG
19987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19988 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19990 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19991 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19992 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19993 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019994
ltimariu034f7d62013-01-24 18:54:33 -080019995 if ( pWDICtx->wdiLowLevelIndCB )
19996 {
19997 /*Notify UMAC*/
19998 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19999 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020000
20001 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020002}/*WDI_ProcessCoexInd*/
20003
20004/**
20005*@brief Process Tx Complete Indication function (called when
20006 an indication of this kind is being received over the
20007 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020008
20009 @param pWDICtx: pointer to the WLAN DAL context
20010 pEventData: pointer to the event information structure
20011
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 @see
20013 @return Result of the function call
20014*/
20015WDI_Status
20016WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020017(
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ControlBlockType* pWDICtx,
20019 WDI_EventInfoType* pEventData
20020)
20021{
20022 WDI_LowLevelIndType wdiInd;
20023 tTxComplIndMsg halTxComplIndMsg;
20024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20025
20026 /*-------------------------------------------------------------------------
20027 Sanity check
20028 -------------------------------------------------------------------------*/
20029 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20030 ( NULL == pEventData->pEventData ))
20031 {
20032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 WDI_ASSERT( 0 );
20035 return WDI_STATUS_E_FAILURE;
20036 }
20037
20038 /*-------------------------------------------------------------------------
20039 Extract indication and send it to UMAC
20040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20042 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 sizeof(halTxComplIndMsg.txComplParams) );
20044
20045 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020046 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20047 wdiInd.wdiIndicationData.tx_complete_status
20048 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020049
ltimariu034f7d62013-01-24 18:54:33 -080020050 if ( pWDICtx->wdiLowLevelIndCB )
20051 {
20052 /*Notify UMAC*/
20053 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20054 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020055
20056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020057}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020058#ifdef FEATURE_WLAN_TDLS
20059/**
20060*@brief Process TDLS Indication function (called when
20061 an indication of this kind is being received over the
20062 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020063
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020064 @param pWDICtx: pointer to the WLAN DAL context
20065 pEventData: pointer to the event information structure
20066
20067 @see
20068 @return Result of the function call
20069*/
20070WDI_Status
20071WDI_ProcessTdlsInd
20072(
20073 WDI_ControlBlockType* pWDICtx,
20074 WDI_EventInfoType* pEventData
20075)
20076{
20077 WDI_LowLevelIndType wdiInd;
20078 tTdlsIndMsg halTdlsIndMsg;
20079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20080
20081 /*-------------------------------------------------------------------------
20082 Sanity check
20083 -------------------------------------------------------------------------*/
20084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20085 ( NULL == pEventData->pEventData ))
20086 {
20087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20088 "%s: Invalid parameters", __func__);
20089 WDI_ASSERT( 0 );
20090 return WDI_STATUS_E_FAILURE;
20091 }
20092
20093 /*-------------------------------------------------------------------------
20094 Extract indication and send it to UMAC
20095 -------------------------------------------------------------------------*/
20096 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20097 pEventData->pEventData,
20098 sizeof(halTdlsIndMsg.tdlsIndParams) );
20099
20100 /*Fill in the indication parameters*/
20101 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20102
20103 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20104 = halTdlsIndMsg.tdlsIndParams.status;
20105
20106 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20107 = halTdlsIndMsg.tdlsIndParams.staIdx;
20108
20109 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20110 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20111
20112 /*Notify UMAC*/
20113 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20114
20115 return WDI_STATUS_SUCCESS;
20116}/*WDI_ProcessTdlsInd*/
20117#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020118/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020119*@brief Process Noa Start Indication function (called when
20120 an indication of this kind is being received over the
20121 bus from HAL)
20122
20123 @param pWDICtx: pointer to the WLAN DAL context
20124 pEventData: pointer to the event information structure
20125
20126 @see
20127 @return Result of the function call
20128*/
20129WDI_Status
20130WDI_ProcessP2pNoaStartInd
20131(
20132 WDI_ControlBlockType* pWDICtx,
20133 WDI_EventInfoType* pEventData
20134)
20135{
20136 WDI_LowLevelIndType wdiInd;
20137 tNoaStartIndMsg halNoaStartIndMsg;
20138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20139
20140 /*-------------------------------------------------------------------------
20141 Sanity check
20142 -------------------------------------------------------------------------*/
20143 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20144 ( NULL == pEventData->pEventData ))
20145 {
20146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20147 "%s: Invalid parameters", __func__);
20148 WDI_ASSERT( 0 );
20149 return WDI_STATUS_E_FAILURE;
20150 }
20151
20152 /*-------------------------------------------------------------------------
20153 Extract indication and send it to UMAC
20154 -------------------------------------------------------------------------*/
20155 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20156 pEventData->pEventData,
20157 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20158
20159 /*Fill in the indication parameters*/
20160 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20161
20162 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20163 = halNoaStartIndMsg.noaStartIndParams.status;
20164
20165 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20166 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20167
20168 /*Notify UMAC*/
20169 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20170
20171 return WDI_STATUS_SUCCESS;
20172}/*WDI_ProcessNoaAttrInd*/
20173
20174/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020175*@brief Process Noa Attr Indication function (called when
20176 an indication of this kind is being received over the
20177 bus from HAL)
20178
20179 @param pWDICtx: pointer to the WLAN DAL context
20180 pEventData: pointer to the event information structure
20181
20182 @see
20183 @return Result of the function call
20184*/
20185WDI_Status
20186WDI_ProcessP2pNoaAttrInd
20187(
20188 WDI_ControlBlockType* pWDICtx,
20189 WDI_EventInfoType* pEventData
20190)
20191{
20192 WDI_LowLevelIndType wdiInd;
20193 tNoaAttrIndMsg halNoaAttrIndMsg;
20194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20195
20196 /*-------------------------------------------------------------------------
20197 Sanity check
20198 -------------------------------------------------------------------------*/
20199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20200 ( NULL == pEventData->pEventData ))
20201 {
20202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 WDI_ASSERT( 0 );
20205 return WDI_STATUS_E_FAILURE;
20206 }
20207
20208 /*-------------------------------------------------------------------------
20209 Extract indication and send it to UMAC
20210 -------------------------------------------------------------------------*/
20211 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20212 pEventData->pEventData,
20213 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20214
20215 /*Fill in the indication parameters*/
20216 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020217
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20219 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020220
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20222 = halNoaAttrIndMsg.noaAttrIndParams.index;
20223 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20224 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20225 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20226 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020227
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20229 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20230 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20231 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20232 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20233 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20234 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20235 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020236
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20238 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20239 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20240 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20241 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20242 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20243 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20244 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20245
ltimariu034f7d62013-01-24 18:54:33 -080020246 if ( pWDICtx->wdiLowLevelIndCB )
20247 {
20248 /*Notify UMAC*/
20249 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20250 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020251
20252 return WDI_STATUS_SUCCESS;
20253}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020254
20255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020256 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 an indication of this kind is being received over the
20258 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
20260 @param pWDICtx: pointer to the WLAN DAL context
20261 pEventData: pointer to the event information structure
20262
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 @see
20264 @return Result of the function call
20265*/
20266WDI_Status
20267WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020268(
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 WDI_ControlBlockType* pWDICtx,
20270 WDI_EventInfoType* pEventData
20271)
20272{
20273 WDI_LowLevelIndType wdiInd;
20274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020275
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 /*-------------------------------------------------------------------------
20277 Extract indication and send it to UMAC
20278 -------------------------------------------------------------------------*/
20279 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20281
ltimariu034f7d62013-01-24 18:54:33 -080020282 if ( pWDICtx->wdiLowLevelIndCB )
20283 {
20284 /*Notify UMAC*/
20285 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20286 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020287
Jeff Johnsone7245742012-09-05 17:12:55 -070020288 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020289}/*WDI_ProcessTxPerHitInd*/
20290
Jeff Johnson295189b2012-06-20 16:38:30 -070020291/**
Yue Ma365933a2013-08-14 15:59:08 -070020292 @brief Process Periodic Tx Pattern Fw Indication function
20293
20294 @param pWDICtx: pointer to the WLAN DAL context
20295 pEventData: pointer to the event information structure
20296
20297 @see
20298 @return Result of the function call
20299*/
20300WDI_Status
20301WDI_ProcessPeriodicTxPtrnFwInd
20302(
20303 WDI_ControlBlockType* pWDICtx,
20304 WDI_EventInfoType* pEventData
20305)
20306{
20307 WDI_LowLevelIndType wdiInd;
20308
20309 /*-------------------------------------------------------------------------
20310 Sanity check
20311 -------------------------------------------------------------------------*/
20312 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20313 (NULL == pEventData->pEventData))
20314 {
20315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20316 "%s: Invalid parameters", __func__);
20317 WDI_ASSERT(0);
20318 return WDI_STATUS_E_FAILURE;
20319 }
20320
20321 /*-------------------------------------------------------------------------
20322 Extract indication and send it to UMAC
20323 -------------------------------------------------------------------------*/
20324 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20325 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20326 sizeof(tHalPeriodicTxPtrnFwInd));
20327
20328 if (pWDICtx->wdiLowLevelIndCB)
20329 {
20330 /*Notify UMAC*/
20331 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20332 }
20333
20334 return WDI_STATUS_SUCCESS;
20335}
20336
20337/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020338 @brief WDI_ProcessFTMCommandReq
20339 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020340
20341 @param pWDICtx: pointer to the WLAN DAL context
20342 pEventData: pointer to the event information structure
20343
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 @see
20345 @return Result of the function call
20346*/
20347WDI_Status
20348WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020349(
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 WDI_ControlBlockType* pWDICtx,
20351 WDI_EventInfoType* pEventData
20352)
20353{
20354 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20355 wpt_uint8 *ftmCommandBuffer = NULL;
20356 wpt_uint16 dataOffset;
20357 wpt_uint16 bufferSize;
20358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020360 -------------------------------------------------------------------------*/
20361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20362 ( NULL == pEventData->pEventData))
20363
20364 {
20365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 }
20370
20371 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20372
20373 /* Get MSG Buffer */
20374 WDI_GetMessageBuffer(pWDICtx,
20375 WDI_FTM_CMD_REQ,
20376 ftmCommandReq->bodyLength,
20377 &ftmCommandBuffer,
20378 &dataOffset,
20379 &bufferSize);
20380
20381 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20382 ftmCommandReq->FTMCommandBody,
20383 ftmCommandReq->bodyLength);
20384
20385 /* Send MSG */
20386 return WDI_SendMsg(pWDICtx,
20387 ftmCommandBuffer,
20388 bufferSize,
20389 pEventData->pCBfnc,
20390 pEventData->pUserData,
20391 WDI_FTM_CMD_RESP);
20392}
20393
20394/**
20395 @brief WDI_ProcessFTMCommandRsp
20396 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020397
20398 @param pWDICtx: pointer to the WLAN DAL context
20399 pEventData: pointer to the event information structure
20400
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 @see
20402 @return Result of the function call
20403*/
20404WDI_Status
20405WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020406(
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 WDI_ControlBlockType* pWDICtx,
20408 WDI_EventInfoType* pEventData
20409)
20410{
20411 WDI_FTMCommandRspCb ftmCMDRspCb;
20412 tProcessPttRspParams *ftmCMDRspData = NULL;
20413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20414
20415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 -------------------------------------------------------------------------*/
20418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20419 ( NULL == pEventData->pEventData))
20420 {
20421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 }
20426
20427 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20428
20429 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20430
Jeff Johnsone7245742012-09-05 17:12:55 -070020431 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20432 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20434
20435 /*Notify UMAC*/
20436 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20437
Jeff Johnsone7245742012-09-05 17:12:55 -070020438 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020439}
Jeff Johnson295189b2012-06-20 16:38:30 -070020440/**
20441 @brief WDI_ProcessHalDumpCmdReq
20442 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020443
20444 @param pWDICtx: pointer to the WLAN DAL context
20445 pEventData: pointer to the event information structure
20446
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 @see
20448 @return Result of the function call
20449*/
20450WDI_Status
20451WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020452(
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 WDI_ControlBlockType* pWDICtx,
20454 WDI_EventInfoType* pEventData
20455)
20456{
20457 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20458 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20459 wpt_uint16 usDataOffset = 0;
20460 wpt_uint16 usSendSize = 0;
20461 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020462 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020463
20464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 -------------------------------------------------------------------------*/
20467 if (( NULL == pEventData ) ||
20468 ( NULL == pEventData->pEventData) ||
20469 ( NULL == pEventData->pCBfnc ))
20470 {
20471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020475 }
20476
20477 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20478 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20479
20480 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020485 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020486 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020491
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 /*-----------------------------------------------------------------------
20493 Get message buffer
20494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20497 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020498 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20500 {
20501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20502 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20503 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 }
20507
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 wpalMemoryCopy( pSendBuffer+usDataOffset,
20509 &halDumpCmdReqMsg.dumpCmdReqParams,
20510 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020511
20512 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020513 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020514
20515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020516 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20519 wdiHALDumpCmdRspCb, pEventData->pUserData,
20520 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020521}
20522
20523/**
20524 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 Process hal Dump Command Response from HAL, simply route to HDD
20526
20527 @param pWDICtx: pointer to the WLAN DAL context
20528 pEventData: pointer to the event information structure
20529
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 @see
20531 @return Result of the function call
20532*/
20533WDI_Status
20534WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020535(
Jeff Johnson295189b2012-06-20 16:38:30 -070020536 WDI_ControlBlockType* pWDICtx,
20537 WDI_EventInfoType* pEventData
20538)
20539{
20540 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020541 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20543
20544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 -------------------------------------------------------------------------*/
20547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20548 ( NULL == pEventData->pEventData))
20549 {
20550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 }
20555
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020557
20558 /*Initialize the WDI Response structure */
20559 wdiHALDumpCmdRsp.usBufferLen = 0;
20560 wdiHALDumpCmdRsp.pBuffer = NULL;
20561
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020562 wpalMemoryCopy( &halDumpCmdRspParams,
20563 pEventData->pEventData,
20564 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020565
20566 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020567 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020568
20569 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020570 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 {
20572 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020573 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20574 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20575
20576 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20577 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020578 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020580
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 /*Notify UMAC*/
20582 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20583
20584 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20585 {
20586 /* Free the allocated buffer */
20587 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20588 }
20589 return WDI_STATUS_SUCCESS;
20590}
20591
20592/*==========================================================================
20593 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020594
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020596 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020597==========================================================================*/
20598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 when it wishes to send up a notification like the ones
20601 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020602
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020604
20605 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 wctsNotifyCBData: the callback data of the user
20608
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020610
20611 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020612*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020613void
Jeff Johnson295189b2012-06-20 16:38:30 -070020614WDI_NotifyMsgCTSCB
20615(
Jeff Johnsone7245742012-09-05 17:12:55 -070020616 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 WCTS_NotifyEventType wctsEvent,
20618 void* wctsNotifyCBData
20619)
20620{
Jeff Johnsone7245742012-09-05 17:12:55 -070020621 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20623
20624 if (NULL == pWDICtx )
20625 {
20626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 }
20631
20632 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20633 {
20634 /* callback presumably occurred after close */
20635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020636 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 }
20639
20640 if ( WCTS_EVENT_OPEN == wctsEvent )
20641 {
20642 /*Flag must be set atomically as it is checked from incoming request
20643 functions*/
20644 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020646
20647 /*Nothing to do - so try to dequeue any pending request that may have
20648 occurred while we were trying to establish this*/
20649 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 {
20654 /*Flag must be set atomically as it is checked from incoming request
20655 functions*/
20656 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020657 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020658
20659 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 wpalMutexRelease(&pWDICtx->wptMutex);
20662
20663 /*Notify that the Control Channel is closed */
20664 wpalEventSet(&pWDICtx->wctsActionEvent);
20665 }
20666
20667}/*WDI_NotifyMsgCTSCB*/
20668
20669
20670/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020671 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020672 when it wishes to send up a packet received over the
20673 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020674
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020676
20677 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020678 pMsg: the packet
20679 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 wctsRxMsgCBData: the callback data of the user
20681
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020683
20684 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020685*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020686void
20687WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020688(
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 void* pMsg,
20691 wpt_uint32 uLen,
20692 void* wctsRxMsgCBData
20693)
20694{
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 tHalMsgHeader *pHalMsgHeader;
20696 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20699
20700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 ( uLen < sizeof(tHalMsgHeader)))
20705 {
20706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 }
20711
20712 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20713 {
20714 /* callback presumably occurred after close */
20715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020716 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020717 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 }
20719
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 context - so no serialization is necessary here
20722 ! - revisit this assumption */
20723
20724 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20725
20726 if ( uLen != pHalMsgHeader->msgLen )
20727 {
20728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20729 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20731 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 }
20733
20734 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20735
20736 /*The message itself starts after the header*/
20737 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20738 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20739 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20740 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20741
20742
20743 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20744 {
20745 /*Stop the timer as the response was received */
20746 /*!UT - check for potential race conditions between stop and response */
20747 wpalTimerStop(&pWDICtx->wptResponseTimer);
20748 }
20749 /* Check if we receive a response message which is not expected */
20750 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20751 {
20752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20753 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20754 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20757 pWDICtx->wdiExpectedResponse);
20758 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa17ef2a62013-08-29 15:27:56 -070020759 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 return;
20761 }
20762
20763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20764 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20765
20766 /*Post response event to the state machine*/
20767 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20768
20769}/*WDI_RXMsgCTSCB*/
20770
20771
20772/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020774========================================================================*/
20775
20776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020779
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 @param pWDICtx - pointer to the control block
20781
20782 @return Result of the function call
20783*/
20784WPT_INLINE WDI_Status
20785WDI_CleanCB
20786(
20787 WDI_ControlBlockType* pWDICtx
20788)
20789{
20790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20791
20792 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020794
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20797 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20798
20799 WDI_ResetAssocSessions( pWDICtx );
20800
20801 return WDI_STATUS_SUCCESS;
20802}/*WDI_CleanCB*/
20803
20804
20805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020807
Jeff Johnsone7245742012-09-05 17:12:55 -070020808
20809 @param pWDICtx: pointer to the WLAN DAL context
20810 pEventData: pointer to the event information structure
20811
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 @see
20813 @return Result of the function call
20814*/
20815WPT_INLINE WDI_Status
20816WDI_ProcessRequest
20817(
20818 WDI_ControlBlockType* pWDICtx,
20819 WDI_EventInfoType* pEventData
20820)
20821{
20822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20823
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 already checked these pointers*/
20826
20827 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20828 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20831 "Calling request processing function for req %s (%d) %x",
20832 WDI_getReqMsgString(pEventData->wdiRequest),
20833 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20834 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20835 }
20836 else
20837 {
20838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 pEventData->wdiRequest);
20841 return WDI_STATUS_E_NOT_IMPLEMENT;
20842 }
20843}/*WDI_ProcessRequest*/
20844
20845
20846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020849 prefixes it with a send message header
20850
20851 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 wdiReqType: type of the request being sent
20853 uBufferLen: message buffer len
20854 pMsgBuffer: resulting allocated buffer
20855 pusDataOffset: offset in the buffer where the caller
20856 can start copying its message data
20857 puBufferSize: the resulting buffer size (offset+buff
20858 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020859
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 @see
20861 @return Result of the function call
20862*/
20863WDI_Status
20864WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020865(
20866 WDI_ControlBlockType* pWDICtx,
20867 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020869 wpt_uint8** pMsgBuffer,
20870 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 wpt_uint16* pusBufferSize
20872)
20873{
20874 tHalMsgHeader halMsgHeader;
20875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20876
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 again*/
20879
20880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020881 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20885 if ( NULL == *pMsgBuffer )
20886 {
20887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20888 "Unable to allocate message buffer for req %s (%d)",
20889 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 }
20894
20895 /*-------------------------------------------------------------------------
20896 Fill in the message header
20897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20899 /* Fill msgVersion */
20900#ifdef WLAN_FEATURE_11AC
20901 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020902 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 else
20904#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020905 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20908 *pusDataOffset = sizeof(halMsgHeader);
20909 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20910
20911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912}/*WDI_GetMessageBuffer*/
20913
20914
20915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 the CB
20919
20920 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020922
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 usSendSize size of the buffer to be sent
20924 pRspCb: response callback - save in the WDI
20925 CB
20926 pUserData: user data associated with the
20927 callback
20928 wdiExpectedResponse: the code of the response that is
20929 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020930
Jeff Johnson295189b2012-06-20 16:38:30 -070020931 @see
20932 @return Result of the function call
20933*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020934WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020935WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020936(
20937 WDI_ControlBlockType* pWDICtx,
20938 wpt_uint8* pSendBuffer,
20939 wpt_uint32 usSendSize,
20940 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 void* pUserData,
20942 WDI_ResponseEnumType wdiExpectedResponse
20943)
20944{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020945 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020946 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20948
20949 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 ------------------------------------------------------------------------*/
20952 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 pWDICtx->pfncRspCB = pRspCb;
20954 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020955
20956 /*-----------------------------------------------------------------------
20957 Call the CTS to send this message over - free message afterwards
20958 - notify transport failure
20959 Note: CTS is reponsible for freeing the message buffer.
20960 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020961 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20962 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20963 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 "Failed to send message over the bus - catastrophic failure");
20967
Jeff Johnsond13512a2012-07-17 11:42:19 -070020968 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020970 else
20971 {
20972 /* even when message was placed in CTS deferred Q, we will treat it
20973 success but log this info
20974 */
20975 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20976 {
20977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20978 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20979 "response %s (%d)",
20980 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20981 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020982 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020983 }
20984 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020985
Jeff Johnsond13512a2012-07-17 11:42:19 -070020986 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 if ( NULL != pWDICtx->wdiReqStatusCB )
20988 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020989 /*Inform originator whether request went through or not*/
20990 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20991 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 pWDICtx->wdiReqStatusCB = NULL;
20993 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020994 callback(wdiStatus, callbackContext);
20995
20996 /*For WDI requests which have registered a request callback,
20997 inform the WDA caller of the same via setting the return value
20998 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20999 end up repeating the functonality in the req callback for the
21000 WDI_STATUS_E_FAILURE case*/
21001 if (wdiStatus == WDI_STATUS_E_FAILURE)
21002 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 }
21004
Jeff Johnsond13512a2012-07-17 11:42:19 -070021005 if ( wdiStatus == WDI_STATUS_SUCCESS )
21006 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 /*Start timer for the expected response */
21008 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021009
21010 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021011 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021012 }
21013 else
21014 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021015 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021016 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21017 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021018
Jeff Johnsond13512a2012-07-17 11:42:19 -070021019 return wdiStatus;
21020
Jeff Johnson295189b2012-06-20 16:38:30 -070021021}/*WDI_SendMsg*/
21022
21023
21024
21025/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 the bus using the control transport and saves some info
21028 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021029
21030 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 pSendBuffer: buffer to be sent
21032 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021033
Jeff Johnson295189b2012-06-20 16:38:30 -070021034 @see
21035 @return Result of the function call
21036*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021037WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021038WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021039(
21040 WDI_ControlBlockType* pWDICtx,
21041 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 wpt_uint32 usSendSize
21043)
21044{
21045 wpt_uint32 uStatus ;
21046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21047
21048 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 Note: CTS is reponsible for freeing the message buffer.
21051 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 (void*)pSendBuffer, usSendSize );
21054
21055 /*Inform Upper MAC about the outcome of the request*/
21056 if ( NULL != pWDICtx->wdiReqStatusCB )
21057 {
21058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21059 "Send indication status : %d", uStatus);
21060
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021061 /* even if CTS placed indication into its deferred Q, we treat it
21062 * as success and let CTS drain its queue as per smd interrupt to CTS
21063 */
21064 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 -070021065 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 }
21067
21068 /*If sending of the message failed - it is considered catastrophic and
21069 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021070 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21071 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21072
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 {
21074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021076
21077 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21078 return WDI_STATUS_E_FAILURE;
21079 }
21080
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021082}/*WDI_SendIndication*/
21083
21084
21085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 @brief WDI_DetectedDeviceError - called internally by DAL when
21087 it has detected a failure in the device
21088
21089 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 usErrorCode: error code detected by WDI or received
21091 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021092
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021095*/
21096void
21097WDI_DetectedDeviceError
21098(
21099 WDI_ControlBlockType* pWDICtx,
21100 wpt_uint16 usErrorCode
21101)
21102{
21103 WDI_LowLevelIndType wdiInd;
21104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21105
21106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21107 "Device Error detected code: %d - transitioning to stopped state",
21108 usErrorCode);
21109
21110 wpalMutexAcquire(&pWDICtx->wptMutex);
21111
21112 WDI_STATableStop(pWDICtx);
21113
21114 WDI_ResetAssocSessions(pWDICtx);
21115
21116 /*Set the expected state transition to stopped - because the device
21117 experienced a failure*/
21118 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21119
21120 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021122
Jeff Johnsone7245742012-09-05 17:12:55 -070021123 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124
21125 /*TO DO: - there should be an attempt to reset the device here*/
21126
21127 wpalMutexRelease(&pWDICtx->wptMutex);
21128
21129 /*------------------------------------------------------------------------
21130 Notify UMAC if a handler is registered
21131 ------------------------------------------------------------------------*/
21132 if (pWDICtx->wdiLowLevelIndCB)
21133 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021134 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21135 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021136
21137 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21138 }
21139}/*WDI_DetectedDeviceError*/
21140
21141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021142 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 we started on send message has expire - this should
21144 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 reply - trigger catastrophic failure
21146 @param
21147
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021149
21150 @see
21151 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021152*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021153void
Jeff Johnson295189b2012-06-20 16:38:30 -070021154WDI_ResponseTimerCB
21155(
21156 void *pUserData
21157)
21158{
21159 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21161
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021162 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021168 }
21169
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021170 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021171 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021172
21173 /* If response timer is running at this time that means this timer
21174 * event is not for the last request but rather last-to-last request and
21175 * this timer event has come after we recevied respone for last-to-last
21176 * message
21177 */
21178 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21179 {
21180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21181 "WDI_ResponseTimerCB: timer in running state on timer event, "
21182 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21183 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21184 return;
21185 }
21186
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021187 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 {
21189
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021192 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021194 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21195 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021196
21197 /* WDI timeout means Riva is not responding or SMD communication to Riva
21198 * is not happening. The only possible way to recover from this error
21199 * is to initiate SSR from APPS.
21200 * There is also an option to re-enable wifi, which will eventually
21201 * trigger SSR
21202 */
21203 if (gWDICb.bEnableSSR == false)
21204 {
21205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21206 "SSR is not enabled on WDI timeout");
21207 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21208 return;
21209 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021210#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021211 wpalWcnssResetIntr();
21212 /* if this timer fires, it means Riva did not receive the FIQ */
21213 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021214#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021215 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21216 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021217#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 }
21219 else
21220 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021222 "Timeout occurred but not waiting for any response %d "
21223 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21224 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21225 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 }
21227
21228 return;
21229
21230}/*WDI_ResponseTimerCB*/
21231
21232
21233/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021234 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021235
Jeff Johnsone7245742012-09-05 17:12:55 -070021236
21237 @param pWDICtx: pointer to the WLAN DAL context
21238 pEventData: pointer to the event information structure
21239
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 @see
21241 @return Result of the function call
21242*/
21243WPT_INLINE WDI_Status
21244WDI_ProcessResponse
21245(
21246 WDI_ControlBlockType* pWDICtx,
21247 WDI_EventInfoType* pEventData
21248)
21249{
21250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21251
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 already checked these pointers
21254 ! - revisit this assumption */
21255 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21256 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021259 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021260 WDI_getRespMsgString(pEventData->wdiResponse),
21261 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21262 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21263 }
21264 else
21265 {
21266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 pEventData->wdiResponse);
21269 return WDI_STATUS_E_NOT_IMPLEMENT;
21270 }
21271}/*WDI_ProcessResponse*/
21272
21273
21274/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021276=========================================================================*/
21277
21278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021279 @brief Utility function used by the DAL Core to help queue a
21280 request that cannot be processed right away.
21281 @param
21282
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 pWDICtx: - pointer to the WDI control block
21284 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021285 queued
21286
21287 @see
21288 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021289*/
21290WDI_Status
21291WDI_QueuePendingReq
21292(
21293 WDI_ControlBlockType* pWDICtx,
21294 WDI_EventInfoType* pEventData
21295)
21296{
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21301
21302 if ( NULL == pEventDataQueue )
21303 {
21304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 WDI_ASSERT(0);
21307 return WDI_STATUS_MEM_FAILURE;
21308 }
21309
21310 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21311 pEventDataQueue->pUserData = pEventData->pUserData;
21312 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21313 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021315
21316 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21317 {
21318 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021319
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 if ( NULL == pEventInfo )
21321 {
21322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 WDI_ASSERT(0);
21325 wpalMemoryFree(pEventDataQueue);
21326 return WDI_STATUS_MEM_FAILURE;
21327 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021328
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21330
21331 }
21332 pEventDataQueue->pEventData = pEventInfo;
21333
21334 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021338
21339 return WDI_STATUS_SUCCESS;
21340}/*WDI_QueuePendingReq*/
21341
21342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 @param
21346
21347 pMsg - pointer to the message
21348
21349 @see
21350 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021351*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021352void
Jeff Johnson295189b2012-06-20 16:38:30 -070021353WDI_PALCtrlMsgCB
21354(
21355 wpt_msg *pMsg
21356)
21357{
21358 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 WDI_ControlBlockType* pWDICtx = NULL;
21360 WDI_Status wdiStatus;
21361 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 void* pUserData;
21363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21364
21365 if (( NULL == pMsg )||
21366 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21367 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21368 {
21369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021370 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 }
21374
21375 /*Transition back to the state that we had before serialization
21376 - serialization transitions us to BUSY to stop any incomming requests
21377 ! TO DO L: possible race condition here if a request comes in between the
21378 state transition and the post function*/
21379
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021381
21382 /*-----------------------------------------------------------------------
21383 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 -----------------------------------------------------------------------*/
21386 switch ( pEventData->wdiRequest )
21387 {
21388
Jeff Johnsone7245742012-09-05 17:12:55 -070021389 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021390 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21391 break;
21392
Jeff Johnson295189b2012-06-20 16:38:30 -070021393 case WDI_NV_DOWNLOAD_REQ:
21394 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21395 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21396 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21397 {
21398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021399 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21401 }
21402 else
21403 {
21404 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21405 }
21406
21407 break;
21408
21409 default:
21410 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21411 break;
21412 }/*switch ( pEventData->wdiRequest )*/
21413
21414 if ( WDI_STATUS_SUCCESS != wdiStatus )
21415 {
21416 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21417
21418 if ( NULL != pfnReqStatusCB )
21419 {
21420 /*Fail the request*/
21421 pfnReqStatusCB( wdiStatus, pUserData);
21422 }
21423 }
21424
21425 /* Free data - that was allocated when queueing*/
21426 if( pEventData != NULL )
21427 {
21428 if( pEventData->pEventData != NULL )
21429 {
21430 wpalMemoryFree(pEventData->pEventData);
21431 }
21432 wpalMemoryFree(pEventData);
21433 }
21434
21435 if( pMsg != NULL )
21436 {
21437 wpalMemoryFree(pMsg);
21438 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021439
Jeff Johnson295189b2012-06-20 16:38:30 -070021440}/*WDI_PALCtrlMsgCB*/
21441
21442/**
21443 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 and schedule for execution a pending request
21445 @param
21446
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 pWDICtx: - pointer to the WDI control block
21448 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 queued
21450
21451 @see
21452 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021453*/
21454WDI_Status
21455WDI_DequeuePendingReq
21456(
21457 WDI_ControlBlockType* pWDICtx
21458)
21459{
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021462 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21464
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021466
21467 if ( NULL == pNode )
21468 {
21469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 return WDI_STATUS_SUCCESS;
21472 }
21473
21474 /*The node actually points to the 1st element inside the Event Data struct -
21475 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021477
21478 /*Serialize processing in the control thread
21479 !TO DO: - check to see if these are all the messages params that need
21480 to be filled in*/
21481 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21482
21483 if ( NULL == palMsg )
21484 {
21485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 palMsg->callback = WDI_PALCtrlMsgCB;
21492 palMsg->ptr = pEventData;
21493
21494 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 palMsg->val = pWDICtx->uGlobalState;
21496
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 /*Transition back to BUSY as we need to handle a queued request*/
21498 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021499
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21501
21502 return WDI_STATUS_PENDING;
21503}/*WDI_DequeuePendingReq*/
21504
21505
21506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 away.- The assoc requests will be queued by BSSID
21510 @param
21511
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 pWDICtx: - pointer to the WDI control block
21513 pEventData: pointer to the evnt info that needs to be queued
21514 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021515
21516 @see
21517 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021518*/
21519WDI_Status
21520WDI_QueueNewAssocRequest
21521(
21522 WDI_ControlBlockType* pWDICtx,
21523 WDI_EventInfoType* pEventData,
21524 wpt_macAddr macBSSID
21525)
21526{
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 wpt_uint8 i;
21528 WDI_BSSSessionType* pSession = NULL;
21529 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021530 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 void* pEventInfo;
21532 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021534
Jeff Johnsone7245742012-09-05 17:12:55 -070021535
21536 /*------------------------------------------------------------------------
21537 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 ------------------------------------------------------------------------*/
21539 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21540 {
21541 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21542 {
21543 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 pSession = &pWDICtx->aBSSSessions[i];
21545 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 }
21547 }
21548
21549 if ( i >= WDI_MAX_BSS_SESSIONS )
21550 {
21551 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021554
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 /*------------------------------------------------------------------------
21556 Fill in the BSSID for this session and set the usage flag
21557 ------------------------------------------------------------------------*/
21558 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021560
21561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 ------------------------------------------------------------------------*/
21564 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21565 if ( NULL == pEventDataQueue )
21566 {
21567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021568 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 WDI_ASSERT(0);
21570 return WDI_STATUS_MEM_FAILURE;
21571 }
21572
21573 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21574 if ( NULL == pSessionIdElement )
21575 {
21576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021577 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021578 WDI_ASSERT(0);
21579 wpalMemoryFree(pEventDataQueue);
21580 return WDI_STATUS_MEM_FAILURE;
21581 }
21582
21583 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21584 if ( NULL == pEventInfo )
21585 {
21586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021587 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 WDI_ASSERT(0);
21589 wpalMemoryFree(pSessionIdElement);
21590 wpalMemoryFree(pEventDataQueue);
21591 return WDI_STATUS_MEM_FAILURE;
21592 }
21593
21594 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21595 pEventDataQueue->pUserData = pEventData->pUserData;
21596 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21597 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021599
21600 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21601 pEventDataQueue->pEventData = pEventInfo;
21602
21603 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021605
21606 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021608
Jeff Johnsone7245742012-09-05 17:12:55 -070021609 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021610
21611 /*We need to maintain a separate list that keeps track of the order in which
21612 the new assoc requests are being queued such that we can start processing
21613 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021614 pSessionIdElement->ucIndex = i;
21615 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021616
21617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21618 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021620
21621 /*Return pending as this is what the status of the request is since it has
21622 been queued*/
21623 return WDI_STATUS_PENDING;
21624}/*WDI_QueueNewAssocRequest*/
21625
21626/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021627 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021628 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 away.- The assoc requests will be queued by BSSID
21630 @param
21631
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 pWDICtx: - pointer to the WDI control block
21633 pSession: - session in which to queue
21634 pEventData: pointer to the event info that needs to be
21635 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021636
21637 @see
21638 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021639*/
21640WDI_Status
21641WDI_QueueAssocRequest
21642(
21643 WDI_ControlBlockType* pWDICtx,
21644 WDI_BSSSessionType* pSession,
21645 WDI_EventInfoType* pEventData
21646)
21647{
Jeff Johnsone7245742012-09-05 17:12:55 -070021648 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021652
21653 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 Sanity check
21655 ------------------------------------------------------------------------*/
21656 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21657 {
21658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021660
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021662 }
21663
21664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 ------------------------------------------------------------------------*/
21667 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21668 if ( NULL == pEventDataQueue )
21669 {
21670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021671 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 WDI_ASSERT(0);
21673 return WDI_STATUS_MEM_FAILURE;
21674 }
21675
21676 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21677 if ( NULL == pEventInfo )
21678 {
21679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21680 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021681 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 WDI_ASSERT(0);
21683 wpalMemoryFree(pEventDataQueue);
21684 return WDI_STATUS_MEM_FAILURE;
21685 }
21686
21687 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21688 pEventDataQueue->pUserData = pEventData->pUserData;
21689 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21690 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 pEventDataQueue->pEventData = pEventInfo;
21693
21694 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21695
21696 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021698
21699 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021703
21704 /*The result of this operation is pending because the request has been
21705 queued and it will be processed at a later moment in time */
21706 return WDI_STATUS_PENDING;
21707}/*WDI_QueueAssocRequest*/
21708
21709/**
21710 @brief Utility function used by the DAL Core to help dequeue
21711 an association request that was pending
21712 The request will be queued up in front of the main
21713 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 @param
21715
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021717
21718
21719 @see
21720 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021721*/
21722WDI_Status
21723WDI_DequeueAssocRequest
21724(
21725 WDI_ControlBlockType* pWDICtx
21726)
21727{
Jeff Johnsone7245742012-09-05 17:12:55 -070021728 wpt_list_node* pNode = NULL;
21729 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 WDI_BSSSessionType* pSession;
21731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021732
21733 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021734 Sanity check
21735 ------------------------------------------------------------------------*/
21736 if ( NULL == pWDICtx )
21737 {
21738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021740
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 }
21743
21744 /*------------------------------------------------------------------------
21745 An association has been completed => a new association can occur
21746 Check to see if there are any pending associations ->
21747 If so , transfer all the pending requests into the busy queue for
21748 processing
21749 These requests have arrived prior to the requests in the busy queue
21750 (bc they needed to be processed in order to be placed in this queue)
21751 => they will be placed at the front of the busy queue
21752 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021754
21755 if ( NULL == pNode )
21756 {
21757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021758 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 return WDI_STATUS_SUCCESS;
21760 }
21761
21762 /*The node actually points to the 1st element inside the Session Id struct -
21763 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021765
21766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21767 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21768
21769 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21770 {
21771 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021772
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 the front of the main waiting queue for subsequent execution*/
21775 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021776 while ( NULL != pNode )
21777 {
21778 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021779 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21780 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 }
21784 else
21785 {
21786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 WPAL_ASSERT(0);
21789 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021792
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21794 wpalMemoryFree(pSessionIdElement);
21795 return WDI_STATUS_SUCCESS;
21796}/*WDI_DequeueAssocRequest*/
21797
21798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021800 pending requests - all req cb will be called with
21801 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 @param
21803
Jeff Johnson295189b2012-06-20 16:38:30 -070021804 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021805
21806 @see
21807 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021808*/
21809WDI_Status
21810WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021811(
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 WDI_ControlBlockType* pWDICtx
21813)
21814{
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021817 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 void* pUserData;
21819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21820
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021822
21823 /*------------------------------------------------------------------------
21824 Go through all the requests and fail them - this will only be called
21825 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 ------------------------------------------------------------------------*/
21828 while( pNode )
21829 {
21830 /*The node actually points to the 1st element inside the Event Data struct -
21831 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021832 pEventDataQueue = (WDI_EventInfoType*)pNode;
21833
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21835 if ( NULL != pfnReqStatusCB )
21836 {
21837 /*Fail the request*/
21838 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21839 }
21840 /* Free data - that was allocated when queueing */
21841 if ( pEventDataQueue->pEventData != NULL )
21842 {
21843 wpalMemoryFree(pEventDataQueue->pEventData);
21844 }
21845 wpalMemoryFree(pEventDataQueue);
21846
21847 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21848 {
21849 break;
21850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 }
21852
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 return WDI_STATUS_SUCCESS;
21854}/*WDI_ClearPendingRequests*/
21855
21856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 @brief Helper routine used to init the BSS Sessions in the WDI control block
21858
21859
21860 @param pWDICtx: pointer to the WLAN DAL context
21861
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 @see
21863*/
21864void
21865WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021866(
Jeff Johnson295189b2012-06-20 16:38:30 -070021867 WDI_ControlBlockType* pWDICtx
21868)
21869{
Jeff Johnsone7245742012-09-05 17:12:55 -070021870 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21872
21873 /*-------------------------------------------------------------------------
21874 No Sanity check
21875 -------------------------------------------------------------------------*/
21876 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21877 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21880 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21881 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21882 }
21883}/*WDI_ResetAssocSessions*/
21884
21885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 @brief Helper routine used to find a session based on the BSSID
21887
21888
21889 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021890 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021891 pSession: pointer to the session (if found)
21892
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021894 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021895*/
21896wpt_uint8
21897WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021898(
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 WDI_ControlBlockType* pWDICtx,
21900 wpt_macAddr macBSSID,
21901 WDI_BSSSessionType** ppSession
21902)
21903{
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21906
21907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 -------------------------------------------------------------------------*/
21910 if ( NULL == ppSession )
21911 {
21912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021913 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 }
21916
Jeff Johnsone7245742012-09-05 17:12:55 -070021917 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021918
Jeff Johnsone7245742012-09-05 17:12:55 -070021919 /*------------------------------------------------------------------------
21920 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 ------------------------------------------------------------------------*/
21922 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21923 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021924 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21925 (eWLAN_PAL_TRUE ==
21926 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21927 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 {
21929 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 return i;
21932 }
21933 }
21934
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021936}/*WDI_FindAssocSession*/
21937
21938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021939 @brief Helper routine used to find a session based on the BSSID
21940
21941
21942 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 ucBSSIdx: BSS Index of the session
21944 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021945
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021948*/
21949wpt_uint8
21950WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021951(
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 WDI_ControlBlockType* pWDICtx,
21953 wpt_uint16 ucBSSIdx,
21954 WDI_BSSSessionType** ppSession
21955)
21956{
Jeff Johnsone7245742012-09-05 17:12:55 -070021957 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21959
21960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 -------------------------------------------------------------------------*/
21963 if ( NULL == ppSession )
21964 {
21965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021966 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 }
21969
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021971
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 /*------------------------------------------------------------------------
21973 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 ------------------------------------------------------------------------*/
21975 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21976 {
21977 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21978 {
21979 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 return i;
21982 }
21983 }
21984
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021986}/*WDI_FindAssocSessionByBSSIdx*/
21987
21988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 @brief Helper routine used to find a session based on the BSSID
21990
21991
21992 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 ucBSSIdx: BSS Index of the session
21994 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021995
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021998*/
21999wpt_uint8
22000WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022001(
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 WDI_ControlBlockType* pWDICtx,
22003 wpt_uint16 usIdx,
22004 WDI_BSSSessionType** ppSession
22005)
22006{
22007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22008
22009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 -------------------------------------------------------------------------*/
22012 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22013 {
22014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022015 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 }
22018
22019 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022020 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022021
22022 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022023
Jeff Johnson295189b2012-06-20 16:38:30 -070022024}/*WDI_FindAssocSessionByBSSIdx*/
22025
22026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022029
22030
22031 @param pWDICtx: pointer to the WLAN DAL context
22032 pSession: pointer to the session (if found)
22033
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022036*/
22037wpt_uint8
22038WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022039(
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 WDI_ControlBlockType* pWDICtx,
22041 WDI_BSSSessionType** ppSession
22042)
22043{
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 -------------------------------------------------------------------------*/
22049 if ( NULL == ppSession )
22050 {
22051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022052 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 }
22055
Jeff Johnsone7245742012-09-05 17:12:55 -070022056 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022057
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 /*------------------------------------------------------------------------
22059 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 ------------------------------------------------------------------------*/
22061 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22062 {
22063 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22064 {
22065 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022067 return i;
22068 }
22069 }
22070
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022072}/*WDI_FindEmptySession*/
22073
22074
22075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022077 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022078
22079
22080 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022081 macBSSID: pointer to BSSID. If NULL, get all the session.
22082 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22083 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22084 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 @see
22086 @return Number of sessions in use
22087*/
22088wpt_uint8
22089WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022090(
Hoonki Lee26599972013-04-24 01:21:58 -070022091 WDI_ControlBlockType* pWDICtx,
22092 wpt_macAddr macBSSID,
22093 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022094)
22095{
Jeff Johnsone7245742012-09-05 17:12:55 -070022096 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022098
22099 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 Count all sessions in use
22101 ------------------------------------------------------------------------*/
22102 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22103 {
Hoonki Lee26599972013-04-24 01:21:58 -070022104 if ( macBSSID && skipBSSID &&
22105 (eWLAN_PAL_TRUE ==
22106 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22107 WDI_MAC_ADDR_LEN)))
22108 {
22109 continue;
22110 }
22111 else if ( pWDICtx->aBSSSessions[i].bInUse )
22112 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022114 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 }
22116
Jeff Johnsone7245742012-09-05 17:12:55 -070022117 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022118}/*WDI_GetActiveSessionsCount*/
22119
22120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022123
22124
22125 @param pWDICtx: pointer to the WLAN DAL context
22126 pSession: pointer to the session (if found)
22127
Jeff Johnson295189b2012-06-20 16:38:30 -070022128 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022130*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022131void
Jeff Johnson295189b2012-06-20 16:38:30 -070022132WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022133(
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 WDI_ControlBlockType* pWDICtx,
22135 WDI_BSSSessionType* ppSession
22136)
22137{
22138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 -------------------------------------------------------------------------*/
22141 if ( NULL == ppSession )
22142 {
22143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022144 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022145 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022146 }
22147
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 /*------------------------------------------------------------------------
22149 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 ------------------------------------------------------------------------*/
22151 wpal_list_destroy(&ppSession->wptPendingQueue);
22152 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22154 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22156 wpal_list_init(&ppSession->wptPendingQueue);
22157
22158}/*WDI_DeleteSession*/
22159
22160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 @param
22164
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 WDI_AddStaParams: - pointer to the WDI Add STA params
22166 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022167
22168 @see
22169 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022170*/
22171void
22172WDI_AddBcastSTAtoSTATable
22173(
22174 WDI_ControlBlockType* pWDICtx,
22175 WDI_AddStaParams * staParams,
22176 wpt_uint16 usBcastStaIdx
22177)
22178{
22179 WDI_AddStaParams wdiAddSTAParam = {0};
22180 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22182
22183 /*---------------------------------------------------------------------
22184 Sanity check
22185 ---------------------------------------------------------------------*/
22186 if ( NULL == staParams )
22187 {
22188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022190
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 }
22193
22194 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22195 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22196 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22197 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22198 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22199 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22200 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22201 WDI_MAC_ADDR_LEN );
22202 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22203 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22204 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22205 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22206 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22207 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22208 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022209
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22211}
22212
22213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 @brief NV blob will be divided into fragments of size 4kb and
22215 Sent to HAL
22216
22217 @param pWDICtx: pointer to the WLAN DAL context
22218 pEventData: pointer to the event information structure
22219
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 @see
22221 @return Result of the function call
22222 */
22223
22224WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022225(
Jeff Johnson295189b2012-06-20 16:38:30 -070022226 WDI_ControlBlockType* pWDICtx,
22227 WDI_EventInfoType* pEventData
22228)
22229{
22230
22231 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22232 wpt_uint8* pSendBuffer = NULL;
22233 wpt_uint16 usDataOffset = 0;
22234 wpt_uint16 usSendSize = 0;
22235 wpt_uint16 usCurrentFragmentSize =0;
22236 wpt_uint8* pSrcBuffer = NULL;
22237 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22238 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22239
22240 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22241 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22242 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22243
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22246
22247 /* Update the current Fragment Number */
22248 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22249
22250 /*Update the HAL REQ structure */
22251 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22252 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22253 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22254
22255 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 image will be sent to HAL*/
22258
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22265 usCurrentFragmentSize = FRAGMENT_SIZE;
22266
22267 /*Update the HAL REQ structure */
22268 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22269 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22270
22271 }
22272 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 usCurrentFragmentSize = FRAGMENT_SIZE;
22275
22276 /*Update the HAL REQ structure */
22277 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22278 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22279 }
22280
22281 /*-----------------------------------------------------------------------
22282 Get message buffer
22283 -----------------------------------------------------------------------*/
22284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22285 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22286 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22289 {
22290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22291 "Unable to get send buffer in NV Download req %x %x ",
22292 pEventData, pwdiNvDownloadReqParams);
22293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 }
22296
22297 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022298 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22300
22301 /* Appending the NV image fragment */
22302 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22303 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22304 usCurrentFragmentSize);
22305
22306 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022307 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022308
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22310 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 WDI_NV_DOWNLOAD_RESP);
22312
22313}
Jeff Johnsone7245742012-09-05 17:12:55 -070022314/*============================================================================
22315 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022316 ============================================================================*/
22317/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 @brief Helper routine used to find a session based on the BSSID
22319 @param pContext: pointer to the WLAN DAL context
22320 @param pDPContext: pointer to the Datapath context
22321
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022324*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022325WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022326WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22327{
22328 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22329
22330 pCB->pDPContext = pDPContext;
22331 return;
22332}
22333
22334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022335 @brief Helper routine used to find a session based on the BSSID
22336
22337
22338 @param pContext: pointer to the WLAN DAL context
22339
Jeff Johnson295189b2012-06-20 16:38:30 -070022340 @see
22341 @return pointer to Datapath context
22342*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022343WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022344WDI_DS_GetDatapathContext (void *pContext)
22345{
22346 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22347 return pCB->pDPContext;
22348}
22349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 @brief Helper routine used to find a session based on the BSSID
22351
22352
22353 @param pContext: pointer to the WLAN DAL context
22354 @param pDTDriverContext: pointer to the Transport Driver context
22355
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 @see
22357 @return void
22358*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022359WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022360WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22361{
22362 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22363
22364 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022366}
22367
22368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 @brief Helper routine used to find a session based on the BSSID
22370
22371
22372 @param pWDICtx: pointer to the WLAN DAL context
22373
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022376*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022377WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022378WDT_GetTransportDriverContext (void *pContext)
22379{
22380 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022382}
22383
Jeff Johnsone7245742012-09-05 17:12:55 -070022384/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 Helper inline converters
22386 ============================================================================*/
22387/*Convert WDI driver type into HAL driver type*/
22388WPT_STATIC WPT_INLINE WDI_Status
22389WDI_HAL_2_WDI_STATUS
22390(
22391 eHalStatus halStatus
22392)
22393{
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 the chances of getting inlined*/
22396 switch( halStatus )
22397 {
22398 case eHAL_STATUS_SUCCESS:
22399 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22400 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22401 return WDI_STATUS_SUCCESS;
22402 case eHAL_STATUS_FAILURE:
22403 return WDI_STATUS_E_FAILURE;
22404 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 return WDI_STATUS_MEM_FAILURE;
22406 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 default:
22409 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22410 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022411
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022413}/*WDI_HAL_2_WDI_STATUS*/
22414
22415/*Convert WDI request type into HAL request type*/
22416WPT_STATIC WPT_INLINE tHalHostMsgType
22417WDI_2_HAL_REQ_TYPE
22418(
22419 WDI_RequestEnumType wdiReqType
22420)
22421{
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 the chances of getting inlined*/
22424 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022433 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022435 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022437 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022459 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 return WLAN_HAL_RMV_STAKEY_REQ;
22461 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022462 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022468 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 case WDI_DEL_BA_REQ:
22470 return WLAN_HAL_DEL_BA_REQ;
22471#ifdef FEATURE_WLAN_CCX
22472 case WDI_TSM_STATS_REQ:
22473 return WLAN_HAL_TSM_STATS_REQ;
22474#endif
22475 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022476 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022478 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022479 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022480 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022482 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 case WDI_ADD_BA_SESSION_REQ:
22486 return WLAN_HAL_ADD_BA_SESSION_REQ;
22487 case WDI_TRIGGER_BA_REQ:
22488 return WLAN_HAL_TRIGGER_BA_REQ;
22489 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022490 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022491 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022493 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22494 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22495 case WDI_SET_MAX_TX_POWER_REQ:
22496 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022497 case WDI_SET_TX_POWER_REQ:
22498 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22500 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022501#ifdef FEATURE_WLAN_TDLS
22502 case WDI_TDLS_LINK_ESTABLISH_REQ:
22503 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22504#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022506 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022510 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022513 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 case WDI_REM_BEACON_FILTER_REQ:
22526 return WLAN_HAL_REM_BCN_FILTER_REQ;
22527 case WDI_SET_RSSI_THRESHOLDS_REQ:
22528 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22529 case WDI_HOST_OFFLOAD_REQ:
22530 return WLAN_HAL_HOST_OFFLOAD_REQ;
22531 case WDI_WOWL_ADD_BC_PTRN_REQ:
22532 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22533 case WDI_WOWL_DEL_BC_PTRN_REQ:
22534 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22535 case WDI_WOWL_ENTER_REQ:
22536 return WLAN_HAL_ENTER_WOWL_REQ;
22537 case WDI_WOWL_EXIT_REQ:
22538 return WLAN_HAL_EXIT_WOWL_REQ;
22539 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22540 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22541 case WDI_NV_DOWNLOAD_REQ:
22542 return WLAN_HAL_DOWNLOAD_NV_REQ;
22543 case WDI_FLUSH_AC_REQ:
22544 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22545 case WDI_BTAMP_EVENT_REQ:
22546 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22547#ifdef WLAN_FEATURE_VOWIFI_11R
22548 case WDI_AGGR_ADD_TS_REQ:
22549 return WLAN_HAL_AGGR_ADD_TS_REQ;
22550#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 case WDI_FTM_CMD_REQ:
22552 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 case WDI_ADD_STA_SELF_REQ:
22554 return WLAN_HAL_ADD_STA_SELF_REQ;
22555 case WDI_DEL_STA_SELF_REQ:
22556 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022557#ifdef FEATURE_OEM_DATA_SUPPORT
22558 case WDI_START_OEM_DATA_REQ:
22559 return WLAN_HAL_START_OEM_DATA_REQ;
22560#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 case WDI_HOST_RESUME_REQ:
22562 return WLAN_HAL_HOST_RESUME_REQ;
22563 case WDI_HOST_SUSPEND_IND:
22564 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022565 case WDI_TRAFFIC_STATS_IND:
22566 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022567#ifdef WLAN_FEATURE_11W
22568 case WDI_EXCLUDE_UNENCRYPTED_IND:
22569 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22570#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 case WDI_KEEP_ALIVE_REQ:
22572 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022573#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022574 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22575 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022576#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022577#ifdef FEATURE_WLAN_SCAN_PNO
22578 case WDI_SET_PREF_NETWORK_REQ:
22579 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22580 case WDI_SET_RSSI_FILTER_REQ:
22581 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22582 case WDI_UPDATE_SCAN_PARAMS_REQ:
22583 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22584#endif // FEATURE_WLAN_SCAN_PNO
22585 case WDI_SET_TX_PER_TRACKING_REQ:
22586 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22587#ifdef WLAN_FEATURE_PACKET_FILTERING
22588 case WDI_8023_MULTICAST_LIST_REQ:
22589 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22590 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022591 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22593 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22594 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22595 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22596#endif // WLAN_FEATURE_PACKET_FILTERING
22597 case WDI_HAL_DUMP_CMD_REQ:
22598 return WLAN_HAL_DUMP_COMMAND_REQ;
22599#ifdef WLAN_FEATURE_GTK_OFFLOAD
22600 case WDI_GTK_OFFLOAD_REQ:
22601 return WLAN_HAL_GTK_OFFLOAD_REQ;
22602 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22603 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22604#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22605
22606 case WDI_INIT_SCAN_CON_REQ:
22607 return WLAN_HAL_INIT_SCAN_CON_REQ;
22608 case WDI_SET_POWER_PARAMS_REQ:
22609 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22610 case WDI_SET_TM_LEVEL_REQ:
22611 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22612 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22613 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022614#ifdef WLAN_FEATURE_11AC
22615 case WDI_UPDATE_VHT_OP_MODE_REQ:
22616 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22617#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022618 case WDI_GET_ROAM_RSSI_REQ:
22619 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022620 case WDI_DHCP_START_IND:
22621 return WLAN_HAL_DHCP_START_IND;
22622 case WDI_DHCP_STOP_IND:
22623 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022624#ifdef FEATURE_WLAN_LPHB
22625 case WDI_LPHB_CFG_REQ:
22626 return WLAN_HAL_LPHB_CFG_REQ;
22627#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022628 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22629 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22630 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22631 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22632
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022636
Jeff Johnson295189b2012-06-20 16:38:30 -070022637}/*WDI_2_HAL_REQ_TYPE*/
22638
22639/*Convert WDI response type into HAL response type*/
22640WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22641HAL_2_WDI_RSP_TYPE
22642(
22643 tHalHostMsgType halMsg
22644)
22645{
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 the chances of getting inlined*/
22648 switch( halMsg )
22649 {
22650 case WLAN_HAL_START_RSP:
22651 return WDI_START_RESP;
22652 case WLAN_HAL_STOP_RSP:
22653 return WDI_STOP_RESP;
22654 case WLAN_HAL_INIT_SCAN_RSP:
22655 return WDI_INIT_SCAN_RESP;
22656 case WLAN_HAL_START_SCAN_RSP:
22657 return WDI_START_SCAN_RESP;
22658 case WLAN_HAL_END_SCAN_RSP:
22659 return WDI_END_SCAN_RESP;
22660 case WLAN_HAL_FINISH_SCAN_RSP:
22661 return WDI_FINISH_SCAN_RESP;
22662 case WLAN_HAL_CONFIG_STA_RSP:
22663 return WDI_CONFIG_STA_RESP;
22664 case WLAN_HAL_DELETE_STA_RSP:
22665 return WDI_DEL_STA_RESP;
22666 case WLAN_HAL_CONFIG_BSS_RSP:
22667 return WDI_CONFIG_BSS_RESP;
22668 case WLAN_HAL_DELETE_BSS_RSP:
22669 return WDI_DEL_BSS_RESP;
22670 case WLAN_HAL_JOIN_RSP:
22671 return WDI_JOIN_RESP;
22672 case WLAN_HAL_POST_ASSOC_RSP:
22673 return WDI_POST_ASSOC_RESP;
22674 case WLAN_HAL_SET_BSSKEY_RSP:
22675 return WDI_SET_BSS_KEY_RESP;
22676 case WLAN_HAL_SET_STAKEY_RSP:
22677 return WDI_SET_STA_KEY_RESP;
22678 case WLAN_HAL_RMV_BSSKEY_RSP:
22679 return WDI_RMV_BSS_KEY_RESP;
22680 case WLAN_HAL_RMV_STAKEY_RSP:
22681 return WDI_RMV_STA_KEY_RESP;
22682 case WLAN_HAL_SET_BCASTKEY_RSP:
22683 return WDI_SET_STA_BCAST_KEY_RESP;
22684 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22685 // return WDI_RMV_STA_BCAST_KEY_RESP;
22686 case WLAN_HAL_ADD_TS_RSP:
22687 return WDI_ADD_TS_RESP;
22688 case WLAN_HAL_DEL_TS_RSP:
22689 return WDI_DEL_TS_RESP;
22690 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22691 return WDI_UPD_EDCA_PRMS_RESP;
22692 case WLAN_HAL_ADD_BA_RSP:
22693 return WDI_ADD_BA_RESP;
22694 case WLAN_HAL_DEL_BA_RSP:
22695 return WDI_DEL_BA_RESP;
22696#ifdef FEATURE_WLAN_CCX
22697 case WLAN_HAL_TSM_STATS_RSP:
22698 return WDI_TSM_STATS_RESP;
22699#endif
22700 case WLAN_HAL_CH_SWITCH_RSP:
22701 return WDI_CH_SWITCH_RESP;
22702 case WLAN_HAL_SET_LINK_ST_RSP:
22703 return WDI_SET_LINK_ST_RESP;
22704 case WLAN_HAL_GET_STATS_RSP:
22705 return WDI_GET_STATS_RESP;
22706 case WLAN_HAL_UPDATE_CFG_RSP:
22707 return WDI_UPDATE_CFG_RESP;
22708 case WLAN_HAL_ADD_BA_SESSION_RSP:
22709 return WDI_ADD_BA_SESSION_RESP;
22710 case WLAN_HAL_TRIGGER_BA_RSP:
22711 return WDI_TRIGGER_BA_RESP;
22712 case WLAN_HAL_UPDATE_BEACON_RSP:
22713 return WDI_UPD_BCON_PRMS_RESP;
22714 case WLAN_HAL_SEND_BEACON_RSP:
22715 return WDI_SND_BCON_RESP;
22716 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22717 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22718 /*Indications*/
22719 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22720 return WDI_HAL_RSSI_NOTIFICATION_IND;
22721 case WLAN_HAL_MISSED_BEACON_IND:
22722 return WDI_HAL_MISSED_BEACON_IND;
22723 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22724 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22725 case WLAN_HAL_MIC_FAILURE_IND:
22726 return WDI_HAL_MIC_FAILURE_IND;
22727 case WLAN_HAL_FATAL_ERROR_IND:
22728 return WDI_HAL_FATAL_ERROR_IND;
22729 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22730 return WDI_HAL_DEL_STA_IND;
22731 case WLAN_HAL_COEX_IND:
22732 return WDI_HAL_COEX_IND;
22733 case WLAN_HAL_OTA_TX_COMPL_IND:
22734 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WLAN_HAL_P2P_NOA_ATTR_IND:
22736 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022737 case WLAN_HAL_P2P_NOA_START_IND:
22738 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WLAN_HAL_TX_PER_HIT_IND:
22740 return WDI_HAL_TX_PER_HIT_IND;
22741 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22742 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022743 case WLAN_HAL_SET_TX_POWER_RSP:
22744 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 case WLAN_HAL_SET_P2P_GONOA_RSP:
22746 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022747#ifdef FEATURE_WLAN_TDLS
22748 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22749 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22750 case WLAN_HAL_TDLS_IND:
22751 return WDI_HAL_TDLS_IND;
22752#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022762 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022766 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022768 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022770 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022771 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22772 return WDI_SET_BEACON_FILTER_RESP;
22773 case WLAN_HAL_REM_BCN_FILTER_RSP:
22774 return WDI_REM_BEACON_FILTER_RESP;
22775 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22776 return WDI_SET_RSSI_THRESHOLDS_RESP;
22777 case WLAN_HAL_HOST_OFFLOAD_RSP:
22778 return WDI_HOST_OFFLOAD_RESP;
22779 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22780 return WDI_WOWL_ADD_BC_PTRN_RESP;
22781 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22782 return WDI_WOWL_DEL_BC_PTRN_RESP;
22783 case WLAN_HAL_ENTER_WOWL_RSP:
22784 return WDI_WOWL_ENTER_RESP;
22785 case WLAN_HAL_EXIT_WOWL_RSP:
22786 return WDI_WOWL_EXIT_RESP;
22787 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22788 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22789 case WLAN_HAL_DOWNLOAD_NV_RSP:
22790 return WDI_NV_DOWNLOAD_RESP;
22791 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22792 return WDI_FLUSH_AC_RESP;
22793 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22794 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 case WLAN_HAL_PROCESS_PTT_RSP:
22796 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 case WLAN_HAL_ADD_STA_SELF_RSP:
22798 return WDI_ADD_STA_SELF_RESP;
22799case WLAN_HAL_DEL_STA_SELF_RSP:
22800 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022801#ifdef FEATURE_OEM_DATA_SUPPORT
22802 case WLAN_HAL_START_OEM_DATA_RSP:
22803 return WDI_START_OEM_DATA_RESP;
22804#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 case WLAN_HAL_HOST_RESUME_RSP:
22806 return WDI_HOST_RESUME_RESP;
22807 case WLAN_HAL_KEEP_ALIVE_RSP:
22808 return WDI_KEEP_ALIVE_RESP;
22809#ifdef FEATURE_WLAN_SCAN_PNO
22810 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22811 return WDI_SET_PREF_NETWORK_RESP;
22812 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22815 return WDI_UPDATE_SCAN_PARAMS_RESP;
22816 case WLAN_HAL_PREF_NETW_FOUND_IND:
22817 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22818#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022819#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022820 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22821 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022822#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22824 return WDI_SET_TX_PER_TRACKING_RESP;
22825#ifdef WLAN_FEATURE_PACKET_FILTERING
22826 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22827 return WDI_8023_MULTICAST_LIST_RESP;
22828 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22829 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22830 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22831 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22832 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22833 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22834#endif // WLAN_FEATURE_PACKET_FILTERING
22835
22836 case WLAN_HAL_DUMP_COMMAND_RSP:
22837 return WDI_HAL_DUMP_CMD_RESP;
22838 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22839 return WDI_SET_POWER_PARAMS_RESP;
22840#ifdef WLAN_FEATURE_VOWIFI_11R
22841 case WLAN_HAL_AGGR_ADD_TS_RSP:
22842 return WDI_AGGR_ADD_TS_RESP;
22843#endif
22844
22845#ifdef WLAN_FEATURE_GTK_OFFLOAD
22846 case WLAN_HAL_GTK_OFFLOAD_RSP:
22847 return WDI_GTK_OFFLOAD_RESP;
22848 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22849 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22850#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22851#ifdef WLAN_WAKEUP_EVENTS
22852 case WLAN_HAL_WAKE_REASON_IND:
22853 return WDI_HAL_WAKE_REASON_IND;
22854#endif // WLAN_WAKEUP_EVENTS
22855
22856 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22857 return WDI_SET_TM_LEVEL_RESP;
22858 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22859 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022860#ifdef WLAN_FEATURE_11AC
22861 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22862 return WDI_UPDATE_VHT_OP_MODE_RESP;
22863#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022864#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22865 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22866 return WDI_GET_ROAM_RSSI_RESP;
22867#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022868
Leo Chang00bc9132013-08-01 19:21:11 -070022869#ifdef FEATURE_WLAN_LPHB
22870 case WLAN_HAL_LPHB_IND:
22871 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22872 case WLAN_HAL_LPHB_CFG_RSP:
22873 return WDI_LPHB_CFG_RESP;
22874#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022875
22876 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22877 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022878 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22879 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022880
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022882 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 }
22884
22885}/*HAL_2_WDI_RSP_TYPE*/
22886
22887
22888/*Convert WDI driver type into HAL driver type*/
22889WPT_STATIC WPT_INLINE tDriverType
22890WDI_2_HAL_DRV_TYPE
22891(
22892 WDI_DriverType wdiDriverType
22893)
22894{
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022896 the chances of getting inlined*/
22897 switch( wdiDriverType )
22898 {
22899 case WDI_DRIVER_TYPE_PRODUCTION:
22900 return eDRIVER_TYPE_PRODUCTION;
22901 case WDI_DRIVER_TYPE_MFG:
22902 return eDRIVER_TYPE_MFG;
22903 case WDI_DRIVER_TYPE_DVT:
22904 return eDRIVER_TYPE_DVT;
22905 }
22906
Jeff Johnsone7245742012-09-05 17:12:55 -070022907 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022908}/*WDI_2_HAL_DRV_TYPE*/
22909
22910
22911/*Convert WDI stop reason into HAL stop reason*/
22912WPT_STATIC WPT_INLINE tHalStopType
22913WDI_2_HAL_STOP_REASON
22914(
22915 WDI_StopType wdiDriverType
22916)
22917{
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022919 the chances of getting inlined*/
22920 switch( wdiDriverType )
22921 {
22922 case WDI_STOP_TYPE_SYS_RESET:
22923 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022924 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22925 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 case WDI_STOP_TYPE_RF_KILL:
22927 return HAL_STOP_TYPE_RF_KILL;
22928 }
22929
Jeff Johnsone7245742012-09-05 17:12:55 -070022930 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022931}/*WDI_2_HAL_STOP_REASON*/
22932
22933
22934/*Convert WDI scan mode type into HAL scan mode type*/
22935WPT_STATIC WPT_INLINE eHalSysMode
22936WDI_2_HAL_SCAN_MODE
22937(
22938 WDI_ScanMode wdiScanMode
22939)
22940{
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 the chances of getting inlined*/
22943 switch( wdiScanMode )
22944 {
22945 case WDI_SCAN_MODE_NORMAL:
22946 return eHAL_SYS_MODE_NORMAL;
22947 case WDI_SCAN_MODE_LEARN:
22948 return eHAL_SYS_MODE_LEARN;
22949 case WDI_SCAN_MODE_SCAN:
22950 return eHAL_SYS_MODE_SCAN;
22951 case WDI_SCAN_MODE_PROMISC:
22952 return eHAL_SYS_MODE_PROMISC;
22953 case WDI_SCAN_MODE_SUSPEND_LINK:
22954 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022955 case WDI_SCAN_MODE_ROAM_SCAN:
22956 return eHAL_SYS_MODE_ROAM_SCAN;
22957 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22958 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 }
22960
Jeff Johnsone7245742012-09-05 17:12:55 -070022961 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022962}/*WDI_2_HAL_SCAN_MODE*/
22963
22964/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022965WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022966WDI_2_HAL_SEC_CH_OFFSET
22967(
22968 WDI_HTSecondaryChannelOffset wdiSecChOffset
22969)
22970{
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 the chances of getting inlined*/
22973 switch( wdiSecChOffset )
22974 {
22975 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022976 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022978 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022980 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22981#ifdef WLAN_FEATURE_11AC
22982 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22983 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22984 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22985 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22986 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22987 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22988 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22989 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22990 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22991 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22992 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22993 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22994 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22995 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22996#endif
22997 default:
22998 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 }
23000
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023002}/*WDI_2_HAL_SEC_CH_OFFSET*/
23003
23004/*Convert WDI BSS type into HAL BSS type*/
23005WPT_STATIC WPT_INLINE tSirBssType
23006WDI_2_HAL_BSS_TYPE
23007(
23008 WDI_BssType wdiBSSType
23009)
23010{
Jeff Johnsone7245742012-09-05 17:12:55 -070023011 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023012 the chances of getting inlined*/
23013 switch( wdiBSSType )
23014 {
23015 case WDI_INFRASTRUCTURE_MODE:
23016 return eSIR_INFRASTRUCTURE_MODE;
23017 case WDI_INFRA_AP_MODE:
23018 return eSIR_INFRA_AP_MODE;
23019 case WDI_IBSS_MODE:
23020 return eSIR_IBSS_MODE;
23021 case WDI_BTAMP_STA_MODE:
23022 return eSIR_BTAMP_STA_MODE;
23023 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 case WDI_BSS_AUTO_MODE:
23026 return eSIR_AUTO_MODE;
23027 }
23028
Jeff Johnsone7245742012-09-05 17:12:55 -070023029 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023030}/*WDI_2_HAL_BSS_TYPE*/
23031
23032/*Convert WDI NW type into HAL NW type*/
23033WPT_STATIC WPT_INLINE tSirNwType
23034WDI_2_HAL_NW_TYPE
23035(
23036 WDI_NwType wdiNWType
23037)
23038{
Jeff Johnsone7245742012-09-05 17:12:55 -070023039 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 the chances of getting inlined*/
23041 switch( wdiNWType )
23042 {
23043 case WDI_11A_NW_TYPE:
23044 return eSIR_11A_NW_TYPE;
23045 case WDI_11B_NW_TYPE:
23046 return eSIR_11B_NW_TYPE;
23047 case WDI_11G_NW_TYPE:
23048 return eSIR_11G_NW_TYPE;
23049 case WDI_11N_NW_TYPE:
23050 return eSIR_11N_NW_TYPE;
23051 }
23052
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023054}/*WDI_2_HAL_NW_TYPE*/
23055
23056/*Convert WDI chanel bonding type into HAL cb type*/
23057WPT_STATIC WPT_INLINE ePhyChanBondState
23058WDI_2_HAL_CB_STATE
23059(
23060 WDI_PhyChanBondState wdiCbState
23061)
23062{
Jeff Johnsone7245742012-09-05 17:12:55 -070023063 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 the chances of getting inlined*/
23065 switch ( wdiCbState )
23066 {
23067 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23068 return PHY_SINGLE_CHANNEL_CENTERED;
23069 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23070 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23071 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23072 return PHY_DOUBLE_CHANNEL_CENTERED;
23073 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23074 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023075#ifdef WLAN_FEATURE_11AC
23076 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23077 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23078 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23079 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23080 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23081 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23082 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23083 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23084 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23085 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23086 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23087 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23088 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23089 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23090#endif
23091 case WDI_MAX_CB_STATE:
23092 default:
23093 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023095
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 return PHY_CHANNEL_BONDING_STATE_MAX;
23097}/*WDI_2_HAL_CB_STATE*/
23098
23099/*Convert WDI chanel bonding type into HAL cb type*/
23100WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23101WDI_2_HAL_HT_OPER_MODE
23102(
23103 WDI_HTOperatingMode wdiHTOperMode
23104)
23105{
Jeff Johnsone7245742012-09-05 17:12:55 -070023106 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 the chances of getting inlined*/
23108 switch ( wdiHTOperMode )
23109 {
23110 case WDI_HT_OP_MODE_PURE:
23111 return eSIR_HT_OP_MODE_PURE;
23112 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23113 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23114 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23115 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23116 case WDI_HT_OP_MODE_MIXED:
23117 return eSIR_HT_OP_MODE_MIXED;
23118 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023119
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 return eSIR_HT_OP_MODE_MAX;
23121}/*WDI_2_HAL_HT_OPER_MODE*/
23122
23123/*Convert WDI mimo PS type into HAL mimo PS type*/
23124WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23125WDI_2_HAL_MIMO_PS
23126(
23127 WDI_HTMIMOPowerSaveState wdiHTOperMode
23128)
23129{
Jeff Johnsone7245742012-09-05 17:12:55 -070023130 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 the chances of getting inlined*/
23132 switch ( wdiHTOperMode )
23133 {
23134 case WDI_HT_MIMO_PS_STATIC:
23135 return eSIR_HT_MIMO_PS_STATIC;
23136 case WDI_HT_MIMO_PS_DYNAMIC:
23137 return eSIR_HT_MIMO_PS_DYNAMIC;
23138 case WDI_HT_MIMO_PS_NA:
23139 return eSIR_HT_MIMO_PS_NA;
23140 case WDI_HT_MIMO_PS_NO_LIMIT:
23141 return eSIR_HT_MIMO_PS_NO_LIMIT;
23142 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023143
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 return eSIR_HT_MIMO_PS_MAX;
23145}/*WDI_2_HAL_MIMO_PS*/
23146
23147/*Convert WDI ENC type into HAL ENC type*/
23148WPT_STATIC WPT_INLINE tAniEdType
23149WDI_2_HAL_ENC_TYPE
23150(
23151 WDI_EncryptType wdiEncType
23152)
23153{
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 the chances of getting inlined*/
23156 switch ( wdiEncType )
23157 {
23158 case WDI_ENCR_NONE:
23159 return eSIR_ED_NONE;
23160
23161 case WDI_ENCR_WEP40:
23162 return eSIR_ED_WEP40;
23163
23164 case WDI_ENCR_WEP104:
23165 return eSIR_ED_WEP104;
23166
23167 case WDI_ENCR_TKIP:
23168 return eSIR_ED_TKIP;
23169
23170 case WDI_ENCR_CCMP:
23171 return eSIR_ED_CCMP;
23172
23173 case WDI_ENCR_AES_128_CMAC:
23174 return eSIR_ED_AES_128_CMAC;
23175#if defined(FEATURE_WLAN_WAPI)
23176 case WDI_ENCR_WPI:
23177 return eSIR_ED_WPI;
23178#endif
23179 default:
23180 return eSIR_ED_NOT_IMPLEMENTED;
23181 }
23182
23183}/*WDI_2_HAL_ENC_TYPE*/
23184
23185/*Convert WDI WEP type into HAL WEP type*/
23186WPT_STATIC WPT_INLINE tAniWepType
23187WDI_2_HAL_WEP_TYPE
23188(
23189 WDI_WepType wdiWEPType
23190)
23191{
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 the chances of getting inlined*/
23194 switch ( wdiWEPType )
23195 {
23196 case WDI_WEP_STATIC:
23197 return eSIR_WEP_STATIC;
23198
23199 case WDI_WEP_DYNAMIC:
23200 return eSIR_WEP_DYNAMIC;
23201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023202
Jeff Johnson295189b2012-06-20 16:38:30 -070023203 return eSIR_WEP_MAX;
23204}/*WDI_2_HAL_WEP_TYPE*/
23205
23206WPT_STATIC WPT_INLINE tSirLinkState
23207WDI_2_HAL_LINK_STATE
23208(
23209 WDI_LinkStateType wdiLinkState
23210)
23211{
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 the chances of getting inlined*/
23214 switch ( wdiLinkState )
23215 {
23216 case WDI_LINK_IDLE_STATE:
23217 return eSIR_LINK_IDLE_STATE;
23218
23219 case WDI_LINK_PREASSOC_STATE:
23220 return eSIR_LINK_PREASSOC_STATE;
23221
23222 case WDI_LINK_POSTASSOC_STATE:
23223 return eSIR_LINK_POSTASSOC_STATE;
23224
23225 case WDI_LINK_AP_STATE:
23226 return eSIR_LINK_AP_STATE;
23227
23228 case WDI_LINK_IBSS_STATE:
23229 return eSIR_LINK_IBSS_STATE;
23230
23231 case WDI_LINK_BTAMP_PREASSOC_STATE:
23232 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23233
23234 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23235 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23236
23237 case WDI_LINK_BTAMP_AP_STATE:
23238 return eSIR_LINK_BTAMP_AP_STATE;
23239
23240 case WDI_LINK_BTAMP_STA_STATE:
23241 return eSIR_LINK_BTAMP_STA_STATE;
23242
23243 case WDI_LINK_LEARN_STATE:
23244 return eSIR_LINK_LEARN_STATE;
23245
23246 case WDI_LINK_SCAN_STATE:
23247 return eSIR_LINK_SCAN_STATE;
23248
23249 case WDI_LINK_FINISH_SCAN_STATE:
23250 return eSIR_LINK_FINISH_SCAN_STATE;
23251
23252 case WDI_LINK_INIT_CAL_STATE:
23253 return eSIR_LINK_INIT_CAL_STATE;
23254
23255 case WDI_LINK_FINISH_CAL_STATE:
23256 return eSIR_LINK_FINISH_CAL_STATE;
23257
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 case WDI_LINK_LISTEN_STATE:
23259 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023260
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023261 case WDI_LINK_SEND_ACTION_STATE:
23262 return eSIR_LINK_SEND_ACTION_STATE;
23263
Jeff Johnson295189b2012-06-20 16:38:30 -070023264 default:
23265 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023267}
23268
Jeff Johnsone7245742012-09-05 17:12:55 -070023269/*Translate a STA Context from WDI into HAL*/
23270WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023271void
23272WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023273(
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 tConfigStaParams* phalConfigSta,
23275 WDI_ConfigStaReqInfoType* pwdiConfigSta
23276)
23277{
23278 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023279#ifdef WLAN_FEATURE_11AC
23280 /* Get the Version 1 Handler */
23281 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23282 if (WDI_getFwWlanFeatCaps(DOT11AC))
23283 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023284 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 }
23286#endif
23287 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 the chances of getting inlined*/
23289
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 wpalMemoryCopy(phalConfigSta->bssId,
23291 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23292
23293 wpalMemoryCopy(phalConfigSta->staMac,
23294 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023295
23296 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23297 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23298 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23299 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23300 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23301 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23302 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23303 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23304 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23305 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23306 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23307 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23308 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23309 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23310 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23311 phalConfigSta->action = pwdiConfigSta->wdiAction;
23312 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23313 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23314 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23315 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23316 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23317 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23318 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023319
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23321
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 pwdiConfigSta->wdiSupportedRates.opRateMode;
23324 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23328 }
23329 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23330 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23333 }
23334 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23335 {
23336 phalConfigSta->supportedRates.aniLegacyRates[i] =
23337 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23338 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23341 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23342 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023343 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23345 }
23346 phalConfigSta->supportedRates.rxHighestDataRate =
23347 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23348
Jeff Johnsone7245742012-09-05 17:12:55 -070023349#ifdef WLAN_FEATURE_11AC
23350 if(phalConfigSta_V1 != NULL)
23351 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023352 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23353 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23354 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23355 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023356 }
23357#endif
23358
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360
Jeff Johnsone7245742012-09-05 17:12:55 -070023361#ifdef WLAN_FEATURE_11AC
23362 if(phalConfigSta_V1 != NULL)
23363 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023364 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23365 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023366 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023367 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23368 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23369
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 }
23371#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023372}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023373
23374/*Translate a Rate set info from WDI into HAL*/
23375WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023376WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023377(
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 tSirMacRateSet* pHalRateSet,
23379 WDI_RateSet* pwdiRateSet
23380)
23381{
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23384
23385 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23386 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23387
23388 for ( i = 0; i < pHalRateSet->numRates; i++ )
23389 {
23390 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23391 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023392
Jeff Johnson295189b2012-06-20 16:38:30 -070023393}/*WDI_CopyWDIRateSetToHALRateSet*/
23394
23395
23396/*Translate an EDCA Parameter Record from WDI into HAL*/
23397WPT_STATIC WPT_INLINE void
23398WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023399(
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 tSirMacEdcaParamRecord* phalEdcaParam,
23401 WDI_EdcaParamRecord* pWDIEdcaParam
23402)
23403{
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 the chances of getting inlined*/
23406
23407 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23408 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23409 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23410 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23411
23412 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23413 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23414 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23415}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23416
23417
23418/*Copy a management frame header from WDI fmt into HAL fmt*/
23419WPT_STATIC WPT_INLINE void
23420WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23421(
23422 tSirMacMgmtHdr* pmacMgmtHdr,
23423 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23424)
23425{
23426 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23427 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23428 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23429 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23430 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23431 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23432 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23433 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23434 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23435 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23436 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23437
23438 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23439 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23440
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023443 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 pwdiMacMgmtHdr->bssId, 6);
23447
23448 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23449 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23450 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23451
23452}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23453
23454
23455/*Copy config bss parameters from WDI fmt into HAL fmt*/
23456WPT_STATIC WPT_INLINE void
23457WDI_CopyWDIConfigBSSToHALConfigBSS
23458(
23459 tConfigBssParams* phalConfigBSS,
23460 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23461)
23462{
23463
23464 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023465#ifdef WLAN_FEATURE_11AC
23466 /* Get the Version 1 Handler */
23467 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23468 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023469 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023470#endif
23471
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 wpalMemoryCopy( phalConfigBSS->bssId,
23473 pwdiConfigBSS->macBSSID,
23474 WDI_MAC_ADDR_LEN);
23475
23476#ifdef HAL_SELF_STA_PER_BSS
23477 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23478 pwdiConfigBSS->macSelfAddr,
23479 WDI_MAC_ADDR_LEN);
23480#endif
23481
23482 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23483
23484 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23485 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23486
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 pwdiConfigBSS->ucShortSlotTimeSupported;
23489 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23490 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23491 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23492 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23493 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023494 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23496 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23497 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23498 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23499 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23500 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23501 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23502 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23503 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23504 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23505 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23506
Jeff Johnsone7245742012-09-05 17:12:55 -070023507 phalConfigBSS->htOperMode =
23508 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023509
23510 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23511 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23512 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23513 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23514
23515#ifdef WLAN_FEATURE_VOWIFI
23516 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23517#endif
23518
23519 /*! Used 32 as magic number because that is how the ssid is declared inside the
23520 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023521 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23523 pwdiConfigBSS->wdiSSID.ucLength : 32;
23524 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 pwdiConfigBSS->wdiSSID.sSSID,
23526 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023527
23528 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23529 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023530
Jeff Johnson295189b2012-06-20 16:38:30 -070023531 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23532 &pwdiConfigBSS->wdiRateSet);
23533
23534 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23535
23536 if(phalConfigBSS->edcaParamsValid)
23537 {
23538 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23539 &pwdiConfigBSS->wdiBEEDCAParams);
23540 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23541 &pwdiConfigBSS->wdiBKEDCAParams);
23542 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23543 &pwdiConfigBSS->wdiVIEDCAParams);
23544 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23545 &pwdiConfigBSS->wdiVOEDCAParams);
23546 }
23547
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023549
23550 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23551
23552#ifdef WLAN_FEATURE_VOWIFI_11R
23553
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023556
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 if( phalConfigBSS->extSetStaKeyParamValid )
23558 {
23559 /*-----------------------------------------------------------------------
23560 Copy the STA Key parameters into the HAL message
23561 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023562 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023563 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23564
Jeff Johnsone7245742012-09-05 17:12:55 -070023565 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023566 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23567
23568 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23569
23570 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23571
23572 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23573
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23575 keyIndex++)
23576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23579 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23580 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23581 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23582 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23583 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023584 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23590 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 WDI_MAX_KEY_LENGTH);
23593 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 }
23595 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23596 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023597 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023598 sizeof(phalConfigBSS->extSetStaKeyParam) );
23599 }
23600
23601#endif /*WLAN_FEATURE_VOWIFI_11R*/
23602
Jeff Johnsone7245742012-09-05 17:12:55 -070023603#ifdef WLAN_FEATURE_11AC
23604 if(phalConfigBSS_V1 != NULL)
23605 {
23606 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23607 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23608 }
23609#endif
23610
Jeff Johnson295189b2012-06-20 16:38:30 -070023611}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23612
23613
Jeff Johnsone7245742012-09-05 17:12:55 -070023614/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 pointed to by user data */
23616WPT_STATIC WPT_INLINE void
23617WDI_ExtractRequestCBFromEvent
23618(
23619 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 void** ppUserData
23622)
23623{
23624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23625 switch ( pEvent->wdiRequest )
23626 {
23627 case WDI_START_REQ:
23628 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23629 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23630 break;
23631 case WDI_STOP_REQ:
23632 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23633 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23634 break;
23635 case WDI_INIT_SCAN_REQ:
23636 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23637 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23638 break;
23639 case WDI_START_SCAN_REQ:
23640 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23641 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23642 break;
23643 case WDI_END_SCAN_REQ:
23644 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23645 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23646 break;
23647 case WDI_FINISH_SCAN_REQ:
23648 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23649 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23650 break;
23651 case WDI_JOIN_REQ:
23652 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23653 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23654 break;
23655 case WDI_CONFIG_BSS_REQ:
23656 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23657 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23658 break;
23659 case WDI_DEL_BSS_REQ:
23660 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23661 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23662 break;
23663 case WDI_POST_ASSOC_REQ:
23664 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23665 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23666 break;
23667 case WDI_DEL_STA_REQ:
23668 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23669 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23670 break;
23671 case WDI_DEL_STA_SELF_REQ:
23672 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23673 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23674 break;
23675
23676 case WDI_SET_BSS_KEY_REQ:
23677 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23678 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23679 break;
23680 case WDI_RMV_BSS_KEY_REQ:
23681 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23682 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23683 break;
23684 case WDI_SET_STA_KEY_REQ:
23685 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23686 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23687 break;
23688 case WDI_RMV_STA_KEY_REQ:
23689 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23690 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23691 break;
23692 case WDI_ADD_TS_REQ:
23693 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23694 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23695 break;
23696 case WDI_DEL_TS_REQ:
23697 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23698 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23699 break;
23700 case WDI_UPD_EDCA_PRMS_REQ:
23701 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23702 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23703 break;
23704 case WDI_ADD_BA_SESSION_REQ:
23705 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23706 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23707 break;
23708 case WDI_DEL_BA_REQ:
23709 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23710 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23711 break;
23712#ifdef FEATURE_WLAN_CCX
23713 case WDI_TSM_STATS_REQ:
23714 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23715 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23716 break;
23717#endif
23718 case WDI_CH_SWITCH_REQ:
23719 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23720 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23721 break;
23722 case WDI_CONFIG_STA_REQ:
23723 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23724 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23725 break;
23726 case WDI_SET_LINK_ST_REQ:
23727 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23728 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23729 break;
23730 case WDI_GET_STATS_REQ:
23731 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23732 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23733 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023734#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23735 case WDI_GET_ROAM_RSSI_REQ:
23736 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23737 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23738 break;
23739#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 case WDI_UPDATE_CFG_REQ:
23741 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23742 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23743 break;
23744 case WDI_ADD_BA_REQ:
23745 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23746 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23747 break;
23748 case WDI_TRIGGER_BA_REQ:
23749 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23750 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23751 break;
23752 case WDI_UPD_BCON_PRMS_REQ:
23753 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23754 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23755 break;
23756 case WDI_SND_BCON_REQ:
23757 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23758 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23759 break;
23760 case WDI_ENTER_BMPS_REQ:
23761 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23762 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23763 break;
23764 case WDI_EXIT_BMPS_REQ:
23765 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23766 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23767 break;
23768 case WDI_ENTER_UAPSD_REQ:
23769 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23770 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23771 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023772 case WDI_EXIT_UAPSD_REQ:
23773 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23774 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23775 break;
23776 case WDI_SET_UAPSD_PARAM_REQ:
23777 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23778 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23779 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023780 case WDI_UPDATE_UAPSD_PARAM_REQ:
23781 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23782 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23783 break;
23784 case WDI_CONFIGURE_RXP_FILTER_REQ:
23785 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23786 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23787 break;
23788 case WDI_SET_BEACON_FILTER_REQ:
23789 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23790 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23791 break;
23792 case WDI_REM_BEACON_FILTER_REQ:
23793 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23794 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 case WDI_SET_RSSI_THRESHOLDS_REQ:
23797 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23798 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23799 break;
23800 case WDI_HOST_OFFLOAD_REQ:
23801 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23802 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23803 break;
23804 case WDI_WOWL_ADD_BC_PTRN_REQ:
23805 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23806 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23807 break;
23808 case WDI_WOWL_DEL_BC_PTRN_REQ:
23809 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23810 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23811 break;
23812 case WDI_WOWL_ENTER_REQ:
23813 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23814 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23815 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023816 case WDI_WOWL_EXIT_REQ:
23817 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23818 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23819 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23821 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23822 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23823 break;
23824 case WDI_FLUSH_AC_REQ:
23825 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23826 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23827 break;
23828 case WDI_BTAMP_EVENT_REQ:
23829 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23830 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23831 break;
23832 case WDI_KEEP_ALIVE_REQ:
23833 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23834 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23835 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023836#if defined FEATURE_WLAN_SCAN_PNO
23837 case WDI_SET_PREF_NETWORK_REQ:
23838 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23839 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23840 break;
23841 case WDI_SET_RSSI_FILTER_REQ:
23842 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23843 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23844 break;
23845 case WDI_UPDATE_SCAN_PARAMS_REQ:
23846 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23847 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23848 break;
23849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 case WDI_SET_TX_PER_TRACKING_REQ:
23851 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23852 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023853 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023854#if defined WLAN_FEATURE_PACKET_FILTERING
23855 case WDI_8023_MULTICAST_LIST_REQ:
23856 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23857 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23858 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023859 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23860 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23861 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23862 break;
23863 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23864 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23865 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23866 break;
23867 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23868 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23869 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23870 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023871#endif
23872 case WDI_SET_POWER_PARAMS_REQ:
23873 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23874 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23875 break;
23876#if defined WLAN_FEATURE_GTK_OFFLOAD
23877 case WDI_GTK_OFFLOAD_REQ:
23878 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23879 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23880 break;
23881 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23882 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23883 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23884 break;
23885#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023886
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 default:
23888 *ppfnReqCB = NULL;
23889 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 }
23892}/*WDI_ExtractRequestCBFromEvent*/
23893
23894
23895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023897 frame xtl is enabled for a particular STA.
23898
23899 WDI_PostAssocReq must have been called.
23900
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 @param uSTAIdx: STA index
23902
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 @see WDI_PostAssocReq
23904 @return Result of the function call
23905*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023906wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023907WDI_IsHwFrameTxTranslationCapable
23908(
23909 wpt_uint8 uSTAIdx
23910)
23911{
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 uma value*/
23914 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023915 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 ------------------------------------------------------------------------*/
23917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23918 {
23919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23920 "WDI API call before module is initialized - Fail request");
23921
Jeff Johnsone7245742012-09-05 17:12:55 -070023922 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023923 }
23924
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023925#ifdef WLAN_SOFTAP_VSTA_FEATURE
23926 if (IS_VSTA_IDX(uSTAIdx))
23927 {
23928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23929 "STA %d is a Virtual STA, "
23930 "HW frame translation disabled", uSTAIdx);
23931 return eWLAN_PAL_FALSE;
23932 }
23933#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023934
Jeff Johnson295189b2012-06-20 16:38:30 -070023935 return gWDICb.bFrameTransEnabled;
23936}/*WDI_IsHwFrameTxTranslationCapable*/
23937
23938#ifdef FEATURE_WLAN_SCAN_PNO
23939/**
23940 @brief WDI_SetPreferredNetworkList
23941
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023944
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 wdiPNOScanCb: callback for passing back the response
23946 of the Set PNO operation received from the
23947 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023948
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 callback
23951
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 @return Result of the function call
23953*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023955WDI_SetPreferredNetworkReq
23956(
23957 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23958 WDI_PNOScanCb wdiPNOScanCb,
23959 void* pUserData
23960)
23961{
23962 WDI_EventInfoType wdiEventData = {{0}};
23963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23964
23965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 ------------------------------------------------------------------------*/
23968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23969 {
23970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23971 "WDI API call before module is initialized - Fail request");
23972
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 }
23975
23976 /*------------------------------------------------------------------------
23977 Fill in Event data and post to the Main FSM
23978 ------------------------------------------------------------------------*/
23979 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 wdiEventData.pUserData = pUserData;
23984
23985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23986}
23987
23988
23989/**
23990 @brief WDI_SetRssiFilterReq
23991
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023994
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 wdiRssiFilterCb: callback for passing back the response
23996 of the Set RSSI Filter operation received from the
23997 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023998
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 callback
24001
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 @return Result of the function call
24003*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024005WDI_SetRssiFilterReq
24006(
24007 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24008 WDI_RssiFilterCb wdiRssiFilterCb,
24009 void* pUserData
24010)
24011{
24012 WDI_EventInfoType wdiEventData = {{0}};
24013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24014
24015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 ------------------------------------------------------------------------*/
24018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24019 {
24020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24021 "WDI API call before module is initialized - Fail request");
24022
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 }
24025
24026 /*------------------------------------------------------------------------
24027 Fill in Event data and post to the Main FSM
24028 ------------------------------------------------------------------------*/
24029 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 wdiEventData.pUserData = pUserData;
24034
24035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24036}/*WDI_SetRssiFilterReq*/
24037
24038/**
24039 @brief WDI_UpdateScanParamsReq
24040
Jeff Johnsone7245742012-09-05 17:12:55 -070024041 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024042 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024043
Jeff Johnson295189b2012-06-20 16:38:30 -070024044 wdiUpdateScanParamsCb: callback for passing back the response
24045 of the Set PNO operation received from the
24046 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024047
Jeff Johnson295189b2012-06-20 16:38:30 -070024048 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 callback
24050
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 @return Result of the function call
24052*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024053WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024054WDI_UpdateScanParamsReq
24055(
24056 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24057 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24058 void* pUserData
24059)
24060{
24061 WDI_EventInfoType wdiEventData = {{0}};
24062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24063
24064 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024066 ------------------------------------------------------------------------*/
24067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24068 {
24069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24070 "WDI API call before module is initialized - Fail request");
24071
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 }
24074
24075 /*------------------------------------------------------------------------
24076 Fill in Event data and post to the Main FSM
24077 ------------------------------------------------------------------------*/
24078 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 wdiEventData.pUserData = pUserData;
24083
24084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24085}
24086
24087/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024090
24091 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 pwdiPNOScanReqParams: pointer to the info received
24093 from upper layers
24094 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 and its size
24096
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 @return Result of the function call
24098*/
24099
24100WDI_Status
24101WDI_PackPreferredNetworkList
24102(
24103 WDI_ControlBlockType* pWDICtx,
24104 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24105 wpt_uint8** ppSendBuffer,
24106 wpt_uint16* pSize
24107)
24108{
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 wpt_uint16 usDataOffset = 0;
24111 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024112 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 /*-----------------------------------------------------------------------
24115 Get message buffer
24116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024118 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024120 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 {
24122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24123 "Unable to get send buffer in Set PNO req %x ",
24124 pwdiPNOScanReqParams);
24125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 }
24128
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024129 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24130
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 /*-------------------------------------------------------------------------
24132 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24133 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024134 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024136 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024137 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24138
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024139 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024140 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024142 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24144
24145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024147 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24148 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24149 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24150
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024151 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 {
24153 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024154 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24156
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024157 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024159 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024160
24161 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024162 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024164
24165 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024166 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024167 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024168
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024171 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024172 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24173 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24174 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24175 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024176
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024177 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024179 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024180
24181 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024182 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24184
24185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024186 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024187 pPrefNetwListParams->aNetworks[i].ssId.length,
24188 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 }
24190
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024191 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024193 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24194 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24195 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24196
24197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024198 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024199 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24201 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24202
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024203 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024205 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024207 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24209 }
24210
24211 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024212 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024213 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24214 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24215 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024218 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024220 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024221
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024222 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24224 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24225 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024227
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024228 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024230 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024231
24232 /*Set the output values*/
24233 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024234 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024235
24236 return WDI_STATUS_SUCCESS;
24237}/*WDI_PackPreferredNetworkList*/
24238
24239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024241 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024242
24243 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 pwdiPNOScanReqParams: pointer to the info received
24245 from upper layers
24246 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024247 and its size
24248
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 @return Result of the function call
24250*/
24251
24252WDI_Status
24253WDI_PackPreferredNetworkListNew
24254(
24255 WDI_ControlBlockType* pWDICtx,
24256 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24257 wpt_uint8** ppSendBuffer,
24258 wpt_uint16* pSize
24259)
24260{
Jeff Johnsone7245742012-09-05 17:12:55 -070024261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024262 wpt_uint16 usDataOffset = 0;
24263 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024264 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024266
24267 /*-----------------------------------------------------------------------
24268 Get message buffer
24269 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024271 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024273 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 {
24275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24276 "Unable to get send buffer in Set PNO req %x ",
24277 pwdiPNOScanReqParams);
24278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 }
24281
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024282 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24283
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 /*-------------------------------------------------------------------------
24285 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24286 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024287 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024289 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24291
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024292 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24297
24298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24301 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24302 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24303
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024304 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 {
24306 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024307 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24309
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024310 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024312 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024313
24314 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024315 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317
24318 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024319 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024320 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024321
24322 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024323 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024328 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24330
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024331 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024333 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024334
24335 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024336 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24338
24339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024341 pPrefNetwListParams->aNetworks[i].ssId.length,
24342 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 }
24344
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024345 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24348 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24349 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24350
24351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024353 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24355 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24356
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024357 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024359 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024361 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24363 }
24364
24365 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024366 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24368 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24369 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024370 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024371
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024372 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024374 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024375
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024376 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24378 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24379 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024382 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024384 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024385
Jeff Johnson295189b2012-06-20 16:38:30 -070024386
24387 /*Set the output values*/
24388 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024389 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024390
24391 return WDI_STATUS_SUCCESS;
24392}/*WDI_PackPreferredNetworkListNew*/
24393
24394/**
24395 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024396
24397 @param pWDICtx: pointer to the WLAN DAL context
24398 pEventData: pointer to the event information structure
24399
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 @return Result of the function call
24401*/
24402WDI_Status
24403WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024404(
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 WDI_ControlBlockType* pWDICtx,
24406 WDI_EventInfoType* pEventData
24407)
24408{
24409 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24410 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024414
24415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 -------------------------------------------------------------------------*/
24418 if (( NULL == pEventData ) ||
24419 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24420 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24421 {
24422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024426 }
24427
24428 /*-------------------------------------------------------------------------
24429 Pack the PNO request structure based on version
24430 -------------------------------------------------------------------------*/
24431 if ( pWDICtx->wdiPNOVersion > 0 )
24432 {
24433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024434 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 pWDICtx->wdiPNOVersion);
24436
24437 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24438 &pSendBuffer, &usSendSize);
24439 }
24440 else
24441 {
24442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024443 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 pWDICtx->wdiPNOVersion);
24445
24446 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24447 &pSendBuffer, &usSendSize);
24448 }
24449
24450 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24451 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24452 {
24453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024454 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024456 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 }
24458
24459 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024460 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024461
24462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24466 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024467}
24468
24469/**
24470 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024471
24472 @param pWDICtx: pointer to the WLAN DAL context
24473 pEventData: pointer to the event information structure
24474
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 @see
24476 @return Result of the function call
24477*/
24478WDI_Status
24479WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024480(
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 WDI_ControlBlockType* pWDICtx,
24482 WDI_EventInfoType* pEventData
24483)
24484{
24485 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24486 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 wpt_uint16 usDataOffset = 0;
24489 wpt_uint16 usSendSize = 0;
24490 wpt_uint8 ucRssiThreshold;
24491
24492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 -------------------------------------------------------------------------*/
24495 if (( NULL == pEventData ) ||
24496 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24497 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24498 {
24499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 }
24504
24505 /*-----------------------------------------------------------------------
24506 Get message buffer
24507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 sizeof(ucRssiThreshold),
24510 &pSendBuffer, &usDataOffset, &usSendSize))||
24511 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24512 {
24513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24514 "Unable to get send buffer in Set PNO req %x %x %x",
24515 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 }
24519
24520 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24521
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 wpalMemoryCopy( pSendBuffer+usDataOffset,
24523 &ucRssiThreshold,
24524 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024525
24526 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024527 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024528
24529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024530 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24533 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024534}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024535#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24536/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024537 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024538
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024539 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024540 by the Device Interface
24541
24542 wdiRoamOffloadScancb: callback for passing back the response
24543 of the Roam Candidate Lookup Req operation received from the
24544 device
24545
24546 pUserData: user data will be passed back with the
24547 callback
24548 @return Result of the function call
24549*/
24550WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024551WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024552(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024553 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024554 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24555 void* pUserData
24556)
24557{
24558 WDI_EventInfoType wdiEventData = {{0}};
24559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24560
24561 /*------------------------------------------------------------------------
24562 Sanity Check
24563 ------------------------------------------------------------------------*/
24564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24565 {
24566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24567 "WDI API call before module is initialized - Fail request");
24568
24569 return WDI_STATUS_E_NOT_ALLOWED;
24570 }
24571
24572 /*------------------------------------------------------------------------
24573 Fill in Event data and post to the Main FSM
24574 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024575 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24576 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24577 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024578 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24579 wdiEventData.pUserData = pUserData;
24580
24581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24582}
24583
24584void
24585WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24586{
24587 switch (wdiEdType)
24588 {
24589 case WDI_ED_NONE:
24590 *EdType = eED_NONE;
24591 break;
24592 case WDI_ED_WEP40:
24593 case WDI_ED_WEP104:
24594 *EdType = eED_WEP;
24595 break;
24596 case WDI_ED_TKIP:
24597 *EdType = eED_TKIP;
24598 break;
24599 case WDI_ED_CCMP:
24600#ifdef WLAN_FEATURE_11W
24601 case WDI_ED_AES_128_CMAC:
24602#endif
24603 *EdType = eED_CCMP;
24604 break;
24605#ifdef FEATURE_WLAN_WAPI
24606 case WDI_ED_WPI:
24607 *EdType = eED_WPI;
24608 break;
24609#endif
24610 case WDI_ED_ANY:
24611 *EdType = eED_ANY;
24612 break;
24613
24614 default:
24615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24616 "%s: Unknown Encryption Type", __func__);
24617 break;
24618 }
24619}
24620
24621/**
24622 @brief Helper function to pack Start Roam Candidate Lookup
24623 Request parameters
24624
24625 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024626 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024627 from upper layers
24628 ppSendBuffer, pSize - out pointers of the packed buffer
24629 and its size
24630
24631 @return Result of the function call
24632*/
24633
24634WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024635WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024636(
24637 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024638 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024639 wpt_uint8** ppSendBuffer,
24640 wpt_uint16* pSize
24641)
24642{
24643 wpt_uint8* pSendBuffer = NULL;
24644 wpt_uint16 usDataOffset = 0;
24645 wpt_uint16 usSendSize = 0;
24646 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24647 wpt_uint8 i;
24648 /*-----------------------------------------------------------------------
24649 Get message buffer
24650 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024652 sizeof(tRoamCandidateListParams),
24653 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024654 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024655 {
24656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24657 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024658 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024659 WDI_ASSERT(0);
24660 return WDI_STATUS_E_FAILURE;
24661 }
24662 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024663 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024664 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024665 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024666 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024667 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024668 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024669 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024670 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024671 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024672 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024673
24674 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024675 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024676 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024677 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024678 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24679 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024680 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24681 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24682 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24683 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24684 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24685 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24686 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24687 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24688 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24689 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24690 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24691 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24692 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24693 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024694 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024695 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24696 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24697 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024698
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24700 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24701 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24702 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24703 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24704 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24705 "HomeAwayTime=%d\n",
24706 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24707 pRoamCandidateListParams->RoamScanOffloadEnabled,
24708 pRoamCandidateListParams->Command,
24709 pRoamCandidateListParams->StartScanReason,
24710 pRoamCandidateListParams->NeighborScanTimerPeriod,
24711 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24712 pRoamCandidateListParams->NeighborScanChannelMinTime,
24713 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24714 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24715 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24716 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24717 pRoamCandidateListParams->ConnectedNetwork.authentication,
24718 pRoamCandidateListParams->ConnectedNetwork.encryption,
24719 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24720 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24721 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024722 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024723 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024724 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024725 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024726 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24727 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024728 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024729 pRoamCandidateListParams->us24GProbeSize);
24730 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024731 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024732 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024733 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024734 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24735 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024736 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024737 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024738 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24739 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24740 pRoamCandidateListParams->nProbes =
24741 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24742 pRoamCandidateListParams->HomeAwayTime =
24743 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024745 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24746 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024748 }
24749
24750
24751 /*Set the output values*/
24752 *ppSendBuffer = pSendBuffer;
24753 *pSize = usSendSize;
24754 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024755}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024756
24757/**
24758 @brief Process Start Roam Candidate Lookup Request function
24759
24760 @param pWDICtx: pointer to the WLAN DAL context
24761 pEventData: pointer to the event information structure
24762
24763 @return Result of the function call
24764*/
24765WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024766WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024767(
24768 WDI_ControlBlockType* pWDICtx,
24769 WDI_EventInfoType* pEventData
24770)
24771{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024772 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024773 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24774 wpt_uint8* pSendBuffer = NULL;
24775 wpt_uint16 usSendSize = 0;
24776 WDI_Status wdiStatus;
24777 /*-------------------------------------------------------------------------
24778 Sanity check
24779 -------------------------------------------------------------------------*/
24780 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024781 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024782 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24783 {
24784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24785 "%s: Invalid parameters", __func__);
24786 WDI_ASSERT(0);
24787 return WDI_STATUS_E_FAILURE;
24788 }
24789
24790 /*-------------------------------------------------------------------------
24791 Pack the Start Roam Candidate Lookup request structure based on version
24792 -------------------------------------------------------------------------*/
24793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24794 "%s: Packing Roam Candidate Lookup request ", __func__);
24795
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024796 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024797 &pSendBuffer, &usSendSize);
24798
24799 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24800 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24801 {
24802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24803 "%s: failed to pack request parameters", __func__);
24804 WDI_ASSERT(0);
24805 return wdiStatus;
24806 }
24807
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024808 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24809 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024810
24811 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024812 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024813 -------------------------------------------------------------------------*/
24814 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024815 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024816}
24817
24818/**
24819 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24820 response is being received over the bus from HAL)
24821
24822 @param pWDICtx: pointer to the WLAN DAL context
24823 pEventData: pointer to the event information structure
24824
24825 @see
24826 @return Result of the function call
24827*/
24828WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024829WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024830(
24831 WDI_ControlBlockType* pWDICtx,
24832 WDI_EventInfoType* pEventData
24833)
24834{
24835 WDI_Status wdiStatus;
24836 eHalStatus halStatus;
24837 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24838
24839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24840
24841 /*-------------------------------------------------------------------------
24842 Sanity check
24843 -------------------------------------------------------------------------*/
24844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24845 ( NULL == pEventData->pEventData ))
24846 {
24847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24848 "%s: Invalid parameters", __func__);
24849 WDI_ASSERT(0);
24850 return WDI_STATUS_E_FAILURE;
24851 }
24852
24853 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24854
24855 /*-------------------------------------------------------------------------
24856 Extract response and send it to UMAC
24857 -------------------------------------------------------------------------*/
24858 halStatus = *((eHalStatus*)pEventData->pEventData);
24859 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24860
24861 /*Notify UMAC*/
24862 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24863
24864 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024865}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024866#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024867
24868/**
24869 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024870
24871 @param pWDICtx: pointer to the WLAN DAL context
24872 pEventData: pointer to the event information structure
24873
Jeff Johnson295189b2012-06-20 16:38:30 -070024874 @see
24875 @return Result of the function call
24876*/
24877WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024878WDI_PackUpdateScanParamsReq
24879(
24880 WDI_ControlBlockType* pWDICtx,
24881 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24882 wpt_uint8** ppSendBuffer,
24883 wpt_uint16* pSize
24884)
24885{
24886 wpt_uint8* pSendBuffer = NULL;
24887 wpt_uint16 usDataOffset = 0;
24888 wpt_uint16 usSendSize = 0;
24889 tUpdateScanParams updateScanParams = {0};
24890
24891
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024893 "Begin WDI Update Scan Parameters Old Style Params");
24894 /*-----------------------------------------------------------------------
24895 Get message buffer
24896 -----------------------------------------------------------------------*/
24897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24898 sizeof(updateScanParams),
24899 &pSendBuffer, &usDataOffset, &usSendSize))||
24900 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24901 {
24902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24903 "Unable to get send buffer in Update Scan Params req %x",
24904 pwdiUpdateScanParams);
24905 WDI_ASSERT(0);
24906 return WDI_STATUS_E_FAILURE;
24907 }
24908
24909 //
24910 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24911 //
24912
24913 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24914 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24915
24916 updateScanParams.ucChannelCount =
24917 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24918 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24919 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24920 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24921
24922 wpalMemoryCopy( updateScanParams.aChannels,
24923 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24924 updateScanParams.ucChannelCount);
24925
24926
24927 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24928 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24929 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24930 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24931 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24932
24933 wpalMemoryCopy( pSendBuffer+usDataOffset,
24934 &updateScanParams,
24935 sizeof(updateScanParams));
24936
24937 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24938 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24939
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024941 "End Update Scan Parameters Old Style");
24942
24943 /*Set the output values*/
24944 *ppSendBuffer = pSendBuffer;
24945 *pSize = usSendSize;
24946
24947 return WDI_STATUS_SUCCESS;
24948}
24949
24950/**
24951 @brief Process Update Scan Params function
24952
24953 @param pWDICtx: pointer to the WLAN DAL context
24954 pEventData: pointer to the event information structure
24955
24956 @see
24957 @return Result of the function call
24958*/
24959WDI_Status
24960WDI_PackUpdateScanParamsReqEx
24961(
24962 WDI_ControlBlockType* pWDICtx,
24963 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24964 wpt_uint8** ppSendBuffer,
24965 wpt_uint16* pSize
24966)
24967{
24968 wpt_uint8* pSendBuffer = NULL;
24969 wpt_uint16 usDataOffset = 0;
24970 wpt_uint16 usSendSize = 0;
24971 tUpdateScanParamsEx updateScanParams = {0};
24972
24973
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024974 /*-----------------------------------------------------------------------
24975 Get message buffer
24976 -----------------------------------------------------------------------*/
24977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24978 sizeof(updateScanParams),
24979 &pSendBuffer, &usDataOffset, &usSendSize))||
24980 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24981 {
24982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24983 "Unable to get send buffer in Update Scan Params Ex req %x",
24984 pwdiUpdateScanParams);
24985 WDI_ASSERT(0);
24986 return WDI_STATUS_E_FAILURE;
24987 }
24988
24989 //
24990 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24991 //
24992
24993 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24994 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24995
24996 updateScanParams.ucChannelCount =
24997 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24998 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24999 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25000 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25001
25002 wpalMemoryCopy( updateScanParams.aChannels,
25003 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25004 updateScanParams.ucChannelCount);
25005
25006
25007 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25008 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25009 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25010 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25011 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25012
25013 wpalMemoryCopy( pSendBuffer+usDataOffset,
25014 &updateScanParams,
25015 sizeof(updateScanParams));
25016
25017 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25018 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25019
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025020 /*Set the output values*/
25021 *ppSendBuffer = pSendBuffer;
25022 *pSize = usSendSize;
25023
25024 return WDI_STATUS_SUCCESS;
25025}
25026
25027/**
25028 @brief Process Update Scan Params function
25029
25030 @param pWDICtx: pointer to the WLAN DAL context
25031 pEventData: pointer to the event information structure
25032
25033 @see
25034 @return Result of the function call
25035*/
25036WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025037WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025038(
Jeff Johnson295189b2012-06-20 16:38:30 -070025039 WDI_ControlBlockType* pWDICtx,
25040 WDI_EventInfoType* pEventData
25041)
25042{
25043 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25044 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025045 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025047 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025048
25049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 -------------------------------------------------------------------------*/
25052 if (( NULL == pEventData ) ||
25053 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25054 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25055 {
25056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 }
25061
25062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25063 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025064
25065 //
25066 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25067 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025068 if ( pWDICtx->wlanVersion.revision < 1 )
25069 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025070 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025071 &pSendBuffer, &usSendSize);
25072 }
25073 else
25074 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025075 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25076 &pSendBuffer, &usSendSize);
25077 }
25078
25079 if(WDI_STATUS_SUCCESS != wdiStatus)
25080 {
25081 //memory allocation failed
25082 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025083 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025084
Jeff Johnson295189b2012-06-20 16:38:30 -070025085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025088 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025089 wdiUpdateScanParamsCb, pEventData->pUserData,
25090 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025091}
25092
25093/**
25094 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025095
25096 @param pWDICtx: pointer to the WLAN DAL context
25097 pEventData: pointer to the event information structure
25098
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 @see
25100 @return Result of the function call
25101*/
25102WDI_Status
25103WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025104(
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 WDI_ControlBlockType* pWDICtx,
25106 WDI_EventInfoType* pEventData
25107)
25108{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025109 WDI_LowLevelIndType wdiInd;
25110 tpPrefNetwFoundParams pNetwFoundParams;
25111 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025112
25113
25114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 -------------------------------------------------------------------------*/
25117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25118 ( NULL == pEventData->pEventData ))
25119 {
25120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025124 }
25125
25126 /*-------------------------------------------------------------------------
25127 Extract indication and send it to UMAC
25128 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025129 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25130
25131 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25132 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25133 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25134
25135 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25136 {
25137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25138 "%s: fail to allocate memory", __func__);
25139 return WDI_STATUS_MEM_FAILURE;
25140 }
25141
25142 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25143 (pNetwFoundParams->ssId.length < 32 )?
25144 pNetwFoundParams->ssId.length : 32;
25145 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25146 pNetwFoundParams->ssId.ssId,
25147 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25148 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25149 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25150 pNetwFoundParams->frameLength;
25151 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25152 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25153 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025154
25155 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025156 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025157
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 // DEBUG
25159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025160 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025162 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025164 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25166
ltimariu034f7d62013-01-24 18:54:33 -080025167 if ( pWDICtx->wdiLowLevelIndCB )
25168 {
25169 /*Notify UMAC*/
25170 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25171 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025172
25173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025174}
25175
25176/**
25177 @brief Process PNO Rsp function (called when a
25178 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025179
25180 @param pWDICtx: pointer to the WLAN DAL context
25181 pEventData: pointer to the event information structure
25182
Jeff Johnson295189b2012-06-20 16:38:30 -070025183 @see
25184 @return Result of the function call
25185*/
25186WDI_Status
25187WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025188(
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 WDI_ControlBlockType* pWDICtx,
25190 WDI_EventInfoType* pEventData
25191)
25192{
25193 WDI_Status wdiStatus;
25194 eHalStatus halStatus;
25195 WDI_PNOScanCb wdiPNOScanCb = NULL;
25196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25197
25198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 -------------------------------------------------------------------------*/
25201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25202 ( NULL == pEventData->pEventData ))
25203 {
25204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025208 }
25209
25210
Jeff Johnsone7245742012-09-05 17:12:55 -070025211 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025212
25213 /*-------------------------------------------------------------------------
25214 Extract response and send it to UMAC
25215 -------------------------------------------------------------------------*/
25216 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025217 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025218
25219 /*Notify UMAC*/
25220 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25221
Jeff Johnsone7245742012-09-05 17:12:55 -070025222 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025223}/*WDI_ProcessSetPreferredNetworkRsp*/
25224
25225/**
25226 @brief Process RSSI Filter Rsp function (called when a
25227 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025228
25229 @param pWDICtx: pointer to the WLAN DAL context
25230 pEventData: pointer to the event information structure
25231
Jeff Johnson295189b2012-06-20 16:38:30 -070025232 @see
25233 @return Result of the function call
25234*/
25235WDI_Status
25236WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025237(
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 WDI_ControlBlockType* pWDICtx,
25239 WDI_EventInfoType* pEventData
25240)
25241{
25242 WDI_Status wdiStatus;
25243 eHalStatus halStatus;
25244 WDI_RssiFilterCb wdiRssiFilterCb;
25245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25246
25247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025249 -------------------------------------------------------------------------*/
25250 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25251 ( NULL == pEventData->pEventData ))
25252 {
25253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 }
25258
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025260
25261 /*-------------------------------------------------------------------------
25262 Extract response and send it to UMAC
25263 -------------------------------------------------------------------------*/
25264 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025265 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025266
25267 /*Notify UMAC*/
25268 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25269
Jeff Johnsone7245742012-09-05 17:12:55 -070025270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025271}/*WDI_ProcessSetRssiFilterRsp*/
25272
25273/**
25274 @brief Process Update Scan Params Rsp function (called when a
25275 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025276
25277 @param pWDICtx: pointer to the WLAN DAL context
25278 pEventData: pointer to the event information structure
25279
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 @see
25281 @return Result of the function call
25282*/
25283WDI_Status
25284WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025285(
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 WDI_ControlBlockType* pWDICtx,
25287 WDI_EventInfoType* pEventData
25288)
25289{
25290 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025291 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025293 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25295
25296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 -------------------------------------------------------------------------*/
25299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25300 ( NULL == pEventData->pEventData ))
25301 {
25302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 }
25307
25308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025309 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025310
Jeff Johnsone7245742012-09-05 17:12:55 -070025311 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025312
25313 /*-------------------------------------------------------------------------
25314 Extract response and send it to UMAC
25315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025316 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25317 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 sizeof(halUpdScanParams.status));
25319
25320 uStatus = halUpdScanParams.status;
25321
25322 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025324
25325 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025326 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025327
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025329
25330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025331 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025332 halUpdScanParams.status);
25333
25334 /*Notify UMAC*/
25335 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25336
Jeff Johnsone7245742012-09-05 17:12:55 -070025337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025338}
25339#endif // FEATURE_WLAN_SCAN_PNO
25340
25341#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025342WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025343WDI_8023MulticastListReq
25344(
25345 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25346 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25347 void* pUserData
25348)
25349{
25350 WDI_EventInfoType wdiEventData;
25351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25352
25353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025354 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025355
25356 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025357 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 ------------------------------------------------------------------------*/
25359 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25360 {
25361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25362 "WDI API call before module is initialized - Fail request");
25363
Jeff Johnsone7245742012-09-05 17:12:55 -070025364 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 }
25366
25367 /*------------------------------------------------------------------------
25368 Fill in Event data and post to the Main FSM
25369 ------------------------------------------------------------------------*/
25370 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025371 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025373 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 wdiEventData.pUserData = pUserData;
25375
25376 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25377}
25378
Jeff Johnsone7245742012-09-05 17:12:55 -070025379WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025380WDI_ReceiveFilterSetFilterReq
25381(
25382 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25383 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25384 void* pUserData
25385)
25386{
25387 WDI_EventInfoType wdiEventData;
25388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25389
25390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025391 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025392
25393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 ------------------------------------------------------------------------*/
25396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25397 {
25398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25399 "WDI API call before module is initialized - Fail request");
25400
Jeff Johnsone7245742012-09-05 17:12:55 -070025401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025402 }
25403
25404 /*------------------------------------------------------------------------
25405 Fill in Event data and post to the Main FSM
25406 ------------------------------------------------------------------------*/
25407 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025408 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25409 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025410 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25411 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 wdiEventData.pUserData = pUserData;
25414
25415
25416 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25417}
25418
Jeff Johnsone7245742012-09-05 17:12:55 -070025419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025420WDI_FilterMatchCountReq
25421(
25422 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25423 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25424 void* pUserData
25425)
25426{
25427 WDI_EventInfoType wdiEventData;
25428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25429
25430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025431 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025432
25433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 ------------------------------------------------------------------------*/
25436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25437 {
25438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25439 "WDI API call before module is initialized - Fail request");
25440
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 }
25443
25444 /*------------------------------------------------------------------------
25445 Fill in Event data and post to the Main FSM
25446 ------------------------------------------------------------------------*/
25447 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025448 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025449 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025450 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025451 wdiEventData.pUserData = pUserData;
25452
25453
25454 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25455}
25456
Jeff Johnsone7245742012-09-05 17:12:55 -070025457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025458WDI_ReceiveFilterClearFilterReq
25459(
25460 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25461 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25462 void* pUserData
25463)
25464{
25465 WDI_EventInfoType wdiEventData;
25466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25467
25468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025469 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025470
25471 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025472 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 ------------------------------------------------------------------------*/
25474 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25475 {
25476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25477 "WDI API call before module is initialized - Fail request");
25478
Jeff Johnsone7245742012-09-05 17:12:55 -070025479 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 }
25481
25482 /*------------------------------------------------------------------------
25483 Fill in Event data and post to the Main FSM
25484 ------------------------------------------------------------------------*/
25485 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025486 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025488 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025489 wdiEventData.pUserData = pUserData;
25490
25491
25492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25493}
25494
25495/**
25496 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025497
25498 @param pWDICtx: pointer to the WLAN DAL context
25499 pEventData: pointer to the event information structure
25500
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 @see
25502 @return Result of the function call
25503*/
25504WDI_Status
25505WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025506(
Jeff Johnson295189b2012-06-20 16:38:30 -070025507 WDI_ControlBlockType* pWDICtx,
25508 WDI_EventInfoType* pEventData
25509)
25510{
25511 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25512 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 wpt_uint16 usDataOffset = 0;
25515 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025516 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025517 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 wpt_uint8 ucCurrentBSSSesIdx = 0;
25519 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025520
25521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025522 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025523
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025524 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25525 if( NULL == pRcvFltMcAddrListType )
25526 {
25527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25528 "Failed to alloc in WDI_Process8023MulticastListReq");
25529 return WDI_STATUS_E_FAILURE;
25530 }
25531
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 -------------------------------------------------------------------------*/
25535 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25540 {
25541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025542 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025543 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 return WDI_STATUS_E_FAILURE;
25546 }
25547
25548 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25549 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25550 &pBSSSes);
25551 if ( NULL == pBSSSes )
25552 {
25553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025554 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025555 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025557 }
25558
25559 /*-----------------------------------------------------------------------
25560 Get message buffer
25561 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25563 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 sizeof(tHalRcvFltMcAddrListType),
25565 &pSendBuffer, &usDataOffset, &usSendSize))||
25566 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25567 {
25568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25569 "Unable to get send buffer in "
25570 "WDI_Process8023MulticastListReq() %x %x %x",
25571 pEventData, pwdiFltPktSetMcListReqParamsType,
25572 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025573 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 }
25577
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025578 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025579 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025580 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025582 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25584 sizeof(tSirMacAddr));
25585 }
25586
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025587 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025589 pRcvFltMcAddrListType,
25590 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025591
25592 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025594
25595
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025596 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025598 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025603}
25604
25605/**
25606 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025607
25608 @param pWDICtx: pointer to the WLAN DAL context
25609 pEventData: pointer to the event information structure
25610
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 @see
25612 @return Result of the function call
25613*/
25614WDI_Status
25615WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025616(
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 WDI_ControlBlockType* pWDICtx,
25618 WDI_EventInfoType* pEventData
25619)
25620{
25621 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25622 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 wpt_uint16 usDataOffset = 0;
25625 wpt_uint16 usSendSize = 0;
25626 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025627 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 wpt_uint8 ucCurrentBSSSesIdx = 0;
25630 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025631 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25632 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025633
25634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025635 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025636
25637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 -------------------------------------------------------------------------*/
25640 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025641 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025642 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025643 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025644 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25645 {
25646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025649 return WDI_STATUS_E_FAILURE;
25650 }
25651
25652 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25653 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25654 &pBSSSes);
25655 if ( NULL == pBSSSes )
25656 {
25657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025658 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025660 }
25661
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025662 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25663 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025664
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025665 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25666 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25667 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25668
25669 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25670 usSessRcvPktFilterCfgSize);
25671
25672 if(NULL == pSessRcvPktFilterCfg)
25673 {
25674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25675 "%s: Failed to allocate memory for "
25676 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025677 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025678 WDI_ASSERT(0);
25679 return WDI_STATUS_E_FAILURE;
25680 }
25681
25682 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25683
25684 /*-----------------------------------------------------------------------
25685 Get message buffer
25686 -----------------------------------------------------------------------*/
25687
25688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25689 usSessRcvPktFilterCfgSize,
25690 &pSendBuffer, &usDataOffset, &usSendSize))||
25691 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25692 {
25693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25694 "Unable to get send buffer in "
25695 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25696 pEventData, pwdiSetRcvPktFilterReqInfo,
25697 wdiReceiveFilterSetFilterCb);
25698 WDI_ASSERT(0);
25699 wpalMemoryFree(pSessRcvPktFilterCfg);
25700 return WDI_STATUS_E_FAILURE;
25701 }
25702
25703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25704 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25705 usSendSize,pSessRcvPktFilterCfg);
25706
25707 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25708 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25709 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25710 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25711
25712 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25713
25714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25715 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25716 pSessRcvPktFilterCfg->filterType);
25717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25718 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25719 pSessRcvPktFilterCfg->coleasceTime);
25720
25721 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25722 {
25723 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25724 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25725 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25726 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25727 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25728 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25729 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25730 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25731
25732 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25733 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25734 8);
25735 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25736 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25737 8);
25738
25739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25740 "Out:Proto %d Comp Flag %d \n",
25741 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25742 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25743
25744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25745 "Data Offset %d Data Len %d\n",
25746 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25747 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25748
25749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25750 "CData: %d:%d:%d:%d:%d:%d\n",
25751 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25752 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25753 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25754 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25755 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25756 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25757
25758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25759 "MData: %d:%d:%d:%d:%d:%d\n",
25760 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25761 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25762 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25763 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25764 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25765 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25766 }
25767
25768 wpalMemoryCopy( pSendBuffer+usDataOffset,
25769 pSessRcvPktFilterCfg,
25770 usSessRcvPktFilterCfgSize);
25771
25772
25773 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25774 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25775
25776 wpalMemoryFree(pSessRcvPktFilterCfg);
25777
25778 }
25779 /*If SLM_SESSIONIZATION is not supported then do this */
25780 else
25781 {
25782 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25783 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25784 * sizeof(tHalRcvPktFilterParams));
25785
25786 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025787 usRcvPktFilterCfgSize);
25788
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025789 if(NULL == pRcvPktFilterCfg)
25790 {
25791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25792 "%s: Failed to allocate memory for "
25793 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025794 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025795 WDI_ASSERT(0);
25796 return WDI_STATUS_E_FAILURE;
25797 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025798
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025799 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025800
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025801 /*-----------------------------------------------------------------------
25802 Get message buffer
25803 -----------------------------------------------------------------------*/
25804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 usRcvPktFilterCfgSize,
25806 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025807 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25808 {
25809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 "Unable to get send buffer in "
25811 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25812 pEventData, pwdiSetRcvPktFilterReqInfo,
25813 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025814 WDI_ASSERT(0);
25815 wpalMemoryFree(pRcvPktFilterCfg);
25816 return WDI_STATUS_E_FAILURE;
25817 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025818
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025820 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025821 usSendSize,usRcvPktFilterCfgSize);
25822
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025823 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25824 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25825 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25826 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025827
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025833 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025834
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025835 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25836 {
25837 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25838 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25839 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25840 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25841 pRcvPktFilterCfg->paramsData[i].dataOffset =
25842 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25843 pRcvPktFilterCfg->paramsData[i].dataLength =
25844 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025845
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025846 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25848 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025849 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025850 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25851 8);
25852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025854 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025855 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025856 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25857
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25859 "Data Offset %d Data Len %d\n",
25860 pRcvPktFilterCfg->paramsData[i].dataOffset,
25861 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025862
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25864 "CData: %d:%d:%d:%d:%d:%d\n",
25865 pRcvPktFilterCfg->paramsData[i].compareData[0],
25866 pRcvPktFilterCfg->paramsData[i].compareData[1],
25867 pRcvPktFilterCfg->paramsData[i].compareData[2],
25868 pRcvPktFilterCfg->paramsData[i].compareData[3],
25869 pRcvPktFilterCfg->paramsData[i].compareData[4],
25870 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025871
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25873 "MData: %d:%d:%d:%d:%d:%d\n",
25874 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25875 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25876 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25877 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25878 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25879 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25880 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025882 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 pRcvPktFilterCfg,
25884 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025885
25886
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025887 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25888 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025889
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025891 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025892 wpalMemoryFree(pRcvPktFilterCfg);
25893 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025895 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025899 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025900}
25901
25902/**
25903 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025904
25905 @param pWDICtx: pointer to the WLAN DAL context
25906 pEventData: pointer to the event information structure
25907
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 @see
25909 @return Result of the function call
25910*/
25911WDI_Status
25912WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025913(
Jeff Johnson295189b2012-06-20 16:38:30 -070025914 WDI_ControlBlockType* pWDICtx,
25915 WDI_EventInfoType* pEventData
25916)
25917{
25918 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25919 NULL;
25920 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25921 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025922 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025923 wpt_uint16 usDataOffset = 0;
25924 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025925 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25926 wpt_uint8 ucCurrentBSSSesIdx = 0;
25927 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025928
25929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025930 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025931
25932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 -------------------------------------------------------------------------*/
25935 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025936 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025937 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025938 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025939 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25940 {
25941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025945 }
25946
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025947 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25948 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25949 &pBSSSes);
25950 if ( NULL == pBSSSes )
25951 {
25952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025953 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025954 return WDI_STATUS_E_FAILURE;
25955 }
25956
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 /*-----------------------------------------------------------------------
25958 Get message buffer
25959 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025960 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25961 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025962 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025964 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 {
25966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25967 "Unable to get send buffer in "
25968 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25969 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25970 wdiFilterMatchCountCb);
25971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 }
25974
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025975 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25976 wpalMemoryCopy( pSendBuffer+usDataOffset,
25977 &rcvFltPktMatchCntReqParam,
25978 sizeof(rcvFltPktMatchCntReqParam));
25979
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 //
25981 // Don't need to fill send buffer other than header
25982 //
25983 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025985
25986
25987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25991 wdiFilterMatchCountCb,
25992 pEventData->pUserData,
25993 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025994}
25995
25996/**
25997 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025998
25999 @param pWDICtx: pointer to the WLAN DAL context
26000 pEventData: pointer to the event information structure
26001
Jeff Johnson295189b2012-06-20 16:38:30 -070026002 @see
26003 @return Result of the function call
26004*/
26005WDI_Status
26006WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026007(
Jeff Johnson295189b2012-06-20 16:38:30 -070026008 WDI_ControlBlockType* pWDICtx,
26009 WDI_EventInfoType* pEventData
26010)
Jeff Johnsone7245742012-09-05 17:12:55 -070026011{
Jeff Johnson295189b2012-06-20 16:38:30 -070026012 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26013 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 wpt_uint16 usDataOffset = 0;
26016 wpt_uint16 usSendSize = 0;
26017 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026018 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026019 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026020
26021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026022 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026023
26024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 -------------------------------------------------------------------------*/
26027 if (( NULL == pEventData ) ||
26028 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26029 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026030 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026031 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26032 {
26033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 return WDI_STATUS_E_FAILURE;
26037 }
26038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026039 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026040 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26041 &pBSSSes);
26042 if ( NULL == pBSSSes )
26043 {
26044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026045 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 }
26048
26049 /*-----------------------------------------------------------------------
26050 Get message buffer
26051 -----------------------------------------------------------------------*/
26052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026053 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 sizeof(tHalRcvFltPktClearParam),
26055 &pSendBuffer, &usDataOffset, &usSendSize))||
26056 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26057 {
26058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26059 "Unable to get send buffer in "
26060 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26061 pEventData, pwdiRcvFltPktClearReqParamsType,
26062 wdiRcvFltPktClearFilterCb);
26063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 }
26066
26067
26068 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026072
Jeff Johnsone7245742012-09-05 17:12:55 -070026073 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26074 wpalMemoryCopy( pSendBuffer+usDataOffset,
26075 &rcvFltPktClearParam,
26076 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026077
26078 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026079 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026080
26081
26082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026083 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026087 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026088}
26089
26090/**
26091 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026092
26093 @param pWDICtx: pointer to the WLAN DAL context
26094 pEventData: pointer to the event information structure
26095
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 @see
26097 @return Result of the function call
26098*/
26099WDI_Status
26100WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026101(
Jeff Johnson295189b2012-06-20 16:38:30 -070026102 WDI_ControlBlockType* pWDICtx,
26103 WDI_EventInfoType* pEventData
26104)
26105{
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 eHalStatus halStatus;
26107 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026108 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26109 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26111
26112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026113 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026114
26115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 -------------------------------------------------------------------------*/
26118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26119 ( NULL == pEventData->pEventData ))
26120 {
26121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026125 }
26126
Jeff Johnsone7245742012-09-05 17:12:55 -070026127 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026128
26129 /*-------------------------------------------------------------------------
26130 Extract response and send it to UMAC
26131 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026132 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26133 {
26134 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26135 pEventData->pEventData,
26136 sizeof(halRcvFltPktSetMcListRsp));
26137
26138 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26139 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26140 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26141 halRcvFltPktSetMcListRsp.bssIdx;
26142 }
26143 else
26144 {
26145 halStatus = *((eHalStatus*)pEventData->pEventData);
26146 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26147 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026148
26149 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026150 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026151
Jeff Johnsone7245742012-09-05 17:12:55 -070026152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026153}
26154
26155/**
26156 @brief Process Set Rsp function (called when a
26157 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026158
26159 @param pWDICtx: pointer to the WLAN DAL context
26160 pEventData: pointer to the event information structure
26161
Jeff Johnson295189b2012-06-20 16:38:30 -070026162 @see
26163 @return Result of the function call
26164*/
26165WDI_Status
26166WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026167(
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 WDI_ControlBlockType* pWDICtx,
26169 WDI_EventInfoType* pEventData
26170)
26171{
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 eHalStatus halStatus;
26173 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026174 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26175 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26177
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 == pWDICtx ) || ( NULL == pEventData ) ||
26185 ( NULL == pEventData->pEventData ))
26186 {
26187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026191 }
26192
26193 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026194 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026195
26196 /*-------------------------------------------------------------------------
26197 Extract response and send it to UMAC
26198 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026199 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26200 {
26201 wpalMemoryCopy( &halSetPktFilterRspParams,
26202 pEventData->pEventData,
26203 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026204
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026205 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26206 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26207 }
26208 else
26209 {
26210 halStatus = *((eHalStatus*)pEventData->pEventData);
26211 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26212 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026213 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026214 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026215
Jeff Johnsone7245742012-09-05 17:12:55 -070026216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026217}
26218
26219/**
26220 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026221
26222 @param pWDICtx: pointer to the WLAN DAL context
26223 pEventData: pointer to the event information structure
26224
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 @see
26226 @return Result of the function call
26227*/
26228WDI_Status
26229WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026230(
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 WDI_ControlBlockType* pWDICtx,
26232 WDI_EventInfoType* pEventData
26233)
26234{
Jeff Johnson295189b2012-06-20 16:38:30 -070026235 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026237 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26238 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026239
26240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26241
26242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026243 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026244
26245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026247 -------------------------------------------------------------------------*/
26248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26249 ( NULL == pEventData->pEventData ))
26250 {
26251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026255 }
26256
Jeff Johnsone7245742012-09-05 17:12:55 -070026257 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026258
26259 /*-------------------------------------------------------------------------
26260 Extract response and send it to UMAC
26261 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026262 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26263 {
26264 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26265 pEventData->pEventData,
26266 sizeof(halRcvFltrPktMatachRsp));
26267
26268 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26269 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26270 }
26271 else
26272 {
26273 halStatus = *((eHalStatus*)pEventData->pEventData);
26274 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26275 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026276
26277 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026278 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026279
Jeff Johnsone7245742012-09-05 17:12:55 -070026280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026281}
26282
26283/**
26284 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026285
26286 @param pWDICtx: pointer to the WLAN DAL context
26287 pEventData: pointer to the event information structure
26288
Jeff Johnson295189b2012-06-20 16:38:30 -070026289 @see
26290 @return Result of the function call
26291*/
26292WDI_Status
26293WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026294(
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 WDI_ControlBlockType* pWDICtx,
26296 WDI_EventInfoType* pEventData
26297)
26298{
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 eHalStatus halStatus;
26300 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026301 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26302 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26304
26305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026306 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026307
26308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026310 -------------------------------------------------------------------------*/
26311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26312 ( NULL == pEventData->pEventData ))
26313 {
26314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026318 }
26319
26320 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026322
26323 /*-------------------------------------------------------------------------
26324 Extract response and send it to UMAC
26325 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026326 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26327 {
26328 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26329 pEventData->pEventData,
26330 sizeof(halRcvFltPktClearRspMsg));
26331
26332 wdiRcvFltPktClearRspParamsType.wdiStatus =
26333 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26334 wdiRcvFltPktClearRspParamsType.bssIdx =
26335 halRcvFltPktClearRspMsg.bssIdx;
26336 }
26337 else
26338 {
26339 halStatus = *((eHalStatus*)pEventData->pEventData);
26340 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26341 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026342
26343 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026344 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026345
Jeff Johnsone7245742012-09-05 17:12:55 -070026346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026347}
26348#endif // WLAN_FEATURE_PACKET_FILTERING
26349
26350/**
26351 @brief Process Shutdown Rsp function
26352 There is no shutdown response comming from HAL
26353 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026354
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026356 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026357
26358 @see
26359 @return Result of the function call
26360*/
26361WDI_Status
26362WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026363(
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 WDI_ControlBlockType* pWDICtx,
26365 WDI_EventInfoType* pEventData
26366)
26367{
26368 /*There is no shutdown response comming from HAL - function just kept for
26369 simmetry */
26370 WDI_ASSERT(0);
26371 return WDI_STATUS_SUCCESS;
26372}/*WDI_ProcessShutdownRsp*/
26373
26374/**
26375 @brief WDI_SetPowerParamsReq
26376
Jeff Johnsone7245742012-09-05 17:12:55 -070026377 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026378 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026379
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 wdiPowerParamsCb: callback for passing back the response
26381 of the Set Power Params operation received from the
26382 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026383
Jeff Johnson295189b2012-06-20 16:38:30 -070026384 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026385 callback
26386
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 @return Result of the function call
26388*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026389WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026390WDI_SetPowerParamsReq
26391(
26392 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26393 WDI_SetPowerParamsCb wdiPowerParamsCb,
26394 void* pUserData
26395)
26396{
26397 WDI_EventInfoType wdiEventData;
26398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26399
26400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026401 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026402 ------------------------------------------------------------------------*/
26403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26404 {
26405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26406 "WDI API call before module is initialized - Fail request");
26407
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 }
26410
26411 /*------------------------------------------------------------------------
26412 Fill in Event data and post to the Main FSM
26413 ------------------------------------------------------------------------*/
26414 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026415 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026416 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026417 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 wdiEventData.pUserData = pUserData;
26419
26420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26421}/*WDI_SetPowerParamsReq*/
26422
26423/**
26424 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026425
26426 @param pWDICtx: pointer to the WLAN DAL context
26427 pEventData: pointer to the event information structure
26428
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 @see
26430 @return Result of the function call
26431*/
26432WDI_Status
26433WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026434(
Jeff Johnson295189b2012-06-20 16:38:30 -070026435 WDI_ControlBlockType* pWDICtx,
26436 WDI_EventInfoType* pEventData
26437)
26438{
26439 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26440 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 wpt_uint16 usDataOffset = 0;
26443 wpt_uint16 usSendSize = 0;
26444 tSetPowerParamsType powerParams;
26445
26446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 -------------------------------------------------------------------------*/
26449 if (( NULL == pEventData ) ||
26450 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26451 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26452 {
26453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026457 }
26458
26459 /*-----------------------------------------------------------------------
26460 Get message buffer
26461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 sizeof(powerParams),
26464 &pSendBuffer, &usDataOffset, &usSendSize))||
26465 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26466 {
26467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26468 "Unable to get send buffer in Set PNO req %x %x %x",
26469 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 }
26473
26474 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026475 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026476 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26477
26478 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026479 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26481
26482 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026483 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026484 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26485
26486 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026487 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026488 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26489
26490 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026491 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026492 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26493
26494 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 powerParams.uBETInterval =
26496 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026497
Yue Ma0da19492013-05-13 17:01:29 -070026498 /* MAX LI for modulated DTIM */
26499 powerParams.uMaxLIModulatedDTIM =
26500 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026501
26502 wpalMemoryCopy( pSendBuffer+usDataOffset,
26503 &powerParams,
26504 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026505
26506 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026508
26509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026510 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26513 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026514}
26515
26516/**
26517 @brief Process Power Params Rsp function (called when a
26518 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026519
26520 @param pWDICtx: pointer to the WLAN DAL context
26521 pEventData: pointer to the event information structure
26522
Jeff Johnson295189b2012-06-20 16:38:30 -070026523 @see
26524 @return Result of the function call
26525*/
26526WDI_Status
26527WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026528(
Jeff Johnson295189b2012-06-20 16:38:30 -070026529 WDI_ControlBlockType* pWDICtx,
26530 WDI_EventInfoType* pEventData
26531)
26532{
26533 WDI_Status wdiStatus;
26534 eHalStatus halStatus;
26535 WDI_SetPowerParamsCb wdiPowerParamsCb;
26536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26537
26538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 -------------------------------------------------------------------------*/
26541 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26542 ( NULL == pEventData->pEventData ))
26543 {
26544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026548 }
26549
Jeff Johnsone7245742012-09-05 17:12:55 -070026550 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026551
26552 /*-------------------------------------------------------------------------
26553 Extract response and send it to UMAC
26554 -------------------------------------------------------------------------*/
26555 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026556 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026557
26558 /*Notify UMAC*/
26559 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26560
Jeff Johnsone7245742012-09-05 17:12:55 -070026561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026562}/*WDI_ProcessSetPowerParamsRsp*/
26563
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026564/**
26565 @brief WDI_dhcpStartInd
26566 Host will send an event to the FW when DHCP is initiated
26567
26568 @param
26569 WDI_DHCPInd: DHCP Indication
26570 @see
26571 @return Result of the function call
26572*/
26573WDI_Status
26574WDI_dhcpStartInd
26575(
26576 WDI_DHCPInd *wdiDHCPInd
26577)
26578{
26579 WDI_EventInfoType wdiEventData;
26580
26581 /*------------------------------------------------------------------------
26582 Sanity Check
26583 ------------------------------------------------------------------------*/
26584 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26585 {
26586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26587 "WDI API call before module is initialized - Fail request");
26588
26589 return WDI_STATUS_E_NOT_ALLOWED;
26590 }
26591
26592 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26593 wdiEventData.pEventData = wdiDHCPInd;
26594 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26595 wdiEventData.pCBfnc = NULL;
26596 wdiEventData.pUserData = NULL;
26597
26598 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26599}
26600
26601
26602/**
26603 @brief WDI_dhcpStopInd
26604 Host will send an event to the FW when DHCP is completed
26605
26606 @param
26607 WDI_DHCPInd: DHCP Indication
26608 @see
26609 @return Result of the function call
26610*/
26611WDI_Status
26612WDI_dhcpStopInd
26613(
26614 WDI_DHCPInd *wdiDHCPInd
26615)
26616{
26617 WDI_EventInfoType wdiEventData;
26618
26619 /*------------------------------------------------------------------------
26620 Sanity Check
26621 ------------------------------------------------------------------------*/
26622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26623 {
26624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26625 "WDI API call before module is initialized - Fail request");
26626
26627 return WDI_STATUS_E_NOT_ALLOWED;
26628 }
26629
26630 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26631 wdiEventData.pEventData = wdiDHCPInd;
26632 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26633 wdiEventData.pCBfnc = NULL;
26634 wdiEventData.pUserData = NULL;
26635
26636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26637}
26638
26639
26640/**
26641 @brief Process DHCP Start Indication message and post it to HAL
26642
26643 @param pWDICtx: pointer to the WLAN DAL context
26644 pEventData: pointer to the event information structure
26645
26646 @see
26647 @return Result of the function call
26648*/
26649WDI_Status
26650WDI_ProcessDHCPStartInd
26651(
26652 WDI_ControlBlockType* pWDICtx,
26653 WDI_EventInfoType* pEventData
26654)
26655{
26656 wpt_uint8* pSendBuffer = NULL;
26657 wpt_uint16 usDataOffset = 0;
26658 wpt_uint16 usSendSize = 0;
26659 wpt_uint16 usLen = 0;
26660 WDI_DHCPInd* pwdiDHCPInd = NULL;
26661 tDHCPInfo* pDHCPInfo;
26662
26663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26664
26665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26666 "%s", __func__);
26667
26668 /*-------------------------------------------------------------------------
26669 Sanity check
26670 -------------------------------------------------------------------------*/
26671 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26672 {
26673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26674 "%s: Invalid parameters", __func__);
26675 WDI_ASSERT(0);
26676 return WDI_STATUS_E_FAILURE;
26677 }
26678 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26679 /*-----------------------------------------------------------------------
26680 Get message buffer
26681 -----------------------------------------------------------------------*/
26682
26683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26684 WDI_DHCP_START_IND,
26685 sizeof(tDHCPInfo),
26686 &pSendBuffer, &usDataOffset, &usSendSize))||
26687 ( usSendSize < (usDataOffset + usLen )))
26688 {
26689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26690 "Unable to get send buffer in DHCP Start req %p ",
26691 pEventData);
26692 WDI_ASSERT(0);
26693 return WDI_STATUS_E_FAILURE;
26694 }
26695
26696 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26697 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26698 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26699 WDI_MAC_ADDR_LEN);
26700
26701 pWDICtx->pReqStatusUserData = NULL;
26702 pWDICtx->pfncRspCB = NULL;
26703
26704 /*-------------------------------------------------------------------------
26705 Send DHCP Start Indication to HAL
26706 -------------------------------------------------------------------------*/
26707 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26708
26709}/*WDI_ProcessDHCPStartInd*/
26710
26711/**
26712 @brief Process DHCP Stop indication message and post it to HAL
26713
26714 @param pWDICtx: pointer to the WLAN DAL context
26715 pEventData: pointer to the event information structure
26716
26717 @see
26718 @return Result of the function call
26719*/
26720WDI_Status
26721WDI_ProcessDHCPStopInd
26722(
26723 WDI_ControlBlockType* pWDICtx,
26724 WDI_EventInfoType* pEventData
26725)
26726{
26727 wpt_uint8* pSendBuffer = NULL;
26728 wpt_uint16 usDataOffset = 0;
26729 wpt_uint16 usSendSize = 0;
26730 wpt_uint16 usLen = 0;
26731 WDI_DHCPInd* pwdiDHCPInd = NULL;
26732 tDHCPInfo* pDHCPInfo;
26733
26734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26735
26736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26737 "%s", __func__);
26738
26739 /*-------------------------------------------------------------------------
26740 Sanity check
26741 -------------------------------------------------------------------------*/
26742
26743 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26744 {
26745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26746 "%s: Invalid parameters", __func__);
26747 WDI_ASSERT(0);
26748 return WDI_STATUS_E_FAILURE;
26749 }
26750 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26751 /*-----------------------------------------------------------------------
26752 Get message buffer
26753 -----------------------------------------------------------------------*/
26754
26755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26756 WDI_DHCP_STOP_IND,
26757 sizeof(tDHCPInfo),
26758 &pSendBuffer, &usDataOffset, &usSendSize))||
26759 ( usSendSize < (usDataOffset + usLen )))
26760 {
26761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26762 "Unable to get send buffer in DHCP Start req %p ",
26763 pEventData);
26764 WDI_ASSERT(0);
26765 return WDI_STATUS_E_FAILURE;
26766 }
26767
26768 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26769 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26770 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26771 WDI_MAC_ADDR_LEN);
26772
26773 pWDICtx->pReqStatusUserData = NULL;
26774 pWDICtx->pfncRspCB = NULL;
26775 /*-------------------------------------------------------------------------
26776 Send DHCP Stop indication to HAL
26777 -------------------------------------------------------------------------*/
26778 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26779
26780}/*WDI_ProcessDHCPStopInd*/
26781
26782
Jeff Johnson295189b2012-06-20 16:38:30 -070026783#ifdef WLAN_FEATURE_GTK_OFFLOAD
26784/**
26785 @brief WDI_GTKOffloadReq will be called when the upper MAC
26786 wants to set GTK Rekey Counter while in power save. Upon
26787 the call of this API the WLAN DAL will pack and send a
26788 HAL GTK offload request message to the lower RIVA
26789 sub-system if DAL is in state STARTED.
26790
26791 In state BUSY this request will be queued. Request won't
26792 be allowed in any other state.
26793
26794 WDI_PostAssocReq must have been called.
26795
26796 @param pwdiGtkOffloadParams: the GTK offload as specified
26797 by the Device Interface
26798
26799 wdiGtkOffloadCb: callback for passing back the response
26800 of the GTK offload operation received from the device
26801
26802 pUserData: user data will be passed back with the
26803 callback
26804
26805 @see WDI_PostAssocReq
26806 @return Result of the function call
26807*/
26808WDI_Status
26809WDI_GTKOffloadReq
26810(
26811 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26812 WDI_GtkOffloadCb wdiGtkOffloadCb,
26813 void* pUserData
26814)
26815{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026816 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26818
26819 /*------------------------------------------------------------------------
26820 Sanity Check
26821 ------------------------------------------------------------------------*/
26822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26823 {
26824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26825 "WDI API call before module is initialized - Fail request");
26826
26827 return WDI_STATUS_E_NOT_ALLOWED;
26828 }
26829
26830 /*------------------------------------------------------------------------
26831 Fill in Event data and post to the Main FSM
26832 ------------------------------------------------------------------------*/
26833 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26834 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026835 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026836 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26837 wdiEventData.pUserData = pUserData;
26838
26839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26840}
26841
26842
26843/**
26844 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26845 MAC wants to get GTK Rekey Counter while in power save.
26846 Upon the call of this API the WLAN DAL will pack and
26847 send a HAL GTK offload request message to the lower RIVA
26848 sub-system if DAL is in state STARTED.
26849
26850 In state BUSY this request will be queued. Request won't
26851 be allowed in any other state.
26852
26853 WDI_PostAssocReq must have been called.
26854
26855 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26856 Information Message as specified by the
26857 Device Interface
26858
26859 wdiGtkOffloadGetInfoCb: callback for passing back the
26860 response of the GTK offload operation received from the
26861 device
26862
26863 pUserData: user data will be passed back with the
26864 callback
26865
26866 @see WDI_PostAssocReq
26867 @return Result of the function call
26868*/
26869WDI_Status
26870WDI_GTKOffloadGetInfoReq
26871(
26872 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26873 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26874 void* pUserData
26875)
26876{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026877 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26879
26880 /*------------------------------------------------------------------------
26881 Sanity Check
26882 ------------------------------------------------------------------------*/
26883 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26884 {
26885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26886 "WDI API call before module is initialized - Fail request");
26887
26888 return WDI_STATUS_E_NOT_ALLOWED;
26889 }
26890
26891 /*------------------------------------------------------------------------
26892 Fill in Event data and post to the Main FSM
26893 ------------------------------------------------------------------------*/
26894 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26895 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26896 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26897 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26898 wdiEventData.pUserData = pUserData;
26899
26900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26901}
26902
26903
26904/**
26905 @brief Process set GTK Offload Request function
26906
26907 @param pWDICtx: pointer to the WLAN DAL context
26908 pEventData: pointer to the event information structure
26909
26910 @see
26911 @return Result of the function call
26912*/
26913WDI_Status
26914WDI_ProcessGTKOffloadReq
26915(
26916 WDI_ControlBlockType* pWDICtx,
26917 WDI_EventInfoType* pEventData
26918)
26919{
26920 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26921 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26922 wpt_uint8* pSendBuffer = NULL;
26923 wpt_uint16 usDataOffset = 0;
26924 wpt_uint16 usSendSize = 0;
26925 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026926 wpt_uint8 ucCurrentSessionId = 0;
26927 WDI_BSSSessionType* pBSSSes = NULL;
26928
Jeff Johnson295189b2012-06-20 16:38:30 -070026929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26930
26931 /*-------------------------------------------------------------------------
26932 Sanity check
26933 -------------------------------------------------------------------------*/
26934 if (( NULL == pEventData ) ||
26935 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26936 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26937 {
26938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026941 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026942 }
26943
26944 /*-----------------------------------------------------------------------
26945 Get message buffer
26946 -----------------------------------------------------------------------*/
26947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26948 sizeof(gtkOffloadReqParams),
26949 &pSendBuffer, &usDataOffset, &usSendSize))||
26950 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26951 {
26952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26953 "Unable to get send buffer in GTK offload req %x %x %x",
26954 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26955 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026956 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026957 }
26958
26959 //
26960 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26961 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026962 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26963 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26964 &pBSSSes);
26965 if ( NULL == pBSSSes )
26966 {
26967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026968 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026969 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026970 }
26971
26972 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26973
Jeff Johnson295189b2012-06-20 16:38:30 -070026974 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26975 // Copy KCK
26976 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26977 // Copy KEK
26978 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26979 // Copy KeyReplayCounter
26980 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26981
26982 wpalMemoryCopy( pSendBuffer+usDataOffset,
26983 &gtkOffloadReqParams,
26984 sizeof(gtkOffloadReqParams));
26985
26986 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26987 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26988
26989 /*-------------------------------------------------------------------------
26990 Send Get STA Request to HAL
26991 -------------------------------------------------------------------------*/
26992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26993 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026994
26995fail:
26996 // Release the message buffer so we don't leak
26997 wpalMemoryFree(pSendBuffer);
26998
26999failRequest:
27000 //WDA should have failure check to avoid the memory leak
27001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027002}
27003
27004
27005/**
27006 @brief Process GTK Offload Get Information Request function
27007
27008 @param pWDICtx: pointer to the WLAN DAL context
27009 pEventData: pointer to the event information structure
27010
27011 @see
27012 @return Result of the function call
27013*/
27014WDI_Status
27015WDI_ProcessGTKOffloadGetInfoReq
27016(
27017 WDI_ControlBlockType* pWDICtx,
27018 WDI_EventInfoType* pEventData
27019)
27020{
27021 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27022 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27023 wpt_uint8* pSendBuffer = NULL;
27024 wpt_uint16 usDataOffset = 0;
27025 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027026 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27027 wpt_uint8 ucCurrentSessionId = 0;
27028 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027029
27030 /*-------------------------------------------------------------------------
27031 Sanity check
27032 -------------------------------------------------------------------------*/
27033 if (( NULL == pEventData ) ||
27034 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27035 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27036 {
27037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027039 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027040 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 }
27042
27043 /*-----------------------------------------------------------------------
27044 Get message buffer
27045 -----------------------------------------------------------------------*/
27046 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027047 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027048 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027049 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027050 {
27051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27052 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27053 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27054 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027055 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027056 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027057 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27058 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27059 &pBSSSes);
27060 if ( NULL == pBSSSes )
27061 {
27062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027063 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027064 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027065 }
27066 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027067
27068 //
27069 // Don't need to fill send buffer other than header
27070 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027071 wpalMemoryCopy( pSendBuffer+usDataOffset,
27072 &halGtkOffloadGetInfoReqParams,
27073 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027074
27075 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27076 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27077
27078 /*-------------------------------------------------------------------------
27079 Send Get STA Request to HAL
27080 -------------------------------------------------------------------------*/
27081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27082 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027083fail:
27084 // Release the message buffer so we don't leak
27085 wpalMemoryFree(pSendBuffer);
27086
27087failRequest:
27088 //WDA should have failure check to avoid the memory leak
27089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027090}
27091
27092/**
27093 @brief Process host offload Rsp function (called when a
27094 response is being received over the bus from HAL)
27095
27096 @param pWDICtx: pointer to the WLAN DAL context
27097 pEventData: pointer to the event information structure
27098
27099 @see
27100 @return Result of the function call
27101*/
27102WDI_Status
27103WDI_ProcessGtkOffloadRsp
27104(
27105 WDI_ControlBlockType* pWDICtx,
27106 WDI_EventInfoType* pEventData
27107)
27108{
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 eHalStatus halStatus;
27110 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027111 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27112 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27114
27115 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27116
27117 /*-------------------------------------------------------------------------
27118 Sanity check
27119 -------------------------------------------------------------------------*/
27120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27121 ( NULL == pEventData->pEventData))
27122 {
27123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027125 WDI_ASSERT(0);
27126 return WDI_STATUS_E_FAILURE;
27127 }
27128
27129 /*-------------------------------------------------------------------------
27130 Extract response and send it to UMAC
27131 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027132 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27133 {
27134 wpalMemoryCopy( &halGtkOffloadRspParams,
27135 pEventData->pEventData,
27136 sizeof(halGtkOffloadRspParams));
27137
27138 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027139 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027140 wdiGtkOffloadRsparams.bssIdx =
27141 halGtkOffloadRspParams.bssIdx;
27142 }
27143 else
27144 {
27145 halStatus = *((eHalStatus*)pEventData->pEventData);
27146 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27147 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027148
27149 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027150 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027151
27152 return WDI_STATUS_SUCCESS;
27153}
27154
27155/**
27156 @brief Process GTK Offload Get Information Response function
27157
27158 @param pWDICtx: pointer to the WLAN DAL context
27159 pEventData: pointer to the event information structure
27160
27161 @see
27162 @return Result of the function call
27163*/
27164WDI_Status
27165WDI_ProcessGTKOffloadGetInfoRsp
27166(
27167 WDI_ControlBlockType* pWDICtx,
27168 WDI_EventInfoType* pEventData
27169)
27170{
Jeff Johnson295189b2012-06-20 16:38:30 -070027171 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027172 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027173 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27174 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027175 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027176
27177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27178
27179 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27180
27181 /*-------------------------------------------------------------------------
27182 Sanity check
27183 -------------------------------------------------------------------------*/
27184 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27185 ( NULL == pEventData->pEventData ))
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);
27190 return WDI_STATUS_E_FAILURE;
27191 }
27192
27193 /*-------------------------------------------------------------------------
27194 Extract response and send it to UMAC
27195 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027196 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27197 {
27198 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27199 pEventData->pEventData,
27200 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027202 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027203 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027204 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27205 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27206 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27207 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27208 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27209 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27210 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27211 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027212
27213 wpalMutexAcquire(&pWDICtx->wptMutex);
27214 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27215 &pBSSSes);
27216
27217 if ( NULL == pBSSSes )
27218 {
27219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27220 "Association sequence for this BSS does not exist or "
27221 "association no longer in progress - mysterious HAL response");
27222 wpalMutexRelease(&pWDICtx->wptMutex);
27223 return WDI_STATUS_E_NOT_ALLOWED;
27224 }
27225
27226 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27227 sizeof (wpt_macAddr));
27228 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027229 }
27230 else
27231 {
27232 halStatus = *((eHalStatus*)pEventData->pEventData);
27233 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27234 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027235 /*Notify UMAC*/
27236 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27237 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027238 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027239
27240 return WDI_STATUS_SUCCESS;
27241}
27242#endif // WLAN_FEATURE_GTK_OFFLOAD
27243
27244#ifdef WLAN_WAKEUP_EVENTS
27245WDI_Status
27246WDI_ProcessWakeReasonInd
27247(
27248 WDI_ControlBlockType* pWDICtx,
27249 WDI_EventInfoType* pEventData
27250)
27251{
27252 WDI_LowLevelIndType *pWdiInd;
27253 tpWakeReasonParams pWakeReasonParams;
27254 wpt_uint32 allocSize = 0;
27255
27256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027257 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027258
27259 /*-------------------------------------------------------------------------
27260 Sanity check
27261 -------------------------------------------------------------------------*/
27262 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27263 ( NULL == pEventData->pEventData ))
27264 {
27265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 WDI_ASSERT( 0 );
27268 return WDI_STATUS_E_FAILURE;
27269 }
27270
27271 /*-------------------------------------------------------------------------
27272 Extract indication and send it to UMAC
27273 -------------------------------------------------------------------------*/
27274 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27275
27276 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27277
27278 //Allocate memory for WDI_WakeReasonIndType structure
27279 pWdiInd = wpalMemoryAllocate(allocSize) ;
27280
27281 if(NULL == pWdiInd)
27282 {
27283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27284 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027285 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 WDI_ASSERT(0);
27287 return WDI_STATUS_E_FAILURE;
27288 }
27289
27290 wpalMemoryZero(pWdiInd, allocSize);
27291
27292 /* Fill in the indication parameters*/
27293 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27294 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27295 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27296 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27297 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27298 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27299 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27300 &(pWakeReasonParams->aDataStart[0]),
27301 pWakeReasonParams->ulStoredDataLen);
27302
ltimariu034f7d62013-01-24 18:54:33 -080027303
27304 if ( pWDICtx->wdiLowLevelIndCB )
27305 {
27306 /*Notify UMAC*/
27307 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27308 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027309
27310 //Free memory allocated for WDI_WakeReasonIndType structure
27311 wpalMemoryFree(pWdiInd);
27312
27313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027314 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027315
27316 return WDI_STATUS_SUCCESS;
27317}
27318#endif // WLAN_WAKEUP_EVENTS
27319
27320void WDI_GetWcnssCompiledApiVersion
27321(
27322 WDI_WlanVersionType *pWcnssApiVersion
27323)
27324{
27325 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27326 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27327 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27328 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27329}
27330
27331/**
27332 @brief Process Set TM Level Rsp function (called when a
27333 response is being received over the bus from HAL)
27334
27335 @param pWDICtx: pointer to the WLAN DAL context
27336 pEventData: pointer to the event information structure
27337
27338 @see
27339 @return Result of the function call
27340*/
27341WDI_Status
27342WDI_ProcessSetTmLevelRsp
27343(
27344 WDI_ControlBlockType* pWDICtx,
27345 WDI_EventInfoType* pEventData
27346)
27347{
27348 WDI_Status wdiStatus;
27349 eHalStatus halStatus;
27350 WDI_SetTmLevelCb wdiSetTmLevelCb;
27351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27352
27353 /*-------------------------------------------------------------------------
27354 Sanity check
27355 -------------------------------------------------------------------------*/
27356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27357 ( NULL == pEventData->pEventData ))
27358 {
27359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027361 WDI_ASSERT(0);
27362 return WDI_STATUS_E_FAILURE;
27363 }
27364
27365 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27366
27367 /*-------------------------------------------------------------------------
27368 Extract response and send it to UMAC
27369 -------------------------------------------------------------------------*/
27370 halStatus = *((eHalStatus*)pEventData->pEventData);
27371 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27372
27373 /*Notify UMAC*/
27374 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27375
27376 return WDI_STATUS_SUCCESS;
27377}/*WDI_ProcessSetTmLevelRsp*/
27378
27379/**
27380 @brief Process Set Thermal Mitigation level Changed request
27381
27382 @param pWDICtx: pointer to the WLAN DAL context
27383 pEventData: pointer to the event information structure
27384
27385 @see
27386 @return Result of the function call
27387*/
27388WDI_Status
27389WDI_ProcessSetTmLevelReq
27390(
27391 WDI_ControlBlockType* pWDICtx,
27392 WDI_EventInfoType* pEventData
27393)
27394{
27395 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27396 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27397 wpt_uint8* pSendBuffer = NULL;
27398 wpt_uint16 usDataOffset = 0;
27399 wpt_uint16 usSendSize = 0;
27400 tSetThermalMitgationType halTmMsg;
27401
27402 /*-------------------------------------------------------------------------
27403 Sanity check
27404 -------------------------------------------------------------------------*/
27405 if (( NULL == pEventData ) ||
27406 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27407 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27408 {
27409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027411 WDI_ASSERT(0);
27412 return WDI_STATUS_E_FAILURE;
27413 }
27414
27415 /*-----------------------------------------------------------------------
27416 Get message buffer
27417 -----------------------------------------------------------------------*/
27418 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27419 sizeof(halTmMsg),
27420 &pSendBuffer, &usDataOffset, &usSendSize))||
27421 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27422 {
27423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27424 "Unable to get send buffer in Set PNO req %x %x %x",
27425 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27426 WDI_ASSERT(0);
27427 return WDI_STATUS_E_FAILURE;
27428 }
27429
27430 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27431 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27432
27433 wpalMemoryCopy( pSendBuffer+usDataOffset,
27434 &halTmMsg,
27435 sizeof(halTmMsg));
27436
27437 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27438 pWDICtx->pfncRspCB = NULL;
27439 /*-------------------------------------------------------------------------
27440 Send Get STA Request to HAL
27441 -------------------------------------------------------------------------*/
27442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27443 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27444}
27445
27446/* Fill the value from the global features enabled array to the global capabilities
27447 * bitmap struct
27448 */
27449static void
27450FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27451{
27452 wpt_int8 i;
27453 for (i=0; i<len; i++)
27454 {
27455 setFeatCaps(fCaps, enabledFeat[i]);
27456 }
27457}
27458
27459/**
27460 @brief WDI_featureCapsExchangeReq
27461 Post feature capability bitmap exchange event.
27462 Host will send its own capability to FW in this req and
27463 expect FW to send its capability back as a bitmap in Response
27464
27465 @param
27466
27467 wdiFeatureCapsExchangeCb: callback called on getting the response.
27468 It is kept to mantain similarity between WDI reqs and if needed, can
27469 be used in future. Currently, It is set to NULL
27470
27471 pUserData: user data will be passed back with the
27472 callback
27473
27474 @see
27475 @return Result of the function call
27476*/
27477WDI_Status
27478WDI_featureCapsExchangeReq
27479(
27480 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27481 void* pUserData
27482)
27483{
27484 WDI_EventInfoType wdiEventData;
27485 wpt_int32 fCapsStructSize;
27486
27487 /*------------------------------------------------------------------------
27488 Sanity Check
27489 ------------------------------------------------------------------------*/
27490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27491 {
27492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27493 "WDI API call before module is initialized - Fail request");
27494
27495 return WDI_STATUS_E_NOT_ALLOWED;
27496 }
27497
27498 /* Allocate memory separately for global variable carrying FW caps */
27499 fCapsStructSize = sizeof(tWlanFeatCaps);
27500 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27501 if ( NULL == gpHostWlanFeatCaps )
27502 {
27503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27504 "Cannot allocate memory for host capability info\n");
27505 WDI_ASSERT(0);
27506 return WDI_STATUS_MEM_FAILURE;
27507 }
27508
27509 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27510
27511 /*------------------------------------------------------------------------
27512 Fill in Event data and post to the Main FSM
27513 ------------------------------------------------------------------------*/
27514 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27515 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027517 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027518 gpHostWlanFeatCaps->featCaps[0],
27519 gpHostWlanFeatCaps->featCaps[1],
27520 gpHostWlanFeatCaps->featCaps[2],
27521 gpHostWlanFeatCaps->featCaps[3]
27522 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27524 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027525 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27526 wdiEventData.pEventData = gpHostWlanFeatCaps;
27527 wdiEventData.uEventDataSize = fCapsStructSize;
27528 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27529 wdiEventData.pUserData = pUserData;
27530
27531 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27532}
27533
27534/**
Yathishd8713192012-12-10 14:21:35 -080027535 @brief Disable Active mode offload in Host
27536
27537 @param void
27538 @see
27539 @return void
27540*/
27541void
27542WDI_disableCapablityFeature(wpt_uint8 feature_index)
27543{
27544 supportEnabledFeatures[feature_index] = 0;
27545 return;
27546}
27547
27548/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 @brief Process Host-FW Capability Exchange Request function
27550
27551 @param pWDICtx: pointer to the WLAN DAL context
27552 pEventData: pointer to the event information structure
27553
27554 @see
27555 @return Result of the function call
27556*/
27557WDI_Status
27558WDI_ProcessFeatureCapsExchangeReq
27559(
27560 WDI_ControlBlockType* pWDICtx,
27561 WDI_EventInfoType* pEventData
27562)
27563{
27564 wpt_uint8* pSendBuffer = NULL;
27565 wpt_uint16 usDataOffset = 0;
27566 wpt_uint16 usSendSize = 0;
27567 wpt_uint16 usLen = 0;
27568
27569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27570
27571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027572 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027573
27574 /*-------------------------------------------------------------------------
27575 Sanity check
27576 -------------------------------------------------------------------------*/
27577 /* Call back function is NULL since not required for cap exchange req */
27578 if (( NULL == pEventData ) ||
27579 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27580 {
27581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027583 WDI_ASSERT(0);
27584 return WDI_STATUS_E_FAILURE;
27585 }
27586
27587 /*-----------------------------------------------------------------------
27588 Get message buffer
27589 -----------------------------------------------------------------------*/
27590 usLen = sizeof(tWlanFeatCaps);
27591
27592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27593 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27594 usLen,
27595 &pSendBuffer, &usDataOffset, &usSendSize))||
27596 ( usSendSize < (usDataOffset + usLen )))
27597 {
27598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27599 "Unable to get send buffer in feat caps exchange req %x %x",
27600 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27601 WDI_ASSERT(0);
27602 return WDI_STATUS_E_FAILURE;
27603 }
27604
27605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027606 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027607 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27608 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27609 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27610 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27611 );
27612
27613 /* Copy host caps after the offset in the send buffer */
27614 wpalMemoryCopy( pSendBuffer+usDataOffset,
27615 (tWlanFeatCaps *)pEventData->pEventData,
27616 usLen);
27617
27618 /*-------------------------------------------------------------------------
27619 Send Start Request to HAL
27620 -------------------------------------------------------------------------*/
27621 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27622 (WDI_StartRspCb)pEventData->pCBfnc,
27623 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27624
27625}/*WDI_ProcessFeatureCapsExchangeReq*/
27626
27627/**
27628 @brief Process Host-FW Capability Exchange Response function
27629
27630 @param pWDICtx: pointer to the WLAN DAL context
27631 pEventData: pointer to the event information structure
27632
27633 @see
27634 @return Result of the function call
27635*/
27636WDI_Status
27637WDI_ProcessFeatureCapsExchangeRsp
27638(
27639 WDI_ControlBlockType* pWDICtx,
27640 WDI_EventInfoType* pEventData
27641)
27642{
27643 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27644 wpt_int32 fCapsStructSize;
27645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27646
27647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027648 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027649
27650 /*-------------------------------------------------------------------------
27651 Sanity check
27652 -------------------------------------------------------------------------*/
27653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27654 ( NULL == pEventData->pEventData ))
27655 {
27656 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027659 WDI_ASSERT(0);
27660 return WDI_STATUS_E_FAILURE;
27661 }
27662
27663 /* Allocate memory separately for global variable carrying FW caps */
27664 fCapsStructSize = sizeof(tWlanFeatCaps);
27665 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27666 if ( NULL == gpFwWlanFeatCaps )
27667 {
27668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27669 "Cannot allocate memory for host capability info\n");
27670 WDI_ASSERT(0);
27671 return WDI_STATUS_MEM_FAILURE;
27672 }
27673
27674 /*-------------------------------------------------------------------------
27675 Unpack HAL Response Message - the header was already extracted by the
27676 main Response Handling procedure
27677 -------------------------------------------------------------------------*/
27678 /*-------------------------------------------------------------------------
27679 Extract response and send it to UMAC
27680 -------------------------------------------------------------------------*/
27681
27682 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27683 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027685 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027686 gpFwWlanFeatCaps->featCaps[0],
27687 gpFwWlanFeatCaps->featCaps[1],
27688 gpFwWlanFeatCaps->featCaps[2],
27689 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027690 );
27691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27692 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027693 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27694
27695 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27696 if (wdiFeatureCapsExchangeCb != NULL)
27697 wdiFeatureCapsExchangeCb(NULL, NULL);
27698
27699 return WDI_STATUS_SUCCESS;
27700}
27701
Mohit Khanna4a70d262012-09-11 16:30:12 -070027702#ifdef WLAN_FEATURE_11AC
27703WDI_Status
27704WDI_ProcessUpdateVHTOpModeRsp
27705(
27706 WDI_ControlBlockType* pWDICtx,
27707 WDI_EventInfoType* pEventData
27708)
27709{
27710 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27711 WDI_Status wdiStatus;
27712 eHalStatus halStatus;
27713
27714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27715
27716 /*-------------------------------------------------------------------------
27717 Sanity check
27718 -------------------------------------------------------------------------*/
27719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27720 ( NULL == pEventData->pEventData))
27721 {
27722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027723 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027724 WDI_ASSERT(0);
27725 return WDI_STATUS_E_FAILURE;
27726 }
27727 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27728
27729 /*-------------------------------------------------------------------------
27730 Extract response and send it to UMAC
27731 -------------------------------------------------------------------------*/
27732 halStatus = *((eHalStatus*)pEventData->pEventData);
27733 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27734
27735 /*Notify UMAC*/
27736 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27737
27738 return WDI_STATUS_SUCCESS;
27739}
27740#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027741/**
27742 @brief WDI_getHostWlanFeatCaps
27743 WDI API that returns whether the feature passed to it as enum value in
27744 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27745 variable storing host capability bitmap to find this. This can be used by
27746 other moduels to decide certain things like call different APIs based on
27747 whether a particular feature is supported.
27748
27749 @param
27750
27751 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27752
27753 @see
27754 @return
27755 0 - if the feature is NOT supported in host
27756 any non-zero value - if the feature is SUPPORTED in host.
27757*/
27758wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27759{
27760 wpt_uint8 featSupported = 0;
27761 if (gpHostWlanFeatCaps != NULL)
27762 {
27763 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27764 }
27765 else
27766 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027768 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027769 }
27770 return featSupported;
27771}
27772
27773/**
27774 @brief WDI_getFwWlanFeatCaps
27775 WDI API that returns whether the feature passed to it as enum value in
27776 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27777 variable storing host capability bitmap to find this. This can be used by
27778 other moduels to decide certain things like call different APIs based on
27779 whether a particular feature is supported.
27780
27781 @param
27782
27783 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27784 in wlan_hal_msg.h.
27785
27786 @see
27787 @return
27788 0 - if the feature is NOT supported in FW
27789 any non-zero value - if the feature is SUPPORTED in FW.
27790*/
27791wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27792{
27793 wpt_uint8 featSupported = 0;
27794 if (gpFwWlanFeatCaps != NULL)
27795 {
27796 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27797 }
27798 else
27799 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027801 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027802 }
27803 return featSupported;
27804}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027805
27806#ifdef WLAN_FEATURE_11AC
27807WDI_Status
27808WDI_ProcessUpdateVHTOpModeReq
27809(
27810 WDI_ControlBlockType* pWDICtx,
27811 WDI_EventInfoType* pEventData
27812)
27813{
27814 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27815 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27816 wpt_uint8* pSendBuffer = NULL;
27817 wpt_uint16 usDataOffset = 0;
27818 wpt_uint16 usSendSize = 0;
27819
27820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27821
27822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027823 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027824
27825 /*-------------------------------------------------------------------------
27826 Sanity check
27827 -------------------------------------------------------------------------*/
27828 if (( NULL == pEventData ) ||
27829 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27830 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27831 {
27832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027833 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027834 WDI_ASSERT(0);
27835 return WDI_STATUS_E_FAILURE;
27836 }
27837
27838 /*-----------------------------------------------------------------------
27839 Get message buffer
27840 -----------------------------------------------------------------------*/
27841 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27842 sizeof(WDI_UpdateVHTOpMode),
27843 &pSendBuffer, &usDataOffset, &usSendSize))||
27844 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27845 {
27846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27847 "Unable to get send buffer in update vht opMode req");
27848 WDI_ASSERT(0);
27849 return WDI_STATUS_E_FAILURE;
27850 }
27851
27852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27853 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27854
27855 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27856 sizeof(WDI_UpdateVHTOpMode));
27857
27858 /*-------------------------------------------------------------------------
27859 Send Start Request to HAL
27860 -------------------------------------------------------------------------*/
27861 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27862 wdiVHTOpModeCb,
27863 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27864
27865}
27866
27867WDI_Status
27868WDI_UpdateVHTOpModeReq
27869(
27870 WDI_UpdateVHTOpMode *pData,
27871 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27872 void* pUserData
27873)
27874{
27875 WDI_EventInfoType wdiEventData;
27876
27877 /*------------------------------------------------------------------------
27878 Sanity Check
27879 ------------------------------------------------------------------------*/
27880 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27881 {
27882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27883 "WDI API call before module is initialized - Fail request");
27884
27885 return WDI_STATUS_E_NOT_ALLOWED;
27886 }
27887
27888 /*------------------------------------------------------------------------
27889 Fill in Event data and post to the Main FSM
27890 ------------------------------------------------------------------------*/
27891 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27892 wdiEventData.pEventData = pData;
27893 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27894 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27895 wdiEventData.pUserData = pUserData;
27896
27897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27898 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27899
27900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27901
27902}
27903#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027904
27905/**
27906 @brief WDI_TransportChannelDebug -
27907 Display DXE Channel debugging information
27908 User may request to display DXE channel snapshot
27909 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027910
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027911 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027912 @param enableStallDetect : Enable stall detect feature
27913 This feature will take effect to data performance
27914 Not integrate till fully verification
27915 @see
27916 @return none
27917*/
27918void WDI_TransportChannelDebug
27919(
27920 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027921 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027922)
27923{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027924 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027925 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027926}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027927/**
27928 @brief WDI_SsrTimerCB
27929 Callback function for SSR timer, if this is called then the graceful
27930 shutdown for Riva did not happen.
27931
27932 @param pUserData : user data to timer
27933
27934 @see
27935 @return none
27936*/
27937void
27938WDI_SsrTimerCB
27939(
27940 void *pUserData
27941)
27942{
27943 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27945
27946 if (NULL == pWDICtx )
27947 {
27948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027949 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027950 WDI_ASSERT(0);
27951 return;
27952 }
27953 wpalRivaSubystemRestart();
27954
27955 return;
27956
27957}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027958
27959/**
27960 @brief WDI_SetEnableSSR -
27961 This API is called to enable/disable SSR on WDI timeout.
27962
27963 @param enableSSR : enable/disable SSR
27964
27965 @see
27966 @return none
27967*/
27968void WDI_SetEnableSSR(wpt_boolean enableSSR)
27969{
27970 gWDICb.bEnableSSR = enableSSR;
27971}
Leo Chang00bc9132013-08-01 19:21:11 -070027972
27973
27974#ifdef FEATURE_WLAN_LPHB
27975/**
27976 @brief WDI_ProcessLphbWaitTimeoutInd -
27977 This function will be invoked when FW detects low power
27978 heart beat failure
27979
27980 @param pWDICtx : wdi context
27981 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070027982 @see
27983 @return Result of the function call
27984*/
27985WDI_Status
27986WDI_ProcessLphbWaitTimeoutInd
27987(
27988 WDI_ControlBlockType* pWDICtx,
27989 WDI_EventInfoType* pEventData
27990)
27991{
27992 WDI_LowLevelIndType wdiInd;
27993 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27995
27996 /*-------------------------------------------------------------------------
27997 Sanity check
27998 -------------------------------------------------------------------------*/
27999 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28000 (NULL == pEventData->pEventData))
28001 {
28002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28003 "%s: Invalid parameters", __func__);
28004 WDI_ASSERT(0);
28005 return WDI_STATUS_E_FAILURE;
28006 }
28007
28008 /*-------------------------------------------------------------------------
28009 Extract indication and send it to UMAC
28010 -------------------------------------------------------------------------*/
28011 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
28012
28013 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
28014 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
28015 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
28016 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
28017 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
28018 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
28019 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
28020 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
28021 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
28022 /*Notify UMAC*/
28023 if (pWDICtx->wdiLowLevelIndCB)
28024 {
28025 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28026 }
28027
28028 return WDI_STATUS_SUCCESS;
28029}
28030
28031/**
28032 @brief WDI_ProcessLphbCfgRsp -
28033 LPHB configuration response from FW
28034
28035 @param pWDICtx : wdi context
28036 pEventData : indication data
28037
28038 @see
28039 @return Result of the function call
28040*/
28041WDI_Status WDI_ProcessLphbCfgRsp
28042(
28043 WDI_ControlBlockType* pWDICtx,
28044 WDI_EventInfoType* pEventData
28045)
28046{
28047 WDI_Status wdiStatus;
28048 eHalStatus halStatus;
28049 WDI_LphbCfgCb wdiLphbCfgCb;
28050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28051
28052 /*-------------------------------------------------------------------------
28053 Sanity check
28054 -------------------------------------------------------------------------*/
28055 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28056 (NULL == pEventData->pEventData))
28057 {
28058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28059 "%s: Invalid parameters", __func__);
28060 WDI_ASSERT(0);
28061 return WDI_STATUS_E_FAILURE;
28062 }
28063
28064 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28065
28066 /*-------------------------------------------------------------------------
28067 Extract response and send it to UMAC
28068 -------------------------------------------------------------------------*/
28069 halStatus = *((eHalStatus*)pEventData->pEventData);
28070 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28071
28072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28073 "LPHB Cfg Rsp Return status %d", wdiStatus);
28074 /*Notify UMAC*/
28075 if (NULL != wdiLphbCfgCb)
28076 {
28077 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28078 }
28079
28080 return WDI_STATUS_SUCCESS;
28081}
28082
28083/**
28084 @brief WDI_ProcessLPHBConfReq -
28085 LPHB configuration request to FW
28086
28087 @param pWDICtx : wdi context
28088 pEventData : indication data
28089
28090 @see
28091 @return none
28092*/
28093WDI_Status WDI_ProcessLPHBConfReq
28094(
28095 WDI_ControlBlockType* pWDICtx,
28096 WDI_EventInfoType* pEventData
28097)
28098{
28099 WDI_LPHBReq *pLphbReqParams;
28100 WDI_Status wdiStatus;
28101 wpt_uint8* pSendBuffer = NULL;
28102 wpt_uint16 usDataOffset = 0;
28103 wpt_uint16 usSendSize = 0;
28104 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28106
28107 /*-------------------------------------------------------------------------
28108 Sanity check
28109 -------------------------------------------------------------------------*/
28110 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28111 {
28112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28113 "%s: Invalid parameters in Suspend ind",__func__);
28114 WDI_ASSERT(0);
28115 return WDI_STATUS_E_FAILURE;
28116 }
28117
28118 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28119
28120 /*-----------------------------------------------------------------------
28121 Get message buffer
28122 -----------------------------------------------------------------------*/
28123 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28124 WDI_LPHB_CFG_REQ,
28125 sizeof(tHalLowPowerHeartBeatReqMsg),
28126 &pSendBuffer, &usDataOffset, &usSendSize))||
28127 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28128 {
28129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28130 "Unable to get send buffer in LPHB Ind ");
28131 WDI_ASSERT(0);
28132 return WDI_STATUS_E_FAILURE;
28133 }
28134
28135 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28136 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28137
28138 halLphbReqRarams->lowPowerHeartBeatCmdType =
28139 (tANI_U16)(++pLphbReqParams->cmd);
28140 switch ((tANI_U16)pLphbReqParams->cmd)
28141 {
28142 case WDI_LPHB_SET_EN_PARAMS_INDID:
28143 halLphbReqRarams->sessionIdx =
28144 pLphbReqParams->params.lphbEnableReq.session;
28145 halLphbReqRarams->options.control.heartBeatEnable =
28146 pLphbReqParams->params.lphbEnableReq.enable;
28147 halLphbReqRarams->options.control.heartBeatType =
28148 pLphbReqParams->params.lphbEnableReq.item;
28149 break;
28150
28151 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28152 halLphbReqRarams->sessionIdx =
28153 pLphbReqParams->params.lphbTcpParamReq.session;
28154 halLphbReqRarams->options.tcpParams.timeOutSec =
28155 pLphbReqParams->params.lphbTcpParamReq.timeout;
28156 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28157 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28158 sizeof(v_U32_t));
28159 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28160 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28161 sizeof(v_U32_t));
28162
28163 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28164 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28165 WDI_MAC_ADDR_LEN);
28166
28167 halLphbReqRarams->options.tcpParams.hostPort =
28168 pLphbReqParams->params.lphbTcpParamReq.src_port;
28169 halLphbReqRarams->options.tcpParams.destPort =
28170 pLphbReqParams->params.lphbTcpParamReq.dst_port;
28171 break;
28172
28173 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28174 halLphbReqRarams->sessionIdx =
28175 pLphbReqParams->params.lphbTcpFilterReq.session;
28176 halLphbReqRarams->options.tcpUdpFilter.offset =
28177 pLphbReqParams->params.lphbTcpFilterReq.offset;
28178 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28179 pLphbReqParams->params.lphbTcpFilterReq.length;
28180 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28181 pLphbReqParams->params.lphbTcpFilterReq.filter,
28182 WDI_LPHB_FILTER_LEN);
28183 break;
28184
28185 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28186 halLphbReqRarams->sessionIdx =
28187 pLphbReqParams->params.lphbUdpParamReq.session;
28188 halLphbReqRarams->options.udpParams.timeOutSec =
28189 pLphbReqParams->params.lphbUdpParamReq.timeout;
28190 halLphbReqRarams->options.udpParams.timePeriodSec =
28191 pLphbReqParams->params.lphbUdpParamReq.interval;
28192 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28193 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28194 sizeof(v_U32_t));
28195 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28196 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28197 sizeof(v_U32_t));
28198
28199 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28200 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28201 WDI_MAC_ADDR_LEN);
28202
28203 halLphbReqRarams->options.udpParams.hostPort =
28204 pLphbReqParams->params.lphbUdpParamReq.src_port;
28205 halLphbReqRarams->options.udpParams.destPort =
28206 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28207 break;
28208
28209 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28210 halLphbReqRarams->sessionIdx =
28211 pLphbReqParams->params.lphbUdpFilterReq.session;
28212 halLphbReqRarams->options.tcpUdpFilter.offset =
28213 pLphbReqParams->params.lphbUdpFilterReq.offset;
28214 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28215 pLphbReqParams->params.lphbUdpFilterReq.length;
28216 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28217 pLphbReqParams->params.lphbUdpFilterReq.filter,
28218 WDI_LPHB_FILTER_LEN);
28219 break;
28220
28221 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28222 /* NA */
28223 break;
28224
28225 default:
28226 break;
28227 }
28228
28229 /*-------------------------------------------------------------------------
28230 Send Suspend Request to HAL
28231 -------------------------------------------------------------------------*/
28232 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28233 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28234
28235 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28236 usSendSize, pWDICtx->pfncRspCB,
28237 pWDICtx->pReqStatusUserData,
28238 WDI_LPHB_CFG_RESP);
28239
28240 return wdiStatus;
28241}
28242
28243/**
28244 @brief WDI_LPHBConfReq -
28245 LPHB configuration request API
28246
28247 @param lphbconfParam : configuration parameter
28248 usrData : client context
28249 lphbCfgCb : callback function pointer
28250
28251 @see
28252 @return Success or fail status code
28253*/
28254WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28255 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28256{
28257 WDI_EventInfoType wdiEventData;
28258
28259 /*------------------------------------------------------------------------
28260 Sanity Check
28261 ------------------------------------------------------------------------*/
28262 if (eWLAN_PAL_FALSE == gWDIInitialized)
28263 {
28264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28265 "WDI API call before module is initialized - Fail request");
28266
28267 return WDI_STATUS_E_NOT_ALLOWED;
28268 }
28269
28270 /*------------------------------------------------------------------------
28271 Fill in Event data and post to the Main FSM
28272 ------------------------------------------------------------------------*/
28273 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28274 wdiEventData.pEventData = lphbconfParam;
28275 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28276 wdiEventData.pCBfnc = lphbCfgCb;
28277 wdiEventData.pUserData = usrData;
28278
28279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28280}
28281#endif /* FEATURE_WLAN_LPHB */
28282
Ravi Joshi96d77342013-07-23 08:37:49 -070028283/**
28284 @brief WDI_ProcessIbssPeerInactivityInd
28285 Process peer inactivity indication coming from HAL
28286
28287 @param pWDICtx: pointer to the WLAN DAL context
28288 pEventData: pointer to the event information structure
28289 @see
28290 @return Result of the function call
28291*/
28292WDI_Status
28293WDI_ProcessIbssPeerInactivityInd
28294(
28295 WDI_ControlBlockType* pWDICtx,
28296 WDI_EventInfoType* pEventData
28297)
28298{
28299 WDI_LowLevelIndType wdiInd;
28300 tIbssPeerInactivityIndMsg halIbssIndMsg;
28301
28302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28303
28304 /*-------------------------------------------------------------------------
28305 Sanity check
28306 -------------------------------------------------------------------------*/
28307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28308 ( NULL == pEventData->pEventData ))
28309 {
28310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28311 "%s: Invalid parameters", __func__);
28312 WDI_ASSERT( 0 );
28313 return WDI_STATUS_E_FAILURE;
28314 }
28315
28316 /*-------------------------------------------------------------------------
28317 Extract indication and send it to UMAC
28318 -------------------------------------------------------------------------*/
28319 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28320 pEventData->pEventData,
28321 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28322
28323 /*Fill in the indication parameters*/
28324 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28325
28326 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28327 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28328
28329 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28330 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28331
28332 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28333 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28334 sizeof(tSirMacAddr));
28335
28336 /*Notify UMAC*/
28337 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28338
28339 return WDI_STATUS_SUCCESS;
28340
28341} /*WDI_ProcessIbssPeerInactivityInd*/