blob: a2e57e875387ed9112771b7a8883fe6070e7482b [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"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700131 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700136 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700142 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700146 ,FEATURE_NOT_SUPPORTED //9
147 ,FEATURE_NOT_SUPPORTED //10
148 ,FEATURE_NOT_SUPPORTED //11
149 ,FEATURE_NOT_SUPPORTED //12
150 ,FEATURE_NOT_SUPPORTED //13
151 ,FEATURE_NOT_SUPPORTED //14
152 ,FEATURE_NOT_SUPPORTED //15
153 ,FEATURE_NOT_SUPPORTED //16
154 ,FEATURE_NOT_SUPPORTED //17
155 ,FEATURE_NOT_SUPPORTED //18
156 ,FEATURE_NOT_SUPPORTED //19
157 ,FEATURE_NOT_SUPPORTED //20
158 ,FEATURE_NOT_SUPPORTED //21
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700159#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Ravi Joshi96d77342013-07-23 08:37:49 -0700160 ,WLAN_ROAM_SCAN_OFFLOAD //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700161#else
162 ,FEATURE_NOT_SUPPORTED
163#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700164 ,FEATURE_NOT_SUPPORTED //23
165 ,FEATURE_NOT_SUPPORTED //24
166 ,FEATURE_NOT_SUPPORTED //25
167 ,IBSS_HEARTBEAT_OFFLOAD //26
Mohit Khannac0b992f2012-12-04 15:08:18 -0800168 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700169
170/*--------------------------------------------------------------------------
171 WLAN DAL State Machine
172 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700173WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700174{
175 /*WDI_INIT_ST*/
176 {{
177 WDI_MainStart, /*WDI_START_EVENT*/
178 NULL, /*WDI_STOP_EVENT*/
179 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
180 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
181 WDI_MainClose, /*WDI_CLOSE_EVENT*/
182 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
183 }},
184
185 /*WDI_STARTED_ST*/
186 {{
187 WDI_MainStartStarted, /*WDI_START_EVENT*/
188 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
189 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
190 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
191 NULL, /*WDI_CLOSE_EVENT*/
192 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
193 }},
194
195 /*WDI_STOPPED_ST*/
196 {{
197 WDI_MainStart, /*WDI_START_EVENT*/
198 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
199 NULL, /*WDI_REQUEST_EVENT*/
200 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
201 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700202 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700203 }},
204
205 /*WDI_BUSY_ST*/
206 {{
207 WDI_MainStartBusy, /*WDI_START_EVENT*/
208 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
209 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
210 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
211 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
212 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
213 }}
214};
215
Jeff Johnsone7245742012-09-05 17:12:55 -0700216/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700217 DAL Request Processing Array - the functions in this table will only be
218 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700219 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700220 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700221WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700222{
223 /*INIT*/
224 WDI_ProcessStartReq, /* WDI_START_REQ */
225 WDI_ProcessStopReq, /* WDI_STOP_REQ */
226 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
227
228 /*SCAN*/
229 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
230 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
231 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
232 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
233
234 /*ASSOCIATION*/
235 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
236 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
237 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
238 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
239 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
240
241 /* Security */
242 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
243 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
244 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
245 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
246
247 /* QoS and BA APIs */
248 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
249 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
250 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
251 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
252 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
253
254 /* Miscellaneous Control APIs */
255 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
256 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
257 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
258 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
259 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
260
261 /*BA APIs*/
262 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
263 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
264
265 /*Beacon processing APIs*/
266 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
267 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
268
269 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
270 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
271 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
272 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700273 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 /* PowerSave APIs */
275 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
276 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
277 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
278 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
279 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
280 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
281 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
282 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
283 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
284 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
285 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
286 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
287 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
288 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
289 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
290 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
291 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
292 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
293 /*NV Download APIs*/
294 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
295 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
296 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
297#ifdef WLAN_FEATURE_VOWIFI_11R
298 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
299#else
300 NULL,
301#endif /* WLAN_FEATURE_VOWIFI_11R */
302 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
303 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700304 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700305
306#ifdef FEATURE_OEM_DATA_SUPPORT
307 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
308#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700309 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700310#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700312
313 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700314
315#ifdef FEATURE_WLAN_SCAN_PNO
316 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
317 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
318 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
319#else
320 NULL,
321 NULL,
322 NULL,
323#endif /* FEATURE_WLAN_SCAN_PNO */
324
325 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700326
Jeff Johnson295189b2012-06-20 16:38:30 -0700327#ifdef WLAN_FEATURE_PACKET_FILTERING
328 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700329 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700330 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700331 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700332 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700333 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700334 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700335 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700336#else
337 NULL,
338 NULL,
339 NULL,
340 NULL,
341#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700342 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
344 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
345
346 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
347#ifdef FEATURE_WLAN_CCX
348 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
349#else
350 NULL,
351#endif
352
353#ifdef WLAN_FEATURE_GTK_OFFLOAD
354 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
355 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
356#else
357 NULL,
358 NULL,
359#endif // WLAN_FEATURE_GTK_OFFLOAD
360
361 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
362 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700363#ifdef WLAN_FEATURE_11AC
364 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800365#else
366 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700367#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800368#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
369 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
370#else
schangd82195a2013-03-13 18:41:24 -0700371 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800372#endif
schangd82195a2013-03-13 18:41:24 -0700373 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700374#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700375 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700376#else
377 NULL,
378#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530379#ifdef FEATURE_WLAN_TDLS
380 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
381#else
382 NULL,
383#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700384#ifdef FEATURE_WLAN_LPHB
385 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
386#else
387 NULL,
388#endif /* FEATURE_WLAN_LPHB */
schangd82195a2013-03-13 18:41:24 -0700389 /*-------------------------------------------------------------------------
390 Indications
391 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700392 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800393 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530394 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
395 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700396#ifdef WLAN_FEATURE_11W
397 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
398#else
399 NULL,
400#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700401};
402
403
Jeff Johnsone7245742012-09-05 17:12:55 -0700404/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 DAL Request Processing Array - the functions in this table will only be
406 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700407 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700409WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700410{
411 /*INIT*/
412 WDI_ProcessStartRsp, /* WDI_START_RESP */
413 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
414 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
415
416 /*SCAN*/
417 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
418 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
419 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
420 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
421
422 /* ASSOCIATION*/
423 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
424 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
425 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
426 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
427 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
428
429 /* Security */
430 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
431 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
432 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
433 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
434
435 /* QoS and BA APIs */
436 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
437 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
438 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
439 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
440 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
441
442 /* Miscellaneous Control APIs */
443 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
444 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
445 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
446 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
447 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
448
449 /* BA APIs*/
450 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
451 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700452
Jeff Johnson295189b2012-06-20 16:38:30 -0700453 /* IBSS APIs*/
454 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
455 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
456
457 /*Soft AP APIs*/
458 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
459 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
460 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
461 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
462
463 /* PowerSave APIs */
464 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
465 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
466 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
467 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
468 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
469 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
470 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
471 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
472 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
473 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
474 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
475 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
476 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
477 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
478 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
479 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
480 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
481 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700482
Jeff Johnson295189b2012-06-20 16:38:30 -0700483
484 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
485
486 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
487 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
488#ifdef WLAN_FEATURE_VOWIFI_11R
489 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
490#else
491 NULL,
492#endif /* WLAN_FEATURE_VOWIFI_11R */
493 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
494 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495#ifdef FEATURE_OEM_DATA_SUPPORT
496 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
497#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700498 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700499#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700500 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
501
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700503
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700505
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#ifdef FEATURE_WLAN_SCAN_PNO
509 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
510 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
511 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
512#else
513 NULL,
514 NULL,
515 NULL,
516#endif // FEATURE_WLAN_SCAN_PNO
517
518 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
519
520 /*---------------------------------------------------------------------
521 Indications
522 ---------------------------------------------------------------------*/
523#ifdef WLAN_FEATURE_PACKET_FILTERING
524 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700525 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700529 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700530 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700532#else
533 NULL,
534 NULL,
535 NULL,
536 NULL,
537#endif // WLAN_FEATURE_PACKET_FILTERING
538
539 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
540 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
541
542 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
543#ifdef FEATURE_WLAN_CCX
544 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
545#else
546 NULL,
547#endif
548
549#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
551 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552#else
553 NULL,
554 NULL,
555#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
557 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700558#ifdef WLAN_FEATURE_11AC
559 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700560#else
561 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700562#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800563#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
564 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
565#else
566 NULL,
567#endif
schangd82195a2013-03-13 18:41:24 -0700568 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700569#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700570 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700571#else
572 NULL,
573#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530574#ifdef FEATURE_WLAN_TDLS
575 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
576#else
577 NULL,
578#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700579#ifdef FEATURE_WLAN_LPHB
580 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
581#else
582 NULL,
583#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700584 /*---------------------------------------------------------------------
585 Indications
586 ---------------------------------------------------------------------*/
587 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
588 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
589 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
590 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
591 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
592 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
593
594 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
595
596 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
597
Jeff Johnson295189b2012-06-20 16:38:30 -0700598 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700599
600#ifdef FEATURE_WLAN_SCAN_PNO
601 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
602#else
603 NULL,
604#endif // FEATURE_WLAN_SCAN_PNO
605
606#ifdef WLAN_WAKEUP_EVENTS
607 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
608#else // WLAN_WAKEUP_EVENTS
609 NULL,
610#endif // WLAN_WAKEUP_EVENTS
611
612 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800613
Viral Modi9dc288a2012-12-10 13:09:21 -0800614 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530615#ifdef FEATURE_WLAN_TDLS
616 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
617#else
618 NULL,
619#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700620
621#ifdef FEATURE_WLAN_LPHB
622 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
623#else
624 NULL,
625#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700626
627 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700628};
629
630
Jeff Johnsone7245742012-09-05 17:12:55 -0700631/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700632 WLAN DAL Global Control Block
633 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700634WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700635static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
636
Jeff Johnsone7245742012-09-05 17:12:55 -0700637const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700638
639/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700640WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700641void* WDI_GET_PAL_CTX( void )
642{
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700644}/*WDI_GET_PAL_CTX*/
645
Jeff Johnsone7245742012-09-05 17:12:55 -0700646/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700647 Helper inline converters
648 ============================================================================*/
649/*Convert WDI driver type into HAL driver type*/
650WPT_STATIC WPT_INLINE WDI_Status
651WDI_HAL_2_WDI_STATUS
652(
653 eHalStatus halStatus
654);
655
656/*Convert WDI request type into HAL request type*/
657WPT_STATIC WPT_INLINE tHalHostMsgType
658WDI_2_HAL_REQ_TYPE
659(
660 WDI_RequestEnumType wdiReqType
661);
662
663/*Convert WDI response type into HAL response type*/
664WPT_STATIC WPT_INLINE WDI_ResponseEnumType
665HAL_2_WDI_RSP_TYPE
666(
667 tHalHostMsgType halMsg
668);
669
670/*Convert WDI driver type into HAL driver type*/
671WPT_STATIC WPT_INLINE tDriverType
672WDI_2_HAL_DRV_TYPE
673(
674 WDI_DriverType wdiDriverType
675);
676
677/*Convert WDI stop reason into HAL stop reason*/
678WPT_STATIC WPT_INLINE tHalStopType
679WDI_2_HAL_STOP_REASON
680(
681 WDI_StopType wdiStopType
682);
683
684/*Convert WDI scan mode type into HAL scan mode type*/
685WPT_STATIC WPT_INLINE eHalSysMode
686WDI_2_HAL_SCAN_MODE
687(
688 WDI_ScanMode wdiScanMode
689);
690
691/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700692WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700693WDI_2_HAL_SEC_CH_OFFSET
694(
695 WDI_HTSecondaryChannelOffset wdiSecChOffset
696);
697
698/*Convert WDI BSS type into HAL BSS type*/
699WPT_STATIC WPT_INLINE tSirBssType
700WDI_2_HAL_BSS_TYPE
701(
702 WDI_BssType wdiBSSType
703);
704
705/*Convert WDI NW type into HAL NW type*/
706WPT_STATIC WPT_INLINE tSirNwType
707WDI_2_HAL_NW_TYPE
708(
709 WDI_NwType wdiNWType
710);
711
712/*Convert WDI chanel bonding type into HAL cb type*/
713WPT_STATIC WPT_INLINE ePhyChanBondState
714WDI_2_HAL_CB_STATE
715(
716 WDI_PhyChanBondState wdiCbState
717);
718
719/*Convert WDI chanel bonding type into HAL cb type*/
720WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
721WDI_2_HAL_HT_OPER_MODE
722(
723 WDI_HTOperatingMode wdiHTOperMode
724);
725
726/*Convert WDI mimo PS type into HAL mimo PS type*/
727WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
728WDI_2_HAL_MIMO_PS
729(
730 WDI_HTMIMOPowerSaveState wdiHTOperMode
731);
732
733/*Convert WDI ENC type into HAL ENC type*/
734WPT_STATIC WPT_INLINE tAniEdType
735WDI_2_HAL_ENC_TYPE
736(
737 WDI_EncryptType wdiEncType
738);
739
740/*Convert WDI WEP type into HAL WEP type*/
741WPT_STATIC WPT_INLINE tAniWepType
742WDI_2_HAL_WEP_TYPE
743(
744 WDI_WepType wdiWEPType
745);
746
747/*Convert WDI Link State into HAL Link State*/
748WPT_STATIC WPT_INLINE tSirLinkState
749WDI_2_HAL_LINK_STATE
750(
751 WDI_LinkStateType wdiLinkState
752);
753
Jeff Johnsone7245742012-09-05 17:12:55 -0700754/*Translate a STA Context from WDI into HAL*/
755WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700756void
757WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700758(
Jeff Johnson295189b2012-06-20 16:38:30 -0700759 tConfigStaParams* phalConfigSta,
760 WDI_ConfigStaReqInfoType* pwdiConfigSta
761);
Jeff Johnsone7245742012-09-05 17:12:55 -0700762
763/*Translate a Rate set info from WDI into HAL*/
764WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700765WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700766(
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 tSirMacRateSet* pHalRateSet,
768 WDI_RateSet* pwdiRateSet
769);
770
771/*Translate an EDCA Parameter Record from WDI into HAL*/
772WPT_STATIC WPT_INLINE void
773WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700774(
Jeff Johnson295189b2012-06-20 16:38:30 -0700775 tSirMacEdcaParamRecord* phalEdcaParam,
776 WDI_EdcaParamRecord* pWDIEdcaParam
777);
778
779/*Copy a management frame header from WDI fmt into HAL fmt*/
780WPT_STATIC WPT_INLINE void
781WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
782(
783 tSirMacMgmtHdr* pmacMgmtHdr,
784 WDI_MacMgmtHdr* pwdiMacMgmtHdr
785);
786
787/*Copy config bss parameters from WDI fmt into HAL fmt*/
788WPT_STATIC WPT_INLINE void
789WDI_CopyWDIConfigBSSToHALConfigBSS
790(
791 tConfigBssParams* phalConfigBSS,
792 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
793);
794
Jeff Johnsone7245742012-09-05 17:12:55 -0700795/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700796 pointed to by user data */
797WPT_STATIC WPT_INLINE void
798WDI_ExtractRequestCBFromEvent
799(
800 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700801 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700802 void** ppUserData
803);
804
805wpt_uint8
806WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700807(
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 WDI_ControlBlockType* pWDICtx,
809 WDI_BSSSessionType** ppSession
810);
811
812void
813WDI_AddBcastSTAtoSTATable
814(
815 WDI_ControlBlockType* pWDICtx,
816 WDI_AddStaParams * staParams,
817 wpt_uint16 usBcastStaIdx
818);
819
820WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700821(
Jeff Johnson295189b2012-06-20 16:38:30 -0700822 WDI_ControlBlockType* pWDICtx,
823 WDI_EventInfoType* pEventData
824);
825
826void
827WDI_SetPowerStateCb
828(
829 wpt_status status,
830 unsigned int dxePhyAddr,
831 void *pContext
832);
833
834#define CASE_RETURN_STRING( str ) \
835 case ( ( str ) ): return( #str ); break \
836
837/**
838 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700839
840 @param wdiReqMsgId: WDI Message request Id
841
842 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700843 @return Result of the function call
844*/
845static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
846{
847 switch (wdiReqMsgId)
848 {
849 CASE_RETURN_STRING( WDI_START_REQ );
850 CASE_RETURN_STRING( WDI_STOP_REQ );
851 CASE_RETURN_STRING( WDI_CLOSE_REQ );
852 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
853 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
854 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
855 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
856 CASE_RETURN_STRING( WDI_JOIN_REQ );
857 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
858 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
859 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
860 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
861 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
862 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
863 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
864 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
865 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
866 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
867 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
868 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
869 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
870 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
871 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
872 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
873 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
874 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
875 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
876 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
877 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
878 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
879 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
880 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
881 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
882 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
883 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530884#ifdef FEATURE_WLAN_TDLS
885 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
886#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700887 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
888 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
889 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
890 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
891 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
892 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
893 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
894 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
895 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
896 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
897 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
898 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
899 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
900 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
901 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
902 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
903 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
904 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
905 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
906 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
907 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
908 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
909 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
910 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
911 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700912 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700913 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
914 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
915 #ifdef FEATURE_WLAN_SCAN_PNO
916 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
917 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
918 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
919 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700920#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700921 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700922#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700923 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
924 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
925 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
926 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
927 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
928 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
929 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
930 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
931 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800932 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800933 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700934#ifdef WLAN_FEATURE_11W
935 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
936#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 default:
938 return "Unknown WDI MessageId";
939 }
940}
941
942
943
944/**
945 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700946
947 @param wdiRespMsgId: WDI Message response Id
948
949 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700950 @return Result of the function call
951*/
952static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
953{
954 switch (wdiRespMsgId)
955 {
956 CASE_RETURN_STRING( WDI_START_RESP );
957 CASE_RETURN_STRING( WDI_STOP_RESP );
958 CASE_RETURN_STRING( WDI_CLOSE_RESP );
959 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
960 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
961 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
962 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
963 CASE_RETURN_STRING( WDI_JOIN_RESP );
964 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
965 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
966 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
967 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
968 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
969 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
970 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
971 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
972 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
973 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
974 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
975 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
976 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
977 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
978 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
979 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
980 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
981 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
982 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
983 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
984 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
985 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
986 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
987 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
988 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
989 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
990 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530991#ifdef FEATURE_WLAN_TDLS
992 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
993 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
994#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700995 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
996 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
997 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
998 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
999 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1000 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1001 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1002 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1003 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1004 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1005 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1006 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1007 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1008 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1009 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1010 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1011 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1012 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1013 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1014 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1015 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1016 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1017 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1018 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1019 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001020 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1022 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1023 #ifdef FEATURE_WLAN_SCAN_PNO
1024 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1025 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1026 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1027 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001028#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001029 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001030#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001031 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1032 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1033 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1034 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1035 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1036 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1037 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1038 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001039 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001040 default:
1041 return "Unknown WDI MessageId";
1042 }
1043}
1044
1045/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301046 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1047 Capability bitmap array.
1048 @param capabilityBitmap - Base address of Bitmap array
1049 @see
1050 @returns None
1051 */
1052void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1053{
1054 int i;
1055 char capStr[512];
1056 char *pCapStr = capStr;
1057 for (i = 0; i < 32; i++) {
1058 if ((*(capabilityBitmap + 0) & (1 << i))) {
1059 switch(i) {
1060 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1061 pCapStr += strlen("MCC");
1062 break;
1063 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1064 pCapStr += strlen("P2P");
1065 break;
1066 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1067 pCapStr += strlen("DOT11AC");
1068 break;
1069 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1070 pCapStr += strlen("SLM_SESSIONIZATION");
1071 break;
1072 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1073 pCapStr += strlen("DOT11AC_OPMODE");
1074 break;
1075 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1076 pCapStr += strlen("SAP32STA");
1077 break;
1078 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1079 pCapStr += strlen("TDLS");
1080 break;
1081 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1082 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1083 break;
1084 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1085 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1086 break;
1087 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1088 pCapStr += strlen("BEACON_OFFLOAD");
1089 break;
1090 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1091 pCapStr += strlen("SCAN_OFFLOAD");
1092 break;
1093 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1094 pCapStr += strlen("ROAM_OFFLOAD");
1095 break;
1096 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1097 pCapStr += strlen("BCN_MISS_OFFLOAD");
1098 break;
1099 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1100 pCapStr += strlen("STA_POWERSAVE");
1101 break;
1102 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1103 pCapStr += strlen("AP_UAPSD");
1104 break;
1105 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1106 pCapStr += strlen("AP_DFS");
1107 break;
1108 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1109 pCapStr += strlen("BLOCKACK");
1110 break;
1111 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1112 pCapStr += strlen("PHY_ERR");
1113 break;
1114 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1115 pCapStr += strlen("BCN_FILTER");
1116 break;
1117 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1118 pCapStr += strlen("RTT");
1119 break;
1120 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1121 pCapStr += strlen("RATECTRL");
1122 break;
1123 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1124 pCapStr += strlen("WOW");
1125 break;
1126 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1127 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1128 break;
1129 }
1130 *pCapStr++ = ',';
1131 *pCapStr++ = ' ';
1132 }
1133 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301134 pCapStr -= 2;
1135 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301136 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301138}
1139
1140/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001141 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001142
1143 @param halStatusId: HAL status Id
1144
1145 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 @return Result of the function call
1147*/
1148static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1149{
1150 switch (halStatusId)
1151 {
1152 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1153 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1154 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1155 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1156 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1157 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1158 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1159 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1160 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1161 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1162 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1163 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1164 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1165 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1166 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1167 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1168 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1169 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1170 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1171 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1172 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1173 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1174 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1175 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1176 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1177 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1178 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1179 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1180 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1181 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1182 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1183 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1184 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1185 default:
1186 return "Unknown HAL status";
1187 }
1188}
1189
Jeff Johnsone7245742012-09-05 17:12:55 -07001190/*========================================================================
1191
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001193
Jeff Johnson295189b2012-06-20 16:38:30 -07001194==========================================================================*/
1195
1196/**
1197 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001198
Jeff Johnson295189b2012-06-20 16:38:30 -07001199 DAL will allocate all the resources it needs. It will open PAL, it will also
1200 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001201 DXE/SMD or any other drivers that they need.
1202
Jeff Johnson295189b2012-06-20 16:38:30 -07001203 @param pOSContext: pointer to the OS context provided by the UMAC
1204 will be passed on to PAL on Open
1205 ppWDIGlobalCtx: output pointer of Global Context
1206 pWdiDevCapability: output pointer of device capability
1207
1208 @return Result of the function call
1209*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001210WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001211WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001212(
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 void* pOSContext,
1214 void** ppWDIGlobalCtx,
1215 WDI_DeviceCapabilityType* pWdiDevCapability,
1216 unsigned int driverType
1217)
1218{
1219 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001220 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001221 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001222 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1224
1225 /*---------------------------------------------------------------------
1226 Sanity check
1227 ---------------------------------------------------------------------*/
1228 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1229 {
1230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1231 "Invalid input parameters in WDI_Init");
1232
Jeff Johnsone7245742012-09-05 17:12:55 -07001233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001234 }
1235
1236 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001237 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 ---------------------------------------------------------------------*/
1239 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1240 {
1241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1242 "WDI module already initialized - return");
1243
Jeff Johnsone7245742012-09-05 17:12:55 -07001244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001245 }
1246
1247 /*Module is now initialized - this flag is to ensure the fact that multiple
1248 init will not happen on WDI
1249 !! - potential race does exist because read and set are not atomic,
1250 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001251 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001252
1253 /*Setup the control block */
1254 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001255 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001256
1257 /*Setup the STA Table*/
1258 wdiStatus = WDI_STATableInit(&gWDICb);
1259 if ( WDI_STATUS_SUCCESS != wdiStatus )
1260 {
1261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1262 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001263 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001264 goto fail_STATableInit;
1265 }
1266
1267 /*------------------------------------------------------------------------
1268 Open the PAL
1269 ------------------------------------------------------------------------*/
1270 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1271 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1272 {
1273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1274 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001275 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 goto fail_wpalOpen;
1277 }
1278
1279 /*Initialize main synchro mutex - it will be used to ensure integrity of
1280 the main WDI Control Block*/
1281 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1282 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1283 {
1284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1285 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001286 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 goto fail_mutex;
1288 }
1289
1290 /*Initialize the response timer - it will be used to time all messages
1291 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001292 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1293 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 &gWDICb);
1295 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1296 {
1297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1298 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001299 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001300 goto fail_timer;
1301 }
1302
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001303 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1304 WDI_SsrTimerCB,
1305 &gWDICb);
1306 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1307 {
1308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1309 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001310 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001311 goto fail_timer2;
1312 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001313 /* Initialize the WDI Pending Request Queue*/
1314 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1315 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1316 {
1317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1318 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001319 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001320 goto fail_pend_queue;
1321 }
1322
1323 /*Init WDI Pending Assoc Id Queue */
1324 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1325 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1326 {
1327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1328 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001329 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001330 goto fail_assoc_queue;
1331 }
1332
1333 /*Initialize the BSS sessions pending Queue */
1334 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1335 {
1336 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
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 BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001341 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001342 goto fail_bss_queue;
1343 }
1344 }
1345
1346 /*Indicate the control block is sufficiently initialized for callbacks*/
1347 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1348
1349 /*------------------------------------------------------------------------
1350 Initialize the Data Path Utility Module
1351 ------------------------------------------------------------------------*/
1352 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1353 if ( WDI_STATUS_SUCCESS != wdiStatus )
1354 {
1355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1356 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001357 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001358 goto fail_dp_util_init;
1359 }
1360
1361 /* Init Set power state event */
1362 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001363 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001364 {
1365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1366 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001367 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 goto fail_power_event;
1369 }
1370
1371 /* Init WCTS action event */
1372 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001373 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001374 {
1375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1376 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001377 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001378 goto fail_wcts_event;
1379 }
1380
1381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 ------------------------------------------------------------------------*/
1384 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1385 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001386 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 wctsCBs.wctsRxMsgCBData = &gWDICb;
1388
Jeff Johnsone7245742012-09-05 17:12:55 -07001389 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001391 WDI_CT_CHANNEL_SIZE,
1392 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001393
1394 if ( NULL == gWDICb.wctsHandle )
1395 {
1396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001397 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001398 goto fail_wcts_open;
1399 }
1400
1401 gWDICb.driverMode = (tDriverType)driverType;
1402 /* FTM mode not need to open Transport Driver */
1403 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001404 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 /*------------------------------------------------------------------------
1406 Open the Data Transport
1407 ------------------------------------------------------------------------*/
1408 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1409 {
1410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001411 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001412 goto fail_wdts_open;
1413 }
1414 }
1415
1416 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001417 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001418
1419 /*Send the context as a ptr to the global WDI Control Block*/
1420 *ppWDIGlobalCtx = &gWDICb;
1421
1422 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001423 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001424 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1425 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1426 return WDI_STATUS_SUCCESS;
1427
1428 /* ERROR handlers
1429 Undo everything that completed successfully */
1430
1431 fail_wdts_open:
1432 {
1433 wpt_status eventStatus;
1434
1435 /* Closing WCTS in this scenario is tricky since it has to close
1436 the SMD channel and then we get notified asynchronously when
1437 the channel has been closed. So we take some of the logic from
1438 the "normal" close procedure in WDI_Close()
1439 */
1440
1441 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001442 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001443 {
1444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001445 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 }
1447
1448 WCTS_CloseTransport(gWDICb.wctsHandle);
1449
1450 /* Wait for WCTS to close the control transport. If we were able
1451 to reset the event flag, then we'll wait for the event,
1452 otherwise we'll wait for a maximum amount of time required for
1453 the channel to be closed */
1454 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1455 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001456 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 WDI_WCTS_ACTION_TIMEOUT);
1458 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1459 {
1460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001461 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001462 }
1463 }
1464 else
1465 {
1466 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1467 }
1468 }
1469 fail_wcts_open:
1470 wpalEventDelete(&gWDICb.wctsActionEvent);
1471 fail_wcts_event:
1472 wpalEventDelete(&gWDICb.setPowerStateEvent);
1473 fail_power_event:
1474 WDI_DP_UtilsExit(&gWDICb);
1475 fail_dp_util_init:
1476 gWDICb.magic = 0;
1477 fail_bss_queue:
1478 /* entries 0 thru i-1 were successfully initialized */
1479 while (0 < i)
1480 {
1481 i--;
1482 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1483 }
1484 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1485 fail_assoc_queue:
1486 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1487 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001488 wpalTimerDelete(&gWDICb.ssrTimer);
1489 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001490 wpalTimerDelete(&gWDICb.wptResponseTimer);
1491 fail_timer:
1492 wpalMutexDelete(&gWDICb.wptMutex);
1493 fail_mutex:
1494 wpalClose(gWDICb.pPALContext);
1495 fail_wpalOpen:
1496 WDI_STATableClose(&gWDICb);
1497 fail_STATableInit:
1498 gWDIInitialized = eWLAN_PAL_FALSE;
1499
1500 return WDI_STATUS_E_FAILURE;
1501
1502}/*WDI_Init*/;
1503
1504/**
1505 @brief WDI_Start will be called when the upper MAC is ready to
1506 commence operation with the WLAN Device. Upon the call
1507 of this API the WLAN DAL will pack and send a HAL Start
1508 message to the lower RIVA sub-system if the SMD channel
1509 has been fully opened and the RIVA subsystem is up.
1510
1511 If the RIVA sub-system is not yet up and running DAL
1512 will queue the request for Open and will wait for the
1513 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001514 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001515
1516 WDI_Init must have been called.
1517
Jeff Johnsone7245742012-09-05 17:12:55 -07001518 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001519 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001520
Jeff Johnson295189b2012-06-20 16:38:30 -07001521 wdiStartRspCb: callback for passing back the response of
1522 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001523
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001525 callback
1526
Jeff Johnson295189b2012-06-20 16:38:30 -07001527 @see WDI_Start
1528 @return Result of the function call
1529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001531WDI_Start
1532(
1533 WDI_StartReqParamsType* pwdiStartParams,
1534 WDI_StartRspCb wdiStartRspCb,
1535 void* pUserData
1536)
1537{
1538 WDI_EventInfoType wdiEventData;
1539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1540
1541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001543 ------------------------------------------------------------------------*/
1544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1545 {
1546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1547 "WDI API call before module is initialized - Fail request");
1548
Jeff Johnsone7245742012-09-05 17:12:55 -07001549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 }
1551
1552 /*------------------------------------------------------------------------
1553 Fill in Event data and post to the Main FSM
1554 ------------------------------------------------------------------------*/
1555 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001556 wdiEventData.pEventData = pwdiStartParams;
1557 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1558 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001559 wdiEventData.pUserData = pUserData;
1560
1561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1562
1563}/*WDI_Start*/
1564
1565/**
1566 @brief WDI_Stop will be called when the upper MAC is ready to
1567 stop any operation with the WLAN Device. Upon the call
1568 of this API the WLAN DAL will pack and send a HAL Stop
1569 message to the lower RIVA sub-system if the DAL Core is
1570 in started state.
1571
1572 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001573
1574 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001575
1576 WDI_Start must have been called.
1577
Jeff Johnsone7245742012-09-05 17:12:55 -07001578 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001580
Jeff Johnson295189b2012-06-20 16:38:30 -07001581 wdiStopRspCb: callback for passing back the response of
1582 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001583
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001585 callback
1586
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 @see WDI_Start
1588 @return Result of the function call
1589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001591WDI_Stop
1592(
1593 WDI_StopReqParamsType* pwdiStopParams,
1594 WDI_StopRspCb wdiStopRspCb,
1595 void* pUserData
1596)
1597{
1598 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001599 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1601
1602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 ------------------------------------------------------------------------*/
1605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1606 {
1607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1608 "WDI API call before module is initialized - Fail request");
1609
Jeff Johnsone7245742012-09-05 17:12:55 -07001610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 }
1612
Jeff Johnson43971f52012-07-17 12:26:56 -07001613 /*Access to the global state must be locked before cleaning */
1614 wpalMutexAcquire(&pWDICtx->wptMutex);
1615
1616 /*Clear all pending request*/
1617 WDI_ClearPendingRequests(pWDICtx);
1618
1619 /*We have completed cleaning unlock now*/
1620 wpalMutexRelease(&pWDICtx->wptMutex);
1621
Jeff Johnson295189b2012-06-20 16:38:30 -07001622 /* Free the global variables */
1623 wpalMemoryFree(gpHostWlanFeatCaps);
1624 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001625 gpHostWlanFeatCaps = NULL;
1626 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001627
1628 /*------------------------------------------------------------------------
1629 Fill in Event data and post to the Main FSM
1630 ------------------------------------------------------------------------*/
1631 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001632 wdiEventData.pEventData = pwdiStopParams;
1633 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1634 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001635 wdiEventData.pUserData = pUserData;
1636
1637 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1638
1639}/*WDI_Stop*/
1640
1641
1642
1643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001644 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001645 needs to interact with DAL. DAL will free its control
1646 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001647
1648 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001649
1650 WDI_Stop must have been called.
1651
1652 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001653
Jeff Johnson295189b2012-06-20 16:38:30 -07001654 @see WDI_Stop
1655 @return Result of the function call
1656*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001657WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001658WDI_Close
1659(
1660 void
1661)
1662{
1663 wpt_uint8 i;
1664 WDI_EventInfoType wdiEventData;
1665 wpt_status wptStatus;
1666 wpt_status eventStatus;
1667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1668
1669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 ------------------------------------------------------------------------*/
1672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1673 {
1674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1675 "WDI API call before module is initialized - Fail request");
1676
Jeff Johnsone7245742012-09-05 17:12:55 -07001677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001678 }
1679
1680 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1681 (the control transport will be closed by the FSM and we'll want
1682 to wait until that completes)*/
1683 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001684 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001687 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 /* fall through and try to finish closing via the FSM */
1689 }
1690
1691 /*------------------------------------------------------------------------
1692 Fill in Event data and post to the Main FSM
1693 ------------------------------------------------------------------------*/
1694 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001695 wdiEventData.pEventData = NULL;
1696 wdiEventData.uEventDataSize = 0;
1697 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001698 wdiEventData.pUserData = NULL;
1699
1700 gWDIInitialized = eWLAN_PAL_FALSE;
1701
1702 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1703
1704 /*Wait for WCTS to close the control transport
1705 (but only if we were able to reset the event flag*/
1706 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1707 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001708 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001709 WDI_WCTS_ACTION_TIMEOUT);
1710 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1711 {
1712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001713 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 }
1715 }
1716
1717 /* Destroy the WCTS action event */
1718 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1719 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1720 {
1721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1722 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001723 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001724 }
1725
1726 /* Destroy the Set Power State event */
1727 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1728 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1729 {
1730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1731 "WDI Close failed to destroy an event");
1732
Jeff Johnsone7245742012-09-05 17:12:55 -07001733 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001734 }
1735
1736 /*------------------------------------------------------------------------
1737 Closes the Data Path Utility Module
1738 ------------------------------------------------------------------------*/
1739 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1740 {
1741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1742 "WDI Init failed to close the DP Util Module");
1743
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001745 }
1746
1747 /*destroy the BSS sessions pending Queue */
1748 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1749 {
1750 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1751 }
1752
1753 /* destroy the WDI Pending Assoc Id Request Queue*/
1754 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1755
1756 /* destroy the WDI Pending Request Queue*/
1757 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001758
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 /*destroy the response timer */
1760 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1761
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001762 /*destroy the SSR timer */
1763 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1764
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 /*invalidate the main synchro mutex */
1766 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1767 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1768 {
1769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1770 "Failed to delete mutex %d", wptStatus);
1771 WDI_ASSERT(0);
1772 }
1773
1774 /*Clear control block. note that this will clear the "magic"
1775 which will inhibit all asynchronous callbacks*/
1776 WDI_CleanCB(&gWDICb);
1777
1778 return wptStatus;
1779
1780}/*WDI_Close*/
1781
1782/**
1783 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1784 This will do most of the WDI stop & close
1785 operations without doing any handshake with Riva
1786
1787 This will also make sure that the control transport
1788 will NOT be closed.
1789
1790 This request will not be queued.
1791
1792
1793 WDI_Start must have been called.
1794
1795 @param closeTransport: Close control channel if this is set
1796
1797 @return Result of the function call
1798*/
1799WDI_Status
1800WDI_Shutdown
1801(
1802 wpt_boolean closeTransport
1803)
1804{
1805 WDI_EventInfoType wdiEventData;
1806 wpt_status wptStatus;
1807 int i = 0;
1808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1809
1810 /*------------------------------------------------------------------------
1811 Sanity Check
1812 ------------------------------------------------------------------------*/
1813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1814 {
1815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1816 "WDI API call before module is initialized - Fail request");
1817
1818 return WDI_STATUS_E_NOT_ALLOWED;
1819 }
1820
1821 /*------------------------------------------------------------------------
1822 Fill in Event data and post to the Main FSM
1823 ------------------------------------------------------------------------*/
1824 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1825 wdiEventData.pEventData = NULL;
1826 wdiEventData.uEventDataSize = 0;
1827
1828 /* Shutdown will not be queued, if the state is busy timer will be
1829 * stopped & this message will be processed.*/
1830 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1831 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1832 {
1833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001834 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 }
1836 /* Destroy the Set Power State event */
1837 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1838 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1839 {
1840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1841 "WDI Close failed to destroy an event");
1842
1843 WDI_ASSERT(0);
1844 }
1845 /*------------------------------------------------------------------------
1846 Closes the Data Path Utility Module
1847 ------------------------------------------------------------------------*/
1848 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1849 {
1850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1851 "WDI Init failed to close the DP Util Module");
1852
1853 WDI_ASSERT(0);
1854 }
1855 if ( closeTransport )
1856 {
1857 /* Close control transport, called from module unload */
1858 WCTS_CloseTransport(gWDICb.wctsHandle);
1859 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001860 else
1861 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001862 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001863 the pending messages in the transport queue */
1864 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1865 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 /*destroy the BSS sessions pending Queue */
1867 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1868 {
1869 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1870 }
1871
1872 /* destroy the WDI Pending Assoc Id Request Queue*/
1873 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1874 /* destroy the WDI Pending Request Queue*/
1875 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1876 /*destroy the response timer */
1877 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001878 /*destroy the SSR timer */
1879 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001880
1881 /*invalidate the main synchro mutex */
1882 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1883 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1884 {
1885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001886 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001887 WDI_ASSERT(0);
1888 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001889 /* Free the global variables */
1890 wpalMemoryFree(gpHostWlanFeatCaps);
1891 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001892 gpHostWlanFeatCaps = NULL;
1893 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001894 /*Clear control block. note that this will clear the "magic"
1895 which will inhibit all asynchronous callbacks*/
1896 WDI_CleanCB(&gWDICb);
1897 return wptStatus;
1898
1899}/*WDI_Shutdown*/
1900
1901
Jeff Johnsone7245742012-09-05 17:12:55 -07001902/*========================================================================
1903
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001905
Jeff Johnson295189b2012-06-20 16:38:30 -07001906==========================================================================*/
1907
1908/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001909 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001910 the WLAN Device to get ready for a scan procedure. Upon
1911 the call of this API the WLAN DAL will pack and send a
1912 HAL Init Scan request message to the lower RIVA
1913 sub-system if DAL is in state STARTED.
1914
1915 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001917
1918 WDI_Start must have been called.
1919
1920 @param wdiInitScanParams: the init scan parameters as specified
1921 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001922
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 wdiInitScanRspCb: callback for passing back the response
1924 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001925
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 callback
1928
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 @see WDI_Start
1930 @return Result of the function call
1931*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001932WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001933WDI_InitScanReq
1934(
1935 WDI_InitScanReqParamsType* pwdiInitScanParams,
1936 WDI_InitScanRspCb wdiInitScanRspCb,
1937 void* pUserData
1938)
1939{
1940 WDI_EventInfoType wdiEventData;
1941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1942
1943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001944 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 ------------------------------------------------------------------------*/
1946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1947 {
1948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1949 "WDI API call before module is initialized - Fail request");
1950
Jeff Johnsone7245742012-09-05 17:12:55 -07001951 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 }
1953
1954 /*------------------------------------------------------------------------
1955 Fill in Event data and post to the Main FSM
1956 ------------------------------------------------------------------------*/
1957 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 wdiEventData.pEventData = pwdiInitScanParams;
1959 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1960 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 wdiEventData.pUserData = pUserData;
1962
1963 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1964
1965}/*WDI_InitScanReq*/
1966
1967/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001968 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 wishes to change the Scan channel on the WLAN Device.
1970 Upon the call of this API the WLAN DAL will pack and
1971 send a HAL Start Scan request message to the lower RIVA
1972 sub-system if DAL is in state STARTED.
1973
1974 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001976
1977 WDI_InitScanReq must have been called.
1978
Jeff Johnsone7245742012-09-05 17:12:55 -07001979 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001981
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 wdiStartScanRspCb: callback for passing back the
1983 response of the start scan operation received from the
1984 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001987 callback
1988
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 @see WDI_InitScanReq
1990 @return Result of the function call
1991*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001993WDI_StartScanReq
1994(
1995 WDI_StartScanReqParamsType* pwdiStartScanParams,
1996 WDI_StartScanRspCb wdiStartScanRspCb,
1997 void* pUserData
1998)
1999{
2000 WDI_EventInfoType wdiEventData;
2001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2002
2003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002004 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002005 ------------------------------------------------------------------------*/
2006 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2007 {
2008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2009 "WDI API call before module is initialized - Fail request");
2010
Jeff Johnsone7245742012-09-05 17:12:55 -07002011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 }
2013
2014 /*------------------------------------------------------------------------
2015 Fill in Event data and post to the Main FSM
2016 ------------------------------------------------------------------------*/
2017 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 wdiEventData.pEventData = pwdiStartScanParams;
2019 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2020 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 wdiEventData.pUserData = pUserData;
2022
2023 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2024
2025}/*WDI_StartScanReq*/
2026
2027
2028/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002029 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002030 wants to end scanning for a particular channel that it
2031 had set before by calling Scan Start on the WLAN Device.
2032 Upon the call of this API the WLAN DAL will pack and
2033 send a HAL End Scan request message to the lower RIVA
2034 sub-system if DAL is in state STARTED.
2035
2036 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002038
2039 WDI_StartScanReq must have been called.
2040
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 wdiEndScanRspCb: callback for passing back the response
2045 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002046
Jeff Johnson295189b2012-06-20 16:38:30 -07002047 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002048 callback
2049
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 @see WDI_StartScanReq
2051 @return Result of the function call
2052*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002053WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002054WDI_EndScanReq
2055(
2056 WDI_EndScanReqParamsType* pwdiEndScanParams,
2057 WDI_EndScanRspCb wdiEndScanRspCb,
2058 void* pUserData
2059)
2060{
2061 WDI_EventInfoType wdiEventData;
2062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2063
2064 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002065 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 ------------------------------------------------------------------------*/
2067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2068 {
2069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2070 "WDI API call before module is initialized - Fail request");
2071
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 }
2074
2075 /*------------------------------------------------------------------------
2076 Fill in Event data and post to the Main FSM
2077 ------------------------------------------------------------------------*/
2078 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002079 wdiEventData.pEventData = pwdiEndScanParams;
2080 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2081 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 wdiEventData.pUserData = pUserData;
2083
2084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2085
2086}/*WDI_EndScanReq*/
2087
2088
2089/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 completed the scan process on the WLAN Device. Upon the
2092 call of this API the WLAN DAL will pack and send a HAL
2093 Finish Scan Request request message to the lower RIVA
2094 sub-system if DAL is in state STARTED.
2095
2096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002098
2099 WDI_InitScanReq must have been called.
2100
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002103
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wdiFinishScanRspCb: callback for passing back the
2105 response of the finish scan operation received from the
2106 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002107
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 callback
2110
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 @see WDI_InitScanReq
2112 @return Result of the function call
2113*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002114WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002115WDI_FinishScanReq
2116(
2117 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2118 WDI_FinishScanRspCb wdiFinishScanRspCb,
2119 void* pUserData
2120)
2121{
2122 WDI_EventInfoType wdiEventData;
2123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2124
2125 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002126 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 ------------------------------------------------------------------------*/
2128 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2129 {
2130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2131 "WDI API call before module is initialized - Fail request");
2132
Jeff Johnsone7245742012-09-05 17:12:55 -07002133 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002134 }
2135
2136 /*------------------------------------------------------------------------
2137 Fill in Event data and post to the Main FSM
2138 ------------------------------------------------------------------------*/
2139 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002140 wdiEventData.pEventData = pwdiFinishScanParams;
2141 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2142 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 wdiEventData.pUserData = pUserData;
2144
2145 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2146
2147}/*WDI_FinishScanReq*/
2148
Jeff Johnsone7245742012-09-05 17:12:55 -07002149/*========================================================================
2150
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002152
Jeff Johnson295189b2012-06-20 16:38:30 -07002153==========================================================================*/
2154
2155/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002156 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 to start an association procedure to a BSS. Upon the
2158 call of this API the WLAN DAL will pack and send a HAL
2159 Join request message to the lower RIVA sub-system if
2160 DAL is in state STARTED.
2161
2162 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002163 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002164
2165 WDI_Start must have been called.
2166
Jeff Johnsone7245742012-09-05 17:12:55 -07002167 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002169
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 wdiJoinRspCb: callback for passing back the response of
2171 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002172
Jeff Johnson295189b2012-06-20 16:38:30 -07002173 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 callback
2175
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 @see WDI_Start
2177 @return Result of the function call
2178*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002179WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002180WDI_JoinReq
2181(
2182 WDI_JoinReqParamsType* pwdiJoinParams,
2183 WDI_JoinRspCb wdiJoinRspCb,
2184 void* pUserData
2185)
2186{
2187 WDI_EventInfoType wdiEventData;
2188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2189
2190 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002191 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 ------------------------------------------------------------------------*/
2193 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2194 {
2195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2196 "WDI API call before module is initialized - Fail request");
2197
Jeff Johnsone7245742012-09-05 17:12:55 -07002198 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 }
2200
2201 /*------------------------------------------------------------------------
2202 Fill in Event data and post to the Main FSM
2203 ------------------------------------------------------------------------*/
2204 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 wdiEventData.pEventData = pwdiJoinParams;
2206 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2207 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002208 wdiEventData.pUserData = pUserData;
2209
2210 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2211
2212}/*WDI_JoinReq*/
2213
2214/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 wishes to configure the newly acquired or in process of
2217 being acquired BSS to the HW . Upon the call of this API
2218 the WLAN DAL will pack and send a HAL Config BSS request
2219 message to the lower RIVA sub-system if DAL is in state
2220 STARTED.
2221
2222 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002223 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002224
2225 WDI_JoinReq must have been called.
2226
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 wdiConfigBSSRspCb: callback for passing back the
2231 response of the config BSS operation received from the
2232 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002235 callback
2236
Jeff Johnson295189b2012-06-20 16:38:30 -07002237 @see WDI_JoinReq
2238 @return Result of the function call
2239*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002241WDI_ConfigBSSReq
2242(
2243 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2244 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2245 void* pUserData
2246)
2247{
2248 WDI_EventInfoType wdiEventData;
2249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2250
2251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 ------------------------------------------------------------------------*/
2254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2255 {
2256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2257 "WDI API call before module is initialized - Fail request");
2258
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002260 }
2261
2262 /*------------------------------------------------------------------------
2263 Fill in Event data and post to the Main FSM
2264 ------------------------------------------------------------------------*/
2265 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 wdiEventData.pEventData = pwdiConfigBSSParams;
2267 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2268 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002269 wdiEventData.pUserData = pUserData;
2270
2271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2272
2273}/*WDI_ConfigBSSReq*/
2274
2275/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002276 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002277 disassociating from the BSS and wishes to notify HW.
2278 Upon the call of this API the WLAN DAL will pack and
2279 send a HAL Del BSS request message to the lower RIVA
2280 sub-system if DAL is in state STARTED.
2281
2282 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002284
2285 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2286
Jeff Johnsone7245742012-09-05 17:12:55 -07002287 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 wdiDelBSSRspCb: callback for passing back the response
2291 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 callback
2295
2296 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 @return Result of the function call
2298*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002300WDI_DelBSSReq
2301(
2302 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2303 WDI_DelBSSRspCb wdiDelBSSRspCb,
2304 void* pUserData
2305)
2306{
2307 WDI_EventInfoType wdiEventData;
2308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2309
2310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 ------------------------------------------------------------------------*/
2313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2314 {
2315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2316 "WDI API call before module is initialized - Fail request");
2317
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 }
2320
2321 /*------------------------------------------------------------------------
2322 Fill in Event data and post to the Main FSM
2323 ------------------------------------------------------------------------*/
2324 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 wdiEventData.pEventData = pwdiDelBSSParams;
2326 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2327 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 wdiEventData.pUserData = pUserData;
2329
2330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2331
2332}/*WDI_DelBSSReq*/
2333
2334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002336 associated to a BSS and wishes to configure HW for
2337 associated state. Upon the call of this API the WLAN DAL
2338 will pack and send a HAL Post Assoc request message to
2339 the lower RIVA sub-system if DAL is in state STARTED.
2340
2341 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002343
2344 WDI_JoinReq must have been called.
2345
2346 @param wdiPostAssocReqParams: the assoc parameters as specified
2347 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 wdiPostAssocRspCb: callback for passing back the
2350 response of the post assoc operation received from the
2351 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 callback
2355
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 @see WDI_JoinReq
2357 @return Result of the function call
2358*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002359WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002360WDI_PostAssocReq
2361(
2362 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2363 WDI_PostAssocRspCb wdiPostAssocRspCb,
2364 void* pUserData
2365)
2366{
2367 WDI_EventInfoType wdiEventData;
2368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2369
2370 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002372 ------------------------------------------------------------------------*/
2373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2374 {
2375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2376 "WDI API call before module is initialized - Fail request");
2377
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 }
2380
2381 /*------------------------------------------------------------------------
2382 Fill in Event data and post to the Main FSM
2383 ------------------------------------------------------------------------*/
2384 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 wdiEventData.pEventData = pwdiPostAssocReqParams;
2386 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2387 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002388 wdiEventData.pUserData = pUserData;
2389
2390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2391
2392}/*WDI_PostAssocReq*/
2393
2394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 association with another STA has ended and the station
2397 must be deleted from HW. Upon the call of this API the
2398 WLAN DAL will pack and send a HAL Del STA request
2399 message to the lower RIVA sub-system if DAL is in state
2400 STARTED.
2401
2402 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002404
2405 WDI_PostAssocReq must have been called.
2406
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002409
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 wdiDelSTARspCb: callback for passing back the response
2411 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002412
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002414 callback
2415
Jeff Johnson295189b2012-06-20 16:38:30 -07002416 @see WDI_PostAssocReq
2417 @return Result of the function call
2418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002420WDI_DelSTAReq
2421(
2422 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2423 WDI_DelSTARspCb wdiDelSTARspCb,
2424 void* pUserData
2425)
2426{
2427 WDI_EventInfoType wdiEventData;
2428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2429
2430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002432 ------------------------------------------------------------------------*/
2433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2434 {
2435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2436 "WDI API call before module is initialized - Fail request");
2437
Jeff Johnsone7245742012-09-05 17:12:55 -07002438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 }
2440
2441 /*------------------------------------------------------------------------
2442 Fill in Event data and post to the Main FSM
2443 ------------------------------------------------------------------------*/
2444 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002445 wdiEventData.pEventData = pwdiDelSTAParams;
2446 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2447 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 wdiEventData.pUserData = pUserData;
2449
2450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2451
2452}/*WDI_DelSTAReq*/
2453
Jeff Johnsone7245742012-09-05 17:12:55 -07002454/*========================================================================
2455
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458==========================================================================*/
2459
2460/**
2461 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2462 install a BSS encryption key on the HW. Upon the call of this
2463 API the WLAN DAL will pack and send a Set BSS Key request
2464 message to the lower RIVA sub-system if DAL is in state
2465 STARTED.
2466
2467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002469
2470 WDI_PostAssocReq must have been called.
2471
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 wdiSetBSSKeyRspCb: callback for passing back the
2476 response of the set BSS Key operation received from the
2477 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002478
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 callback
2481
Jeff Johnson295189b2012-06-20 16:38:30 -07002482 @see WDI_PostAssocReq
2483 @return Result of the function call
2484*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002485WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002486WDI_SetBSSKeyReq
2487(
2488 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2489 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2490 void* pUserData
2491)
2492{
2493 WDI_EventInfoType wdiEventData;
2494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2495
2496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 ------------------------------------------------------------------------*/
2499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2500 {
2501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2502 "WDI API call before module is initialized - Fail request");
2503
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 }
2506
2507 /*------------------------------------------------------------------------
2508 Fill in Event data and post to the Main FSM
2509 ------------------------------------------------------------------------*/
2510 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2512 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2513 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 wdiEventData.pUserData = pUserData;
2515
2516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2517
2518}/*WDI_SetBSSKeyReq*/
2519
2520/**
2521 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2522 uninstall a BSS key from HW. Upon the call of this API the
2523 WLAN DAL will pack and send a HAL Remove BSS Key request
2524 message to the lower RIVA sub-system if DAL is in state
2525 STARTED.
2526
2527 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002529
2530 WDI_SetBSSKeyReq must have been called.
2531
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 wdiRemoveBSSKeyRspCb: callback for passing back the
2536 response of the remove BSS key operation received from
2537 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002538
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002540 callback
2541
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 @see WDI_SetBSSKeyReq
2543 @return Result of the function call
2544*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002545WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002546WDI_RemoveBSSKeyReq
2547(
2548 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2549 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2550 void* pUserData
2551)
2552{
2553 WDI_EventInfoType wdiEventData;
2554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2555
2556 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002558 ------------------------------------------------------------------------*/
2559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2560 {
2561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2562 "WDI API call before module is initialized - Fail request");
2563
Jeff Johnsone7245742012-09-05 17:12:55 -07002564 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 }
2566
2567 /*------------------------------------------------------------------------
2568 Fill in Event data and post to the Main FSM
2569 ------------------------------------------------------------------------*/
2570 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002571 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2572 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2573 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002574 wdiEventData.pUserData = pUserData;
2575
2576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2577
2578}/*WDI_RemoveBSSKeyReq*/
2579
2580
2581/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002582 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 ready to install a STA(ast) encryption key in HW. Upon
2584 the call of this API the WLAN DAL will pack and send a
2585 HAL Set STA Key request message to the lower RIVA
2586 sub-system if DAL is in state STARTED.
2587
2588 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002590
2591 WDI_PostAssocReq must have been called.
2592
Jeff Johnsone7245742012-09-05 17:12:55 -07002593 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002595
Jeff Johnson295189b2012-06-20 16:38:30 -07002596 wdiSetSTAKeyRspCb: callback for passing back the
2597 response of the set STA key operation received from the
2598 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002599
Jeff Johnson295189b2012-06-20 16:38:30 -07002600 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 callback
2602
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 @see WDI_PostAssocReq
2604 @return Result of the function call
2605*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002606WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002607WDI_SetSTAKeyReq
2608(
2609 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2610 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2611 void* pUserData
2612)
2613{
2614 WDI_EventInfoType wdiEventData;
2615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2616
2617 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002618 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 ------------------------------------------------------------------------*/
2620 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2621 {
2622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2623 "WDI API call before module is initialized - Fail request");
2624
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 }
2627
2628 /*------------------------------------------------------------------------
2629 Fill in Event data and post to the Main FSM
2630 ------------------------------------------------------------------------*/
2631 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002632 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2633 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2634 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 wdiEventData.pUserData = pUserData;
2636
2637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2638
2639}/*WDI_SetSTAKeyReq*/
2640
2641
2642/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 wants to uninstall a previously set STA key in HW. Upon
2645 the call of this API the WLAN DAL will pack and send a
2646 HAL Remove STA Key request message to the lower RIVA
2647 sub-system if DAL is in state STARTED.
2648
2649 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002651
2652 WDI_SetSTAKeyReq must have been called.
2653
Jeff Johnsone7245742012-09-05 17:12:55 -07002654 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 wdiRemoveSTAKeyRspCb: callback for passing back the
2658 response of the remove STA key operation received from
2659 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002660
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 callback
2663
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 @see WDI_SetSTAKeyReq
2665 @return Result of the function call
2666*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002668WDI_RemoveSTAKeyReq
2669(
2670 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2671 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2672 void* pUserData
2673)
2674{
2675 WDI_EventInfoType wdiEventData;
2676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2677
2678 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 ------------------------------------------------------------------------*/
2681 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2682 {
2683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2684 "WDI API call before module is initialized - Fail request");
2685
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 }
2688
2689 /*------------------------------------------------------------------------
2690 Fill in Event data and post to the Main FSM
2691 ------------------------------------------------------------------------*/
2692 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002693 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2694 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2695 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002696 wdiEventData.pUserData = pUserData;
2697
2698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2699
2700}/*WDI_RemoveSTAKeyReq*/
2701
2702
2703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002705 wants to install a STA Bcast encryption key on the HW.
2706 Upon the call of this API the WLAN DAL will pack and
2707 send a HAL Start request message to the lower RIVA
2708 sub-system if DAL is in state STARTED.
2709
2710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002712
2713 WDI_PostAssocReq must have been called.
2714
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002717
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 wdiSetSTABcastKeyRspCb: callback for passing back the
2719 response of the set BSS Key operation received from the
2720 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002721
Jeff Johnson295189b2012-06-20 16:38:30 -07002722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002723 callback
2724
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 @see WDI_PostAssocReq
2726 @return Result of the function call
2727*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002729WDI_SetSTABcastKeyReq
2730(
2731 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2732 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2733 void* pUserData
2734)
2735
2736{
2737 WDI_EventInfoType wdiEventData;
2738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2739
2740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002742 ------------------------------------------------------------------------*/
2743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2744 {
2745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2746 "WDI API call before module is initialized - Fail request");
2747
Jeff Johnsone7245742012-09-05 17:12:55 -07002748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 }
2750
2751 /*------------------------------------------------------------------------
2752 Fill in Event data and post to the Main FSM
2753 ------------------------------------------------------------------------*/
2754 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2756 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2757 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002758 wdiEventData.pUserData = pUserData;
2759
2760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2761
2762}/*WDI_SetSTABcastKeyReq*/
2763
2764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002765 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 MAC wants to uninstall a STA Bcast key from HW. Upon the
2767 call of this API the WLAN DAL will pack and send a HAL
2768 Remove STA Bcast Key request message to the lower RIVA
2769 sub-system if DAL is in state STARTED.
2770
2771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002773
2774 WDI_SetSTABcastKeyReq must have been called.
2775
Jeff Johnsone7245742012-09-05 17:12:55 -07002776 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 parameters as specified by the Device
2778 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2781 response of the remove STA Bcast key operation received
2782 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002783
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002785 callback
2786
Jeff Johnson295189b2012-06-20 16:38:30 -07002787 @see WDI_SetSTABcastKeyReq
2788 @return Result of the function call
2789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002791WDI_RemoveSTABcastKeyReq
2792(
2793 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2794 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2795 void* pUserData
2796)
2797{
2798 WDI_EventInfoType wdiEventData;
2799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2800
2801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 ------------------------------------------------------------------------*/
2804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2805 {
2806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2807 "WDI API call before module is initialized - Fail request");
2808
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 }
2811
2812 /*------------------------------------------------------------------------
2813 Fill in Event data and post to the Main FSM
2814 ------------------------------------------------------------------------*/
2815 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2817 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2818 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 wdiEventData.pUserData = pUserData;
2820
2821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2822
2823}/*WDI_RemoveSTABcastKeyReq*/
2824
2825/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002826 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 MAC wants to set Max Tx Power to HW. Upon the
2828 call of this API the WLAN DAL will pack and send a HAL
2829 Remove STA Bcast Key request message to the lower RIVA
2830 sub-system if DAL is in state STARTED.
2831
2832 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002834
2835 WDI_SetSTABcastKeyReq must have been called.
2836
Jeff Johnsone7245742012-09-05 17:12:55 -07002837 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002838 parameters as specified by the Device
2839 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002840
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2842 response of the remove STA Bcast key operation received
2843 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002844
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002846 callback
2847
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 @see WDI_SetMaxTxPowerReq
2849 @return Result of the function call
2850*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002851WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002852WDI_SetMaxTxPowerReq
2853(
2854 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2855 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2856 void* pUserData
2857)
2858{
2859 WDI_EventInfoType wdiEventData;
2860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2861
2862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002864 ------------------------------------------------------------------------*/
2865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2866 {
2867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2868 "WDI API call before module is initialized - Fail request");
2869
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 }
2872
2873 /*------------------------------------------------------------------------
2874 Fill in Event data and post to the Main FSM
2875 ------------------------------------------------------------------------*/
2876 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2878 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2879 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002880 wdiEventData.pUserData = pUserData;
2881
2882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2883}
2884
schangd82195a2013-03-13 18:41:24 -07002885/**
2886 @brief WDI_SetTxPowerReq will be called when the upper
2887 MAC wants to set Tx Power to HW.
2888 In state BUSY this request will be queued. Request won't
2889 be allowed in any other state.
2890
2891
2892 @param pwdiSetTxPowerParams: set TS Power parameters
2893 BSSID and target TX Power with dbm included
2894
2895 wdiReqStatusCb: callback for passing back the response
2896
2897 pUserData: user data will be passed back with the
2898 callback
2899
2900 @return Result of the function call
2901*/
2902WDI_Status
2903WDI_SetTxPowerReq
2904(
2905 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2906 WDA_SetTxPowerRspCb wdiReqStatusCb,
2907 void* pUserData
2908)
2909{
2910 WDI_EventInfoType wdiEventData;
2911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2912
2913 /*------------------------------------------------------------------------
2914 Sanity Check
2915 ------------------------------------------------------------------------*/
2916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2917 {
2918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2919 "WDI API call before module is initialized - Fail request");
2920
2921 return WDI_STATUS_E_NOT_ALLOWED;
2922 }
2923
2924 /*------------------------------------------------------------------------
2925 Fill in Event data and post to the Main FSM
2926 ------------------------------------------------------------------------*/
2927 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2928 wdiEventData.pEventData = pwdiSetTxPowerParams;
2929 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2930 wdiEventData.pCBfnc = wdiReqStatusCb;
2931 wdiEventData.pUserData = pUserData;
2932
2933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2934}
2935
Jeff Johnson295189b2012-06-20 16:38:30 -07002936#ifdef FEATURE_WLAN_CCX
2937WDI_Status
2938WDI_TSMStatsReq
2939(
2940 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2941 WDI_TsmRspCb wdiReqStatusCb,
2942 void* pUserData
2943)
2944{
2945 WDI_EventInfoType wdiEventData;
2946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 /*------------------------------------------------------------------------
2948 Sanity Check
2949 ------------------------------------------------------------------------*/
2950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2951 {
2952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2953 "WDI API call before module is initialized - Fail request");
2954
2955 return WDI_STATUS_E_NOT_ALLOWED;
2956 }
2957
2958 /*------------------------------------------------------------------------
2959 Fill in Event data and post to the Main FSM
2960 ------------------------------------------------------------------------*/
2961 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2962 wdiEventData.pEventData = pwdiTsmReqParams;
2963 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2964 wdiEventData.pCBfnc = wdiReqStatusCb;
2965 wdiEventData.pUserData = pUserData;
2966
2967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2968
2969}
2970#endif
2971
2972/*========================================================================
2973
2974 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002975
Jeff Johnson295189b2012-06-20 16:38:30 -07002976==========================================================================*/
2977
2978/**
2979 @brief WDI_AddTSReq will be called when the upper MAC to inform
2980 the device of a successful add TSpec negotiation. HW
2981 needs to receive the TSpec Info from the UMAC in order
2982 to configure properly the QoS data traffic. Upon the
2983 call of this API the WLAN DAL will pack and send a HAL
2984 Add TS request message to the lower RIVA sub-system if
2985 DAL is in state STARTED.
2986
2987 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002988 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002989
2990 WDI_PostAssocReq must have been called.
2991
2992 @param wdiAddTsReqParams: the add TS parameters as specified by
2993 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002994
Jeff Johnson295189b2012-06-20 16:38:30 -07002995 wdiAddTsRspCb: callback for passing back the response of
2996 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002997
Jeff Johnson295189b2012-06-20 16:38:30 -07002998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002999 callback
3000
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 @see WDI_PostAssocReq
3002 @return Result of the function call
3003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003005WDI_AddTSReq
3006(
3007 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3008 WDI_AddTsRspCb wdiAddTsRspCb,
3009 void* pUserData
3010)
3011{
3012 WDI_EventInfoType wdiEventData;
3013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3014
3015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 ------------------------------------------------------------------------*/
3018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3019 {
3020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3021 "WDI API call before module is initialized - Fail request");
3022
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003024 }
3025
3026 /*------------------------------------------------------------------------
3027 Fill in Event data and post to the Main FSM
3028 ------------------------------------------------------------------------*/
3029 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 wdiEventData.pEventData = pwdiAddTsReqParams;
3031 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3032 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 wdiEventData.pUserData = pUserData;
3034
3035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3036
3037}/*WDI_AddTSReq*/
3038
3039
3040
3041/**
3042 @brief WDI_DelTSReq will be called when the upper MAC has ended
3043 admission on a specific AC. This is to inform HW that
3044 QoS traffic parameters must be rest. Upon the call of
3045 this API the WLAN DAL will pack and send a HAL Del TS
3046 request message to the lower RIVA sub-system if DAL is
3047 in state STARTED.
3048
3049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003051
3052 WDI_AddTSReq must have been called.
3053
3054 @param wdiDelTsReqParams: the del TS parameters as specified by
3055 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003056
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiDelTsRspCb: callback for passing back the response of
3058 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 callback
3062
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 @see WDI_AddTSReq
3064 @return Result of the function call
3065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003067WDI_DelTSReq
3068(
3069 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3070 WDI_DelTsRspCb wdiDelTsRspCb,
3071 void* pUserData
3072)
3073{
3074 WDI_EventInfoType wdiEventData;
3075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3076
3077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 ------------------------------------------------------------------------*/
3080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3081 {
3082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3083 "WDI API call before module is initialized - Fail request");
3084
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 }
3087
3088 /*------------------------------------------------------------------------
3089 Fill in Event data and post to the Main FSM
3090 ------------------------------------------------------------------------*/
3091 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 wdiEventData.pEventData = pwdiDelTsReqParams;
3093 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3094 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 wdiEventData.pUserData = pUserData;
3096
3097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3098
3099}/*WDI_DelTSReq*/
3100
3101
3102
3103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003104 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003105 wishes to update the EDCA parameters used by HW for QoS
3106 data traffic. Upon the call of this API the WLAN DAL
3107 will pack and send a HAL Update EDCA Params request
3108 message to the lower RIVA sub-system if DAL is in state
3109 STARTED.
3110
3111 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003113
3114 WDI_PostAssocReq must have been called.
3115
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003118
Jeff Johnson295189b2012-06-20 16:38:30 -07003119 wdiUpdateEDCAParamsRspCb: callback for passing back the
3120 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003121
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 callback
3124
Jeff Johnson295189b2012-06-20 16:38:30 -07003125 @see WDI_PostAssocReq
3126 @return Result of the function call
3127*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003129WDI_UpdateEDCAParams
3130(
3131 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3132 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3133 void* pUserData
3134)
3135{
3136 WDI_EventInfoType wdiEventData;
3137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3138
3139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 ------------------------------------------------------------------------*/
3142 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3143 {
3144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3145 "WDI API call before module is initialized - Fail request");
3146
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 }
3149
3150 /*------------------------------------------------------------------------
3151 Fill in Event data and post to the Main FSM
3152 ------------------------------------------------------------------------*/
3153 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003154 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3155 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3156 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 wdiEventData.pUserData = pUserData;
3158
3159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3160
3161}/*WDI_UpdateEDCAParams*/
3162
3163
3164/**
3165 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3166 successfully a BA session and needs to notify the HW for
3167 the appropriate settings to take place. Upon the call of
3168 this API the WLAN DAL will pack and send a HAL Add BA
3169 request message to the lower RIVA sub-system if DAL is
3170 in state STARTED.
3171
3172 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003174
3175 WDI_PostAssocReq must have been called.
3176
3177 @param wdiAddBAReqParams: the add BA parameters as specified by
3178 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003179
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 wdiAddBARspCb: callback for passing back the response of
3181 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003182
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003184 callback
3185
Jeff Johnson295189b2012-06-20 16:38:30 -07003186 @see WDI_PostAssocReq
3187 @return Result of the function call
3188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003190WDI_AddBASessionReq
3191(
3192 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3193 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3194 void* pUserData
3195)
3196{
3197 WDI_EventInfoType wdiEventData;
3198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3199
3200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 ------------------------------------------------------------------------*/
3203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3204 {
3205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3206 "WDI API call before module is initialized - Fail request");
3207
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 }
3210
3211 /*------------------------------------------------------------------------
3212 Fill in Event data and post to the Main FSM
3213 ------------------------------------------------------------------------*/
3214 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3216 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3217 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 wdiEventData.pUserData = pUserData;
3219
3220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3221
3222}/*WDI_AddBASessionReq*/
3223
3224/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 inform HW that it has deleted a previously created BA
3227 session. Upon the call of this API the WLAN DAL will
3228 pack and send a HAL Del BA request message to the lower
3229 RIVA sub-system if DAL is in state STARTED.
3230
3231 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003233
3234 WDI_AddBAReq must have been called.
3235
3236 @param wdiDelBAReqParams: the del BA parameters as specified by
3237 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003238
Jeff Johnson295189b2012-06-20 16:38:30 -07003239 wdiDelBARspCb: callback for passing back the response of
3240 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003241
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003243 callback
3244
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 @see WDI_AddBAReq
3246 @return Result of the function call
3247*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003249WDI_DelBAReq
3250(
3251 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3252 WDI_DelBARspCb wdiDelBARspCb,
3253 void* pUserData
3254)
3255{
3256 WDI_EventInfoType wdiEventData;
3257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3258
3259 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003260 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003261 ------------------------------------------------------------------------*/
3262 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3263 {
3264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3265 "WDI API call before module is initialized - Fail request");
3266
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 }
3269
3270 /*------------------------------------------------------------------------
3271 Fill in Event data and post to the Main FSM
3272 ------------------------------------------------------------------------*/
3273 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003274 wdiEventData.pEventData = pwdiDelBAReqParams;
3275 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3276 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003277 wdiEventData.pUserData = pUserData;
3278
3279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3280
3281}/*WDI_DelBAReq*/
3282
Jeff Johnsone7245742012-09-05 17:12:55 -07003283/*========================================================================
3284
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003286
Jeff Johnson295189b2012-06-20 16:38:30 -07003287==========================================================================*/
3288
3289/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 wants to set the power save related configurations of
3292 the WLAN Device. Upon the call of this API the WLAN DAL
3293 will pack and send a HAL Update CFG request message to
3294 the lower RIVA sub-system if DAL is in state STARTED.
3295
3296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003298
3299 WDI_Start must have been called.
3300
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003302 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003303
Jeff Johnson295189b2012-06-20 16:38:30 -07003304 wdiSetPwrSaveCfgCb: callback for passing back the
3305 response of the set power save cfg operation received
3306 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003307
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 callback
3310
Jeff Johnson295189b2012-06-20 16:38:30 -07003311 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003312 @return Result of the function call
3313*/
3314WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003315WDI_SetPwrSaveCfgReq
3316(
3317 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3318 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3319 void* pUserData
3320)
3321{
3322 WDI_EventInfoType wdiEventData;
3323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3324
3325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003326 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003327 ------------------------------------------------------------------------*/
3328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3329 {
3330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3331 "WDI API call before module is initialized - Fail request");
3332
Jeff Johnsone7245742012-09-05 17:12:55 -07003333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 }
3335
3336 /*------------------------------------------------------------------------
3337 Fill in Event data and post to the Main FSM
3338 ------------------------------------------------------------------------*/
3339 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 wdiEventData.pEventData = pwdiPowerSaveCfg;
3341 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3342 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003343 wdiEventData.pUserData = pUserData;
3344
3345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3346
3347}/*WDI_SetPwrSaveCfgReq*/
3348
3349/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003350 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 request the device to get into IMPS power state. Upon
3352 the call of this API the WLAN DAL will send a HAL Enter
3353 IMPS request message to the lower RIVA sub-system if DAL
3354 is in state STARTED.
3355
3356 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003357 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003358
Jeff Johnsone7245742012-09-05 17:12:55 -07003359
3360 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 response of the Enter IMPS operation received from the
3362 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003363
Jeff Johnson295189b2012-06-20 16:38:30 -07003364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003365 callback
3366
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 @see WDI_Start
3368 @return Result of the function call
3369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003371WDI_EnterImpsReq
3372(
3373 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3374 void* pUserData
3375)
3376{
3377 WDI_EventInfoType wdiEventData;
3378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3379
3380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003382 ------------------------------------------------------------------------*/
3383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3384 {
3385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3386 "WDI API call before module is initialized - Fail request");
3387
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003389 }
3390
3391 /*------------------------------------------------------------------------
3392 Fill in Event data and post to the Main FSM
3393 ------------------------------------------------------------------------*/
3394 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 wdiEventData.pEventData = NULL;
3396 wdiEventData.uEventDataSize = 0;
3397 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 wdiEventData.pUserData = pUserData;
3399
3400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3401
3402}/*WDI_EnterImpsReq*/
3403
3404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 request the device to get out of IMPS power state. Upon
3407 the call of this API the WLAN DAL will send a HAL Exit
3408 IMPS request message to the lower RIVA sub-system if DAL
3409 is in state STARTED.
3410
3411 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003413
Jeff Johnson295189b2012-06-20 16:38:30 -07003414
Jeff Johnsone7245742012-09-05 17:12:55 -07003415
3416 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 callback
3421
Jeff Johnson295189b2012-06-20 16:38:30 -07003422 @see WDI_Start
3423 @return Result of the function call
3424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003426WDI_ExitImpsReq
3427(
3428 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3429 void* pUserData
3430)
3431{
3432 WDI_EventInfoType wdiEventData;
3433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3434
3435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 ------------------------------------------------------------------------*/
3438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3439 {
3440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3441 "WDI API call before module is initialized - Fail request");
3442
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 }
3445
3446 /*------------------------------------------------------------------------
3447 Fill in Event data and post to the Main FSM
3448 ------------------------------------------------------------------------*/
3449 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 wdiEventData.pEventData = NULL;
3451 wdiEventData.uEventDataSize = 0;
3452 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 wdiEventData.pUserData = pUserData;
3454
3455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3456
3457}/*WDI_ExitImpsReq*/
3458
3459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003461 request the device to get into BMPS power state. Upon
3462 the call of this API the WLAN DAL will pack and send a
3463 HAL Enter BMPS request message to the lower RIVA
3464 sub-system if DAL is in state STARTED.
3465
3466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003468
3469 WDI_PostAssocReq must have been called.
3470
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003473
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 wdiEnterBmpsRspCb: callback for passing back the
3475 response of the Enter BMPS operation received from the
3476 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003477
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003479 callback
3480
Jeff Johnson295189b2012-06-20 16:38:30 -07003481 @see WDI_PostAssocReq
3482 @return Result of the function call
3483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003485WDI_EnterBmpsReq
3486(
3487 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3488 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3489 void* pUserData
3490)
3491{
3492 WDI_EventInfoType wdiEventData;
3493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3494
3495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 ------------------------------------------------------------------------*/
3498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3499 {
3500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3501 "WDI API call before module is initialized - Fail request");
3502
Jeff Johnsone7245742012-09-05 17:12:55 -07003503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 }
3505
3506 /*------------------------------------------------------------------------
3507 Fill in Event data and post to the Main FSM
3508 ------------------------------------------------------------------------*/
3509 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3511 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3512 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 wdiEventData.pUserData = pUserData;
3514
3515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3516
3517}/*WDI_EnterBmpsReq*/
3518
3519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003521 request the device to get out of BMPS power state. Upon
3522 the call of this API the WLAN DAL will pack and send a
3523 HAL Exit BMPS request message to the lower RIVA
3524 sub-system if DAL is in state STARTED.
3525
3526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003528
3529 WDI_PostAssocReq must have been called.
3530
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003533
Jeff Johnson295189b2012-06-20 16:38:30 -07003534 wdiExitBmpsRspCb: callback for passing back the response
3535 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003536
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003538 callback
3539
Jeff Johnson295189b2012-06-20 16:38:30 -07003540 @see WDI_PostAssocReq
3541 @return Result of the function call
3542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003544WDI_ExitBmpsReq
3545(
3546 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3547 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3548 void* pUserData
3549)
3550{
3551 WDI_EventInfoType wdiEventData;
3552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3553
3554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003556 ------------------------------------------------------------------------*/
3557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3558 {
3559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3560 "WDI API call before module is initialized - Fail request");
3561
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 }
3564
3565 /*------------------------------------------------------------------------
3566 Fill in Event data and post to the Main FSM
3567 ------------------------------------------------------------------------*/
3568 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3570 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3571 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 wdiEventData.pUserData = pUserData;
3573
3574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3575
3576}/*WDI_ExitBmpsReq*/
3577
3578/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 request the device to get into UAPSD power state. Upon
3581 the call of this API the WLAN DAL will pack and send a
3582 HAL Enter UAPSD request message to the lower RIVA
3583 sub-system if DAL is in state STARTED.
3584
3585 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003587
3588 WDI_PostAssocReq must have been called.
3589 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003590
3591 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003593
Jeff Johnson295189b2012-06-20 16:38:30 -07003594 wdiEnterUapsdRspCb: callback for passing back the
3595 response of the Enter UAPSD operation received from the
3596 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003599 callback
3600
Jeff Johnson295189b2012-06-20 16:38:30 -07003601 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3602 @return Result of the function call
3603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003605WDI_EnterUapsdReq
3606(
3607 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3608 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3609 void* pUserData
3610)
3611{
3612 WDI_EventInfoType wdiEventData;
3613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3614
3615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003617 ------------------------------------------------------------------------*/
3618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3619 {
3620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3621 "WDI API call before module is initialized - Fail request");
3622
Jeff Johnsone7245742012-09-05 17:12:55 -07003623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 }
3625
3626 /*------------------------------------------------------------------------
3627 Fill in Event data and post to the Main FSM
3628 ------------------------------------------------------------------------*/
3629 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3631 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3632 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003633 wdiEventData.pUserData = pUserData;
3634
3635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3636
3637}/*WDI_EnterUapsdReq*/
3638
3639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003640 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 request the device to get out of UAPSD power state. Upon
3642 the call of this API the WLAN DAL will send a HAL Exit
3643 UAPSD request message to the lower RIVA sub-system if
3644 DAL is in state STARTED.
3645
3646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003648
3649 WDI_PostAssocReq must have been called.
3650
Jeff Johnsone7245742012-09-05 17:12:55 -07003651 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 response of the Exit UAPSD operation received from the
3653 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 callback
3657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 @see WDI_PostAssocReq
3659 @return Result of the function call
3660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003662WDI_ExitUapsdReq
3663(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003664 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3666 void* pUserData
3667)
3668{
3669 WDI_EventInfoType wdiEventData;
3670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3671
3672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 ------------------------------------------------------------------------*/
3675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3676 {
3677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3678 "WDI API call before module is initialized - Fail request");
3679
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 }
3682
3683 /*------------------------------------------------------------------------
3684 Fill in Event data and post to the Main FSM
3685 ------------------------------------------------------------------------*/
3686 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003687 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3688 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 wdiEventData.pUserData = pUserData;
3691
3692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3693
3694}/*WDI_ExitUapsdReq*/
3695
3696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003697 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 MAC wants to set the UAPSD related configurations
3699 of an associated STA (while acting as an AP) to the WLAN
3700 Device. Upon the call of this API the WLAN DAL will pack
3701 and send a HAL Update UAPSD params request message to
3702 the lower RIVA sub-system if DAL is in state STARTED.
3703
3704 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003706
3707 WDI_ConfigBSSReq must have been called.
3708
Jeff Johnsone7245742012-09-05 17:12:55 -07003709 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003711
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 wdiUpdateUapsdParamsCb: callback for passing back the
3713 response of the update UAPSD params operation received
3714 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003715
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 callback
3718
Jeff Johnson295189b2012-06-20 16:38:30 -07003719 @see WDI_ConfigBSSReq
3720 @return Result of the function call
3721*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003722WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003723WDI_UpdateUapsdParamsReq
3724(
3725 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3726 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3727 void* pUserData
3728)
3729{
3730 WDI_EventInfoType wdiEventData;
3731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3732
3733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003734 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003735 ------------------------------------------------------------------------*/
3736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3737 {
3738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3739 "WDI API call before module is initialized - Fail request");
3740
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003742 }
3743
3744 /*------------------------------------------------------------------------
3745 Fill in Event data and post to the Main FSM
3746 ------------------------------------------------------------------------*/
3747 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003749 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003751 wdiEventData.pUserData = pUserData;
3752
3753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3754
3755}/*WDI_UpdateUapsdParamsReq*/
3756
3757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 MAC wants to set the UAPSD related configurations before
3760 requesting for enter UAPSD power state to the WLAN
3761 Device. Upon the call of this API the WLAN DAL will pack
3762 and send a HAL Set UAPSD params request message to
3763 the lower RIVA sub-system if DAL is in state STARTED.
3764
3765 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003767
3768 WDI_PostAssocReq must have been called.
3769
3770 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3771 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 wdiSetUapsdAcParamsCb: callback for passing back the
3774 response of the set UAPSD params operation received from
3775 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 callback
3779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 @see WDI_PostAssocReq
3781 @return Result of the function call
3782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003784WDI_SetUapsdAcParamsReq
3785(
3786 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3787 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3788 void* pUserData
3789)
3790{
3791 WDI_EventInfoType wdiEventData;
3792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3793
3794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 ------------------------------------------------------------------------*/
3797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3798 {
3799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3800 "WDI API call before module is initialized - Fail request");
3801
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 }
3804
3805 /*------------------------------------------------------------------------
3806 Fill in Event data and post to the Main FSM
3807 ------------------------------------------------------------------------*/
3808 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 wdiEventData.pEventData = pwdiUapsdInfo;
3810 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3811 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 wdiEventData.pUserData = pUserData;
3813
3814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3815
3816}/*WDI_SetUapsdAcParamsReq*/
3817
3818/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 MAC wants to set/reset the RXP filters for received pkts
3821 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3822 and send a HAL configure RXP filter request message to
3823 the lower RIVA sub-system.
3824
3825 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003827
Jeff Johnsone7245742012-09-05 17:12:55 -07003828
3829 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 filter as specified by the Device
3831 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 wdiConfigureRxpFilterCb: callback for passing back the
3834 response of the configure RXP filter operation received
3835 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003836
Jeff Johnson295189b2012-06-20 16:38:30 -07003837 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 callback
3839
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 @return Result of the function call
3841*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003842WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003843WDI_ConfigureRxpFilterReq
3844(
3845 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3846 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3847 void* pUserData
3848)
3849{
3850 WDI_EventInfoType wdiEventData;
3851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3852
3853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 ------------------------------------------------------------------------*/
3856 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3857 {
3858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3859 "WDI API call before module is initialized - Fail request");
3860
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 }
3863
3864 /*------------------------------------------------------------------------
3865 Fill in Event data and post to the Main FSM
3866 ------------------------------------------------------------------------*/
3867 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3869 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3870 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 wdiEventData.pUserData = pUserData;
3872
3873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3874}/*WDI_ConfigureRxpFilterReq*/
3875
3876/**
3877 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3878 wants to set the beacon filters while in power save.
3879 Upon the call of this API the WLAN DAL will pack and
3880 send a Beacon filter request message to the
3881 lower RIVA sub-system.
3882
3883 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003885
Jeff Johnsone7245742012-09-05 17:12:55 -07003886
3887 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 filter as specified by the Device
3889 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003890
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 wdiBeaconFilterCb: callback for passing back the
3892 response of the set beacon filter operation received
3893 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003894
Jeff Johnson295189b2012-06-20 16:38:30 -07003895 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003896 callback
3897
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 @return Result of the function call
3899*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003900WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003901WDI_SetBeaconFilterReq
3902(
3903 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3904 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3905 void* pUserData
3906)
3907{
3908 WDI_EventInfoType wdiEventData;
3909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3910
3911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003913 ------------------------------------------------------------------------*/
3914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3915 {
3916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3917 "WDI API call before module is initialized - Fail request");
3918
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 }
3921
3922 /*------------------------------------------------------------------------
3923 Fill in Event data and post to the Main FSM
3924 ------------------------------------------------------------------------*/
3925 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003927 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 wdiEventData.pUserData = pUserData;
3930
3931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3932}/*WDI_SetBeaconFilterReq*/
3933
3934/**
3935 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3936 wants to remove the beacon filter for particular IE
3937 while in power save. Upon the call of this API the WLAN
3938 DAL will pack and send a remove Beacon filter request
3939 message to the lower RIVA sub-system.
3940
3941 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003943
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
3945 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 filter as specified by the Device
3947 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 wdiBeaconFilterCb: callback for passing back the
3950 response of the remove beacon filter operation received
3951 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003954 callback
3955
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 @return Result of the function call
3957*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003958WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003959WDI_RemBeaconFilterReq
3960(
3961 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3962 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3963 void* pUserData
3964)
3965{
3966 WDI_EventInfoType wdiEventData;
3967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3968
3969 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 ------------------------------------------------------------------------*/
3972 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3973 {
3974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3975 "WDI API call before module is initialized - Fail request");
3976
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 }
3979
3980 /*------------------------------------------------------------------------
3981 Fill in Event data and post to the Main FSM
3982 ------------------------------------------------------------------------*/
3983 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003985 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003986 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 wdiEventData.pUserData = pUserData;
3988
3989 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3990}/*WDI_RemBeaconFilterReq*/
3991
3992/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 MAC wants to set the RSSI thresholds related
3995 configurations while in power save. Upon the call of
3996 this API the WLAN DAL will pack and send a HAL Set RSSI
3997 thresholds request message to the lower RIVA
3998 sub-system if DAL is in state STARTED.
3999
4000 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004002
4003 WDI_PostAssocReq must have been called.
4004
4005 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4006 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004007
Jeff Johnson295189b2012-06-20 16:38:30 -07004008 wdiSetUapsdAcParamsCb: callback for passing back the
4009 response of the set UAPSD params operation received from
4010 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004011
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 callback
4014
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 @see WDI_PostAssocReq
4016 @return Result of the function call
4017*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004018WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004019WDI_SetRSSIThresholdsReq
4020(
4021 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4022 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4023 void* pUserData
4024)
4025{
4026 WDI_EventInfoType wdiEventData;
4027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4028
4029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 ------------------------------------------------------------------------*/
4032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4033 {
4034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4035 "WDI API call before module is initialized - Fail request");
4036
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 }
4039
4040 /*------------------------------------------------------------------------
4041 Fill in Event data and post to the Main FSM
4042 ------------------------------------------------------------------------*/
4043 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004045 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004046 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004047 wdiEventData.pUserData = pUserData;
4048
4049 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4050}/* WDI_SetRSSIThresholdsReq*/
4051
4052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 wants to set the filter to minimize unnecessary host
4055 wakeup due to broadcast traffic while in power save.
4056 Upon the call of this API the WLAN DAL will pack and
4057 send a HAL host offload request message to the
4058 lower RIVA sub-system if DAL is in state STARTED.
4059
4060 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004062
4063 WDI_PostAssocReq must have been called.
4064
Jeff Johnsone7245742012-09-05 17:12:55 -07004065 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004067
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 wdiHostOffloadCb: callback for passing back the response
4069 of the host offload operation received from the
4070 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004071
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004073 callback
4074
Jeff Johnson295189b2012-06-20 16:38:30 -07004075 @see WDI_PostAssocReq
4076 @return Result of the function call
4077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004079WDI_HostOffloadReq
4080(
4081 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4082 WDI_HostOffloadCb wdiHostOffloadCb,
4083 void* pUserData
4084)
4085{
4086 WDI_EventInfoType wdiEventData;
4087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4088
4089 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004090 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004091 ------------------------------------------------------------------------*/
4092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4093 {
4094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4095 "WDI API call before module is initialized - Fail request");
4096
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 }
4099
4100 /*------------------------------------------------------------------------
4101 Fill in Event data and post to the Main FSM
4102 ------------------------------------------------------------------------*/
4103 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004105 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004106 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 wdiEventData.pUserData = pUserData;
4108
4109 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4110}/*WDI_HostOffloadReq*/
4111
4112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 @brief WDI_KeepAliveReq will be called when the upper MAC
4114 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004115 and minimize unnecessary host wakeups due to while in power save.
4116 Upon the call of this API the WLAN DAL will pack and
4117 send a HAL Keep Alive request message to the
4118 lower RIVA sub-system if DAL is in state STARTED.
4119
4120 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004122
4123 WDI_PostAssocReq must have been called.
4124
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 wdiKeepAliveCb: callback for passing back the response
4129 of the Keep Alive operation received from the
4130 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004133 callback
4134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 @see WDI_PostAssocReq
4136 @return Result of the function call
4137*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004139WDI_KeepAliveReq
4140(
4141 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4142 WDI_KeepAliveCb wdiKeepAliveCb,
4143 void* pUserData
4144)
4145{
4146 WDI_EventInfoType wdiEventData;
4147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4148
4149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004151 ------------------------------------------------------------------------*/
4152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4153 {
4154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4155 "WDI_KeepAliveReq: WDI API call before module "
4156 "is initialized - Fail request");
4157
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 }
4160
4161 /*------------------------------------------------------------------------
4162 Fill in Event data and post to the Main FSM
4163 ------------------------------------------------------------------------*/
4164 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004165 wdiEventData.pEventData = pwdiKeepAliveParams;
4166 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4167 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 wdiEventData.pUserData = pUserData;
4169
4170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4171}/*WDI_KeepAliveReq*/
4172
4173/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 wants to set the Wowl Bcast ptrn to minimize unnecessary
4176 host wakeup due to broadcast traffic while in power
4177 save. Upon the call of this API the WLAN DAL will pack
4178 and send a HAL Wowl Bcast ptrn request message to the
4179 lower RIVA sub-system if DAL is in state STARTED.
4180
4181 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004183
4184 WDI_PostAssocReq must have been called.
4185
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 wdiWowlAddBcPtrnCb: callback for passing back the
4190 response of the add Wowl bcast ptrn operation received
4191 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004192
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 callback
4195
Jeff Johnson295189b2012-06-20 16:38:30 -07004196 @see WDI_PostAssocReq
4197 @return Result of the function call
4198*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004199WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004200WDI_WowlAddBcPtrnReq
4201(
4202 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4203 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4204 void* pUserData
4205)
4206{
4207 WDI_EventInfoType wdiEventData;
4208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4209
4210 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004211 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004212 ------------------------------------------------------------------------*/
4213 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4214 {
4215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4216 "WDI API call before module is initialized - Fail request");
4217
Jeff Johnsone7245742012-09-05 17:12:55 -07004218 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004219 }
4220
4221 /*------------------------------------------------------------------------
4222 Fill in Event data and post to the Main FSM
4223 ------------------------------------------------------------------------*/
4224 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004226 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004228 wdiEventData.pUserData = pUserData;
4229
4230 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4231}/*WDI_WowlAddBcPtrnReq*/
4232
4233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 wants to clear the Wowl Bcast ptrn. Upon the call of
4236 this API the WLAN DAL will pack and send a HAL delete
4237 Wowl Bcast ptrn request message to the lower RIVA
4238 sub-system if DAL is in state STARTED.
4239
4240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004242
4243 WDI_WowlAddBcPtrnReq must have been called.
4244
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004247
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 wdiWowlDelBcPtrnCb: callback for passing back the
4249 response of the del Wowl bcast ptrn operation received
4250 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004251
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004253 callback
4254
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 @see WDI_WowlAddBcPtrnReq
4256 @return Result of the function call
4257*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004258WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004259WDI_WowlDelBcPtrnReq
4260(
4261 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4262 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4263 void* pUserData
4264)
4265{
4266 WDI_EventInfoType wdiEventData;
4267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4268
4269 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004270 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 ------------------------------------------------------------------------*/
4272 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4273 {
4274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4275 "WDI API call before module is initialized - Fail request");
4276
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004278 }
4279
4280 /*------------------------------------------------------------------------
4281 Fill in Event data and post to the Main FSM
4282 ------------------------------------------------------------------------*/
4283 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004285 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 wdiEventData.pUserData = pUserData;
4288
4289 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4290}/*WDI_WowlDelBcPtrnReq*/
4291
4292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wants to enter the Wowl state to minimize unnecessary
4295 host wakeup while in power save. Upon the call of this
4296 API the WLAN DAL will pack and send a HAL Wowl enter
4297 request message to the lower RIVA sub-system if DAL is
4298 in state STARTED.
4299
4300 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004301 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004302
4303 WDI_PostAssocReq must have been called.
4304
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004307
Jeff Johnson295189b2012-06-20 16:38:30 -07004308 wdiWowlEnterReqCb: callback for passing back the
4309 response of the enter Wowl operation received from the
4310 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004311
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004313 callback
4314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 @see WDI_PostAssocReq
4316 @return Result of the function call
4317*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004319WDI_WowlEnterReq
4320(
4321 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4322 WDI_WowlEnterReqCb wdiWowlEnterCb,
4323 void* pUserData
4324)
4325{
4326 WDI_EventInfoType wdiEventData;
4327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4328
4329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004331 ------------------------------------------------------------------------*/
4332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4333 {
4334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4335 "WDI API call before module is initialized - Fail request");
4336
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 }
4339
4340 /*------------------------------------------------------------------------
4341 Fill in Event data and post to the Main FSM
4342 ------------------------------------------------------------------------*/
4343 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004345 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004346 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004347 wdiEventData.pUserData = pUserData;
4348
4349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4350}/*WDI_WowlEnterReq*/
4351
4352/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 wants to exit the Wowl state. Upon the call of this API
4355 the WLAN DAL will pack and send a HAL Wowl exit request
4356 message to the lower RIVA sub-system if DAL is in state
4357 STARTED.
4358
4359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004361
4362 WDI_WowlEnterReq must have been called.
4363
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004365 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004366
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 wdiWowlExitReqCb: callback for passing back the response
4368 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004369
Jeff Johnson295189b2012-06-20 16:38:30 -07004370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004371 callback
4372
Jeff Johnson295189b2012-06-20 16:38:30 -07004373 @see WDI_WowlEnterReq
4374 @return Result of the function call
4375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004377WDI_WowlExitReq
4378(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004379 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 WDI_WowlExitReqCb wdiWowlExitCb,
4381 void* pUserData
4382)
4383{
4384 WDI_EventInfoType wdiEventData;
4385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4386
4387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 ------------------------------------------------------------------------*/
4390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4391 {
4392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4393 "WDI API call before module is initialized - Fail request");
4394
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 }
4397
4398 /*------------------------------------------------------------------------
4399 Fill in Event data and post to the Main FSM
4400 ------------------------------------------------------------------------*/
4401 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004402 wdiEventData.pEventData = pwdiWowlExitParams;
4403 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 wdiEventData.pUserData = pUserData;
4406
4407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4408}/*WDI_WowlExitReq*/
4409
4410/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004411 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 the upper MAC wants to dynamically adjusts the listen
4413 interval based on the WLAN/MSM activity. Upon the call
4414 of this API the WLAN DAL will pack and send a HAL
4415 configure Apps Cpu Wakeup State request message to the
4416 lower RIVA sub-system.
4417
4418 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004420
Jeff Johnsone7245742012-09-05 17:12:55 -07004421
4422 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 Apps Cpu Wakeup State as specified by the
4424 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004425
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4427 back the response of the configure Apps Cpu Wakeup State
4428 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004429
Jeff Johnson295189b2012-06-20 16:38:30 -07004430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 callback
4432
Jeff Johnson295189b2012-06-20 16:38:30 -07004433 @return Result of the function call
4434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004436WDI_ConfigureAppsCpuWakeupStateReq
4437(
4438 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4439 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4440 void* pUserData
4441)
4442{
4443 WDI_EventInfoType wdiEventData;
4444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4445
4446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 ------------------------------------------------------------------------*/
4449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4450 {
4451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4452 "WDI API call before module is initialized - Fail request");
4453
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 }
4456
4457 /*------------------------------------------------------------------------
4458 Fill in Event data and post to the Main FSM
4459 ------------------------------------------------------------------------*/
4460 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4462 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4463 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 wdiEventData.pUserData = pUserData;
4465
4466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4467}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004469 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 to to perform a flush operation on a given AC. Upon the
4471 call of this API the WLAN DAL will pack and send a HAL
4472 Flush AC request message to the lower RIVA sub-system if
4473 DAL is in state STARTED.
4474
4475 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004477
4478 WDI_AddBAReq must have been called.
4479
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004482
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 wdiFlushAcRspCb: callback for passing back the response
4484 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004485
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 callback
4488
Jeff Johnson295189b2012-06-20 16:38:30 -07004489 @see WDI_AddBAReq
4490 @return Result of the function call
4491*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004492WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004493WDI_FlushAcReq
4494(
4495 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4496 WDI_FlushAcRspCb wdiFlushAcRspCb,
4497 void* pUserData
4498)
4499{
4500 WDI_EventInfoType wdiEventData;
4501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4502
4503 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004504 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 ------------------------------------------------------------------------*/
4506 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4507 {
4508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4509 "WDI API call before module is initialized - Fail request");
4510
Jeff Johnsone7245742012-09-05 17:12:55 -07004511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 }
4513
4514 /*------------------------------------------------------------------------
4515 Fill in Event data and post to the Main FSM
4516 ------------------------------------------------------------------------*/
4517 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 wdiEventData.pEventData = pwdiFlushAcReqParams;
4519 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4520 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 wdiEventData.pUserData = pUserData;
4522
4523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4524
4525}/*WDI_FlushAcReq*/
4526
4527/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004528 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004529 wants to notify the lower mac on a BT AMP event. This is
4530 to inform BTC-SLM that some BT AMP event occurred. Upon
4531 the call of this API the WLAN DAL will pack and send a
4532 HAL BT AMP event request message to the lower RIVA
4533 sub-system if DAL is in state STARTED.
4534
4535 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004537
Jeff Johnsone7245742012-09-05 17:12:55 -07004538
4539 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004541
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 wdiBtAmpEventRspCb: callback for passing back the
4543 response of the BT AMP event operation received from the
4544 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004545
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004547 callback
4548
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 @return Result of the function call
4550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004552WDI_BtAmpEventReq
4553(
4554 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4555 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4556 void* pUserData
4557)
4558{
4559 WDI_EventInfoType wdiEventData;
4560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4561
4562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 ------------------------------------------------------------------------*/
4565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4566 {
4567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4568 "WDI API call before module is initialized - Fail request");
4569
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 }
4572
4573 /*------------------------------------------------------------------------
4574 Fill in Event data and post to the Main FSM
4575 ------------------------------------------------------------------------*/
4576 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4578 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4579 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 wdiEventData.pUserData = pUserData;
4581
4582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4583
4584}/*WDI_BtAmpEventReq*/
4585
Jeff Johnsone7245742012-09-05 17:12:55 -07004586#ifdef FEATURE_OEM_DATA_SUPPORT
4587/**
4588 @brief WDI_Start Oem Data Req will be called when the upper MAC
4589 wants to notify the lower mac on a oem data Req event.Upon
4590 the call of this API the WLAN DAL will pack and send a
4591 HAL OEM Data Req event request message to the lower RIVA
4592 sub-system if DAL is in state STARTED.
4593
4594 In state BUSY this request will be queued. Request won't
4595 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004596
4597
Jeff Johnsone7245742012-09-05 17:12:55 -07004598
4599 @param pwdiOemDataReqParams: the Oem Data Req as
4600 specified by the Device Interface
4601
4602 wdiStartOemDataRspCb: callback for passing back the
4603 response of the Oem Data Req received from the
4604 device
4605
4606 pUserData: user data will be passed back with the
4607 callback
4608
4609 @return Result of the function call
4610*/
4611WDI_Status
4612WDI_StartOemDataReq
4613(
4614 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4615 WDI_oemDataRspCb wdiOemDataRspCb,
4616 void* pUserData
4617)
4618{
4619 WDI_EventInfoType wdiEventData;
4620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4621
4622 /*------------------------------------------------------------------------
4623 Sanity Check
4624 ------------------------------------------------------------------------*/
4625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4626 {
4627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4628 "WDI API call before module is initialized - Fail request");
4629
4630 return WDI_STATUS_E_NOT_ALLOWED;
4631 }
4632
4633 /*------------------------------------------------------------------------
4634 Fill in Event data and post to the Main FSM
4635 ------------------------------------------------------------------------*/
4636 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4637 wdiEventData.pEventData = pwdiOemDataReqParams;
4638 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4639 wdiEventData.pCBfnc = wdiOemDataRspCb;
4640 wdiEventData.pUserData = pUserData;
4641
4642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4643
4644
4645}
4646
4647#endif
4648
4649
4650/*========================================================================
4651
Jeff Johnson295189b2012-06-20 16:38:30 -07004652 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004653
Jeff Johnson295189b2012-06-20 16:38:30 -07004654==========================================================================*/
4655/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 the WLAN HW to change the current channel of operation.
4658 Upon the call of this API the WLAN DAL will pack and
4659 send a HAL Start request message to the lower RIVA
4660 sub-system if DAL is in state STARTED.
4661
4662 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004664
4665 WDI_Start must have been called.
4666
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004669
Jeff Johnson295189b2012-06-20 16:38:30 -07004670 wdiSwitchChRspCb: callback for passing back the response
4671 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004672
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 callback
4675
Jeff Johnson295189b2012-06-20 16:38:30 -07004676 @see WDI_Start
4677 @return Result of the function call
4678*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004680WDI_SwitchChReq
4681(
4682 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4683 WDI_SwitchChRspCb wdiSwitchChRspCb,
4684 void* pUserData
4685)
4686{
4687 WDI_EventInfoType wdiEventData;
4688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4689
4690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004692 ------------------------------------------------------------------------*/
4693 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4694 {
4695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4696 "WDI API call before module is initialized - Fail request");
4697
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 }
4700
4701 /*------------------------------------------------------------------------
4702 Fill in Event data and post to the Main FSM
4703 ------------------------------------------------------------------------*/
4704 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 wdiEventData.pEventData = pwdiSwitchChReqParams;
4706 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4707 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004708 wdiEventData.pUserData = pUserData;
4709
4710 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4711
4712}/*WDI_SwitchChReq*/
4713
4714
4715/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 wishes to add or update a STA in HW. Upon the call of
4718 this API the WLAN DAL will pack and send a HAL Start
4719 message request message to the lower RIVA sub-system if
4720 DAL is in state STARTED.
4721
4722 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004724
4725 WDI_Start must have been called.
4726
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004729
Jeff Johnson295189b2012-06-20 16:38:30 -07004730 wdiConfigSTARspCb: callback for passing back the
4731 response of the config STA operation received from the
4732 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004733
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004735 callback
4736
Jeff Johnson295189b2012-06-20 16:38:30 -07004737 @see WDI_Start
4738 @return Result of the function call
4739*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004740WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004741WDI_ConfigSTAReq
4742(
4743 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4744 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4745 void* pUserData
4746)
4747{
4748 WDI_EventInfoType wdiEventData;
4749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4750
4751 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004753 ------------------------------------------------------------------------*/
4754 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4755 {
4756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4757 "WDI API call before module is initialized - Fail request");
4758
Jeff Johnsone7245742012-09-05 17:12:55 -07004759 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 }
4761
4762 /*------------------------------------------------------------------------
4763 Fill in Event data and post to the Main FSM
4764 ------------------------------------------------------------------------*/
4765 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4767 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4768 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004769 wdiEventData.pUserData = pUserData;
4770
4771 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4772
4773}/*WDI_ConfigSTAReq*/
4774
4775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 wants to change the state of an ongoing link. Upon the
4778 call of this API the WLAN DAL will pack and send a HAL
4779 Start message request message to the lower RIVA
4780 sub-system if DAL is in state STARTED.
4781
4782 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004784
4785 WDI_JoinStartReq must have been called.
4786
Jeff Johnsone7245742012-09-05 17:12:55 -07004787 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004788 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004789
Jeff Johnson295189b2012-06-20 16:38:30 -07004790 wdiSetLinkStateRspCb: callback for passing back the
4791 response of the set link state operation received from
4792 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004793
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 callback
4796
Jeff Johnson295189b2012-06-20 16:38:30 -07004797 @see WDI_JoinStartReq
4798 @return Result of the function call
4799*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004800WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004801WDI_SetLinkStateReq
4802(
4803 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4804 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4805 void* pUserData
4806)
4807{
4808 WDI_EventInfoType wdiEventData;
4809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4810
4811 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004812 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 ------------------------------------------------------------------------*/
4814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4815 {
4816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4817 "WDI API call before module is initialized - Fail request");
4818
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 }
4821
4822 /*------------------------------------------------------------------------
4823 Fill in Event data and post to the Main FSM
4824 ------------------------------------------------------------------------*/
4825 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004826 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4827 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4828 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004829 wdiEventData.pUserData = pUserData;
4830
4831 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4832
4833}/*WDI_SetLinkStateReq*/
4834
4835
4836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004837 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 to get statistics (MIB counters) from the device. Upon
4839 the call of this API the WLAN DAL will pack and send a
4840 HAL Start request message to the lower RIVA sub-system
4841 if DAL is in state STARTED.
4842
4843 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004845
4846 WDI_Start must have been called.
4847
Jeff Johnsone7245742012-09-05 17:12:55 -07004848 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004849 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004850
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 wdiGetStatsRspCb: callback for passing back the response
4852 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004853
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 callback
4856
Jeff Johnson295189b2012-06-20 16:38:30 -07004857 @see WDI_Start
4858 @return Result of the function call
4859*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004860WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004861WDI_GetStatsReq
4862(
4863 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4864 WDI_GetStatsRspCb wdiGetStatsRspCb,
4865 void* pUserData
4866)
4867{
4868 WDI_EventInfoType wdiEventData;
4869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4870
4871 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004872 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004873 ------------------------------------------------------------------------*/
4874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4875 {
4876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4877 "WDI API call before module is initialized - Fail request");
4878
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 }
4881
4882 /*------------------------------------------------------------------------
4883 Fill in Event data and post to the Main FSM
4884 ------------------------------------------------------------------------*/
4885 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 wdiEventData.pEventData = pwdiGetStatsReqParams;
4887 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4888 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 wdiEventData.pUserData = pUserData;
4890
4891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4892
4893}/*WDI_GetStatsReq*/
4894
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004895#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4896/**
4897 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4898 to get roam rssi from the device. Upon
4899 the call of this API the WLAN DAL will pack and send a
4900 HAL Start request message to the lower RIVA sub-system
4901 if DAL is in state STARTED.
4902
4903 In state BUSY this request will be queued. Request won't
4904 be allowed in any other state.
4905
4906 WDI_Start must have been called.
4907
4908 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4909 specified by the Device Interface
4910
4911 wdiGetRoamRssiRspCb: callback for passing back the response
4912 of the get stats operation received from the device
4913
4914 pUserData: user data will be passed back with the
4915 callback
4916
4917 @see WDI_Start
4918 @return Result of the function call
4919*/
4920WDI_Status
4921WDI_GetRoamRssiReq
4922(
4923 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4924 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4925 void* pUserData
4926)
4927{
4928 WDI_EventInfoType wdiEventData;
4929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4930
4931 /*------------------------------------------------------------------------
4932 Sanity Check
4933 ------------------------------------------------------------------------*/
4934 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4935 {
4936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4937 "WDI API call before module is initialized - Fail request");
4938
4939 return WDI_STATUS_E_NOT_ALLOWED;
4940 }
4941 /*------------------------------------------------------------------------
4942 Fill in Event data and post to the Main FSM
4943 ------------------------------------------------------------------------*/
4944 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4945 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4946 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4947 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4948 wdiEventData.pUserData = pUserData;
4949
4950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4951
4952}/*WDI_GetRoamRssiReq*/
4953#endif
4954
Jeff Johnson295189b2012-06-20 16:38:30 -07004955
4956/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004957 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004958 it wishes to change the configuration of the WLAN
4959 Device. Upon the call of this API the WLAN DAL will pack
4960 and send a HAL Update CFG request message to the lower
4961 RIVA sub-system if DAL is in state STARTED.
4962
4963 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004964 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004965
4966 WDI_Start must have been called.
4967
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004970
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 wdiUpdateCfgsRspCb: callback for passing back the
4972 response of the update cfg operation received from the
4973 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 callback
4977
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 @see WDI_Start
4979 @return Result of the function call
4980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004982WDI_UpdateCfgReq
4983(
4984 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4985 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4986 void* pUserData
4987)
4988{
4989 WDI_EventInfoType wdiEventData;
4990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4991
4992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 ------------------------------------------------------------------------*/
4995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4996 {
4997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4998 "WDI API call before module is initialized - Fail request");
4999
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 }
5002
5003 /*------------------------------------------------------------------------
5004 Fill in Event data and post to the Main FSM
5005 ------------------------------------------------------------------------*/
5006 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5008 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5009 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 wdiEventData.pUserData = pUserData;
5011
5012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5013
5014}/*WDI_UpdateCfgReq*/
5015
5016
5017
5018/**
5019 @brief WDI_AddBAReq will be called when the upper MAC has setup
5020 successfully a BA session and needs to notify the HW for
5021 the appropriate settings to take place. Upon the call of
5022 this API the WLAN DAL will pack and send a HAL Add BA
5023 request message to the lower RIVA sub-system if DAL is
5024 in state STARTED.
5025
5026 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005028
5029 WDI_PostAssocReq must have been called.
5030
5031 @param wdiAddBAReqParams: the add BA parameters as specified by
5032 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005033
Jeff Johnson295189b2012-06-20 16:38:30 -07005034 wdiAddBARspCb: callback for passing back the response of
5035 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005036
Jeff Johnson295189b2012-06-20 16:38:30 -07005037 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005038 callback
5039
Jeff Johnson295189b2012-06-20 16:38:30 -07005040 @see WDI_PostAssocReq
5041 @return Result of the function call
5042*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005043WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005044WDI_AddBAReq
5045(
5046 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5047 WDI_AddBARspCb wdiAddBARspCb,
5048 void* pUserData
5049)
5050{
5051 WDI_EventInfoType wdiEventData;
5052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5053
5054 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005055 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 ------------------------------------------------------------------------*/
5057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5058 {
5059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5060 "WDI API call before module is initialized - Fail request");
5061
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 }
5064
5065 /*------------------------------------------------------------------------
5066 Fill in Event data and post to the Main FSM
5067 ------------------------------------------------------------------------*/
5068 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005069 wdiEventData.pEventData = pwdiAddBAReqParams;
5070 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5071 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005072 wdiEventData.pUserData = pUserData;
5073
5074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5075
5076}/*WDI_AddBAReq*/
5077
5078
5079/**
5080 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5081 successfully a BA session and needs to notify the HW for
5082 the appropriate settings to take place. Upon the call of
5083 this API the WLAN DAL will pack and send a HAL Add BA
5084 request message to the lower RIVA sub-system if DAL is
5085 in state STARTED.
5086
5087 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005088 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005089
5090 WDI_PostAssocReq must have been called.
5091
5092 @param wdiAddBAReqParams: the add BA parameters as specified by
5093 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005094
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 wdiAddBARspCb: callback for passing back the response of
5096 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005097
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 callback
5100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 @see WDI_PostAssocReq
5102 @return Result of the function call
5103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005105WDI_TriggerBAReq
5106(
5107 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5108 WDI_TriggerBARspCb wdiTriggerBARspCb,
5109 void* pUserData
5110)
5111{
5112 WDI_EventInfoType wdiEventData;
5113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5114
5115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005117 ------------------------------------------------------------------------*/
5118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5119 {
5120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5121 "WDI API call before module is initialized - Fail request");
5122
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 }
5125
5126 /*------------------------------------------------------------------------
5127 Fill in Event data and post to the Main FSM
5128 ------------------------------------------------------------------------*/
5129 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5131 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5132 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 wdiEventData.pUserData = pUserData;
5134
5135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5136
5137}/*WDI_AddBAReq*/
5138
5139/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005141 wishes to update any of the Beacon parameters used by HW.
5142 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5143 message to the lower RIVA sub-system if DAL is in state
5144 STARTED.
5145
5146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005148
5149 WDI_PostAssocReq must have been called.
5150
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005153
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 wdiUpdateBeaconParamsRspCb: callback for passing back the
5155 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005156
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 callback
5159
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 @see WDI_PostAssocReq
5161 @return Result of the function call
5162*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005164WDI_UpdateBeaconParamsReq
5165(
5166 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5167 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5168 void* pUserData
5169)
5170{
5171 WDI_EventInfoType wdiEventData;
5172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5173
5174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005175 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 ------------------------------------------------------------------------*/
5177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5178 {
5179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5180 "WDI API call before module is initialized - Fail request");
5181
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 }
5184
5185 /*------------------------------------------------------------------------
5186 Fill in Event data and post to the Main FSM
5187 ------------------------------------------------------------------------*/
5188 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5190 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5191 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 wdiEventData.pUserData = pUserData;
5193
5194 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5195
5196}/*WDI_UpdateBeaconParamsReq*/
5197
5198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005199 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 wishes to update the Beacon template used by HW.
5201 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5202 message to the lower RIVA sub-system if DAL is in state
5203 STARTED.
5204
5205 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005207
5208 WDI_PostAssocReq must have been called.
5209
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005212
Jeff Johnson295189b2012-06-20 16:38:30 -07005213 wdiSendBeaconParamsRspCb: callback for passing back the
5214 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005215
Jeff Johnson295189b2012-06-20 16:38:30 -07005216 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 callback
5218
Jeff Johnson295189b2012-06-20 16:38:30 -07005219 @see WDI_PostAssocReq
5220 @return Result of the function call
5221*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005223WDI_SendBeaconParamsReq
5224(
5225 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5226 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5227 void* pUserData
5228)
5229{
5230 WDI_EventInfoType wdiEventData;
5231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5232
5233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 ------------------------------------------------------------------------*/
5236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5237 {
5238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5239 "WDI API call before module is initialized - Fail request");
5240
Jeff Johnsone7245742012-09-05 17:12:55 -07005241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 }
5243
5244 /*------------------------------------------------------------------------
5245 Fill in Event data and post to the Main FSM
5246 ------------------------------------------------------------------------*/
5247 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 wdiEventData.pEventData = pwdiSendBeaconParams;
5249 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5250 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 wdiEventData.pUserData = pUserData;
5252
5253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5254
5255}/*WDI_SendBeaconParamsReq*/
5256
5257/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 upper MAC wants to update the probe response template to
5260 be transmitted as Soft AP
5261 Upon the call of this API the WLAN DAL will
5262 pack and send the probe rsp template message to the
5263 lower RIVA sub-system if DAL is in state STARTED.
5264
5265 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005266 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005267
5268
Jeff Johnsone7245742012-09-05 17:12:55 -07005269 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005271
Jeff Johnson295189b2012-06-20 16:38:30 -07005272 wdiSendBeaconParamsRspCb: callback for passing back the
5273 response of the Send Beacon Params operation received
5274 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005275
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005277 callback
5278
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 @see WDI_AddBAReq
5280 @return Result of the function call
5281*/
5282
Jeff Johnsone7245742012-09-05 17:12:55 -07005283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005284WDI_UpdateProbeRspTemplateReq
5285(
5286 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5287 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5288 void* pUserData
5289)
5290{
5291 WDI_EventInfoType wdiEventData;
5292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5293
5294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005296 ------------------------------------------------------------------------*/
5297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5298 {
5299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5300 "WDI API call before module is initialized - Fail request");
5301
Jeff Johnsone7245742012-09-05 17:12:55 -07005302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 }
5304
5305 /*------------------------------------------------------------------------
5306 Fill in Event data and post to the Main FSM
5307 ------------------------------------------------------------------------*/
5308 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5310 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5311 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005312 wdiEventData.pUserData = pUserData;
5313
5314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5315
5316}/*WDI_UpdateProbeRspTemplateReq*/
5317
5318/**
5319 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5320 to the NV memory.
5321
5322
5323 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5324 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005325
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 wdiNvDownloadRspCb: callback for passing back the response of
5327 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005328
Jeff Johnson295189b2012-06-20 16:38:30 -07005329 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005330 callback
5331
Jeff Johnson295189b2012-06-20 16:38:30 -07005332 @see WDI_PostAssocReq
5333 @return Result of the function call
5334*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005335WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005336WDI_NvDownloadReq
5337(
5338 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5339 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5340 void* pUserData
5341)
5342{
5343 WDI_EventInfoType wdiEventData;
5344
5345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005347 ------------------------------------------------------------------------*/
5348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5349 {
5350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5351 "WDI API call before module is initialized - Fail request");
5352
Jeff Johnsone7245742012-09-05 17:12:55 -07005353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 }
5355
5356 /*------------------------------------------------------------------------
5357 Fill in Event data and post to the Main FSM
5358 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5360 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5361 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5362 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005363 wdiEventData.pUserData = pUserData;
5364
5365 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5366
5367}/*WDI_NVDownloadReq*/
5368
Jeff Johnson295189b2012-06-20 16:38:30 -07005369/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005370 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 upper MAC wants to send Notice of Absence
5372 Upon the call of this API the WLAN DAL will
5373 pack and send the probe rsp template message to the
5374 lower RIVA sub-system if DAL is in state STARTED.
5375
5376 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005378
5379
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005382
Jeff Johnson295189b2012-06-20 16:38:30 -07005383 wdiSendBeaconParamsRspCb: callback for passing back the
5384 response of the Send Beacon Params operation received
5385 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 callback
5389
Jeff Johnson295189b2012-06-20 16:38:30 -07005390 @see WDI_AddBAReq
5391 @return Result of the function call
5392*/
5393WDI_Status
5394WDI_SetP2PGONOAReq
5395(
5396 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5397 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5398 void* pUserData
5399)
5400{
5401 WDI_EventInfoType wdiEventData;
5402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5403
5404 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005405 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 ------------------------------------------------------------------------*/
5407 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5408 {
5409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5410 "WDI API call before module is initialized - Fail request");
5411
Jeff Johnsone7245742012-09-05 17:12:55 -07005412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005413 }
5414
5415 /*------------------------------------------------------------------------
5416 Fill in Event data and post to the Main FSM
5417 ------------------------------------------------------------------------*/
5418 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5420 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5421 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005422 wdiEventData.pUserData = pUserData;
5423
5424 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5425
5426}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005427
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305428#ifdef FEATURE_WLAN_TDLS
5429/**
5430 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5431 upper MAC wants to send TDLS Link Establish Request Parameters
5432 Upon the call of this API the WLAN DAL will
5433 pack and send the TDLS Link Establish Request message to the
5434 lower RIVA sub-system if DAL is in state STARTED.
5435
5436 In state BUSY this request will be queued. Request won't
5437 be allowed in any other state.
5438
5439
5440 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5441 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5442
5443 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5444 response of the TDLS Link Establish request received
5445 from the device
5446
5447 pUserData: user data will be passed back with the
5448 callback
5449
5450 @see
5451 @return Result of the function call
5452*/
5453WDI_Status
5454WDI_SetTDLSLinkEstablishReq
5455(
5456 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5457 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5458 void* pUserData
5459)
5460{
5461 WDI_EventInfoType wdiEventData;
5462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5463
5464 /*------------------------------------------------------------------------
5465 Sanity Check
5466 ------------------------------------------------------------------------*/
5467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5468 {
5469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5470 "WDI API call before module is initialized - Fail request");
5471
5472 return WDI_STATUS_E_NOT_ALLOWED;
5473 }
5474
5475 /*------------------------------------------------------------------------
5476 Fill in Event data and post to the Main FSM
5477 ------------------------------------------------------------------------*/
5478 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5479 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5480 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5481 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5482 wdiEventData.pUserData = pUserData;
5483
5484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5485
5486}/*WDI_SetTDLSLinkEstablishReq*/
5487#endif
5488
Jeff Johnson295189b2012-06-20 16:38:30 -07005489/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005490 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005491 UMAC wanted to add STA self while opening any new session
5492 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005493 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005494
5495
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005498
Jeff Johnson295189b2012-06-20 16:38:30 -07005499 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 callback
5501
5502 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005503 @return Result of the function call
5504*/
5505WDI_Status
5506WDI_AddSTASelfReq
5507(
5508 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5509 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5510 void* pUserData
5511)
5512{
5513 WDI_EventInfoType wdiEventData;
5514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5515
5516 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005517 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005518 ------------------------------------------------------------------------*/
5519 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5520 {
5521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5522 "WDI API call before module is initialized - Fail request");
5523
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 }
5526
5527 /*------------------------------------------------------------------------
5528 Fill in Event data and post to the Main FSM
5529 ------------------------------------------------------------------------*/
5530 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5532 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5533 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 wdiEventData.pUserData = pUserData;
5535
5536 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5537
5538}/*WDI_AddSTASelfReq*/
5539
5540
Jeff Johnsone7245742012-09-05 17:12:55 -07005541#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005542/**
5543 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5544 the device of a successful add TSpec negotiation. HW
5545 needs to receive the TSpec Info from the UMAC in order
5546 to configure properly the QoS data traffic. Upon the
5547 call of this API the WLAN DAL will pack and send a HAL
5548 Add TS request message to the lower RIVA sub-system if
5549 DAL is in state STARTED.
5550
5551 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005552 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005553
5554 WDI_PostAssocReq must have been called.
5555
5556 @param wdiAddTsReqParams: the add TS parameters as specified by
5557 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005558
Jeff Johnson295189b2012-06-20 16:38:30 -07005559 wdiAddTsRspCb: callback for passing back the response of
5560 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005561
Jeff Johnson295189b2012-06-20 16:38:30 -07005562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 callback
5564
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 @see WDI_PostAssocReq
5566 @return Result of the function call
5567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005569WDI_AggrAddTSReq
5570(
5571 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5572 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5573 void* pUserData
5574)
5575{
5576 WDI_EventInfoType wdiEventData;
5577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5578
5579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005581 ------------------------------------------------------------------------*/
5582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5583 {
5584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5585 "WDI API call before module is initialized - Fail request");
5586
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 }
5589
5590 /*------------------------------------------------------------------------
5591 Fill in Event data and post to the Main FSM
5592 ------------------------------------------------------------------------*/
5593 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5595 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5596 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 wdiEventData.pUserData = pUserData;
5598
5599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5600
5601}/*WDI_AggrAddTSReq*/
5602
5603#endif /* WLAN_FEATURE_VOWIFI_11R */
5604
Jeff Johnson295189b2012-06-20 16:38:30 -07005605/**
5606 @brief WDI_FTMCommandReq
5607 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005608
5609 @param ftmCommandReq: FTM Command Body
5610 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005612
Jeff Johnson295189b2012-06-20 16:38:30 -07005613 @see
5614 @return Result of the function call
5615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005617WDI_FTMCommandReq
5618(
5619 WDI_FTMCommandReqType *ftmCommandReq,
5620 WDI_FTMCommandRspCb ftmCommandRspCb,
5621 void *pUserData
5622)
5623{
5624 WDI_EventInfoType wdiEventData;
5625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5626
5627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 ------------------------------------------------------------------------*/
5630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5631 {
5632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5633 "WDI API call before module is initialized - Fail request");
5634
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 }
5637
5638 /*------------------------------------------------------------------------
5639 Fill in Event data and post to the Main FSM
5640 ------------------------------------------------------------------------*/
5641 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5642 wdiEventData.pEventData = (void *)ftmCommandReq;
5643 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5644 wdiEventData.pCBfnc = ftmCommandRspCb;
5645 wdiEventData.pUserData = pUserData;
5646
5647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5648}
Jeff Johnson295189b2012-06-20 16:38:30 -07005649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005651
5652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005654
5655
5656 @param pwdiResumeReqParams: as specified by
5657 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 wdiResumeReqRspCb: callback for passing back the response of
5660 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 callback
5664
5665 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 @return Result of the function call
5667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005669WDI_HostResumeReq
5670(
5671 WDI_ResumeParamsType* pwdiResumeReqParams,
5672 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5673 void* pUserData
5674)
5675{
5676 WDI_EventInfoType wdiEventData;
5677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5678
5679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005681 ------------------------------------------------------------------------*/
5682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5683 {
5684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5685 "WDI API call before module is initialized - Fail request");
5686
Jeff Johnsone7245742012-09-05 17:12:55 -07005687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 }
5689
5690 /*------------------------------------------------------------------------
5691 Fill in Event data and post to the Main FSM
5692 ------------------------------------------------------------------------*/
5693 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005694 wdiEventData.pEventData = pwdiResumeReqParams;
5695 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5696 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005697 wdiEventData.pUserData = pUserData;
5698
5699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5700
5701}/*WDI_HostResumeReq*/
5702
5703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005704 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005705
5706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005708
5709
5710 @param pwdiDelStaSelfReqParams: as specified by
5711 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005712
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 wdiDelStaSelfRspCb: callback for passing back the response of
5714 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005715
Jeff Johnson295189b2012-06-20 16:38:30 -07005716 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 callback
5718
Jeff Johnson295189b2012-06-20 16:38:30 -07005719 @see WDI_PostAssocReq
5720 @return Result of the function call
5721*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005722WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005723WDI_DelSTASelfReq
5724(
5725 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5726 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5727 void* pUserData
5728)
5729{
5730 WDI_EventInfoType wdiEventData;
5731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5732
5733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 ------------------------------------------------------------------------*/
5736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5737 {
5738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5739 "WDI API call before module is initialized - Fail request");
5740
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 }
5743
5744 /*------------------------------------------------------------------------
5745 Fill in Event data and post to the Main FSM
5746 ------------------------------------------------------------------------*/
5747 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005748 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5749 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5750 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005751 wdiEventData.pUserData = pUserData;
5752
5753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5754
5755}/*WDI_AggrAddTSReq*/
5756
5757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5759 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005760 Upon the call of this API the WLAN DAL will pack
5761 and send a HAL Set Tx Per Tracking request message to the
5762 lower RIVA sub-system if DAL is in state STARTED.
5763
5764 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005766
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005769
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 pwdiSetTxPerTrackingRspCb: callback for passing back the
5771 response of the set Tx PER Tracking configurations operation received
5772 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005773
Jeff Johnson295189b2012-06-20 16:38:30 -07005774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 callback
5776
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 @return Result of the function call
5778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005780WDI_SetTxPerTrackingReq
5781(
5782 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5783 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5784 void* pUserData
5785)
5786{
5787 WDI_EventInfoType wdiEventData;
5788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5789
5790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 ------------------------------------------------------------------------*/
5793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5794 {
5795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5796 "WDI API call before module is initialized - Fail request");
5797
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 }
5800
5801 /*------------------------------------------------------------------------
5802 Fill in Event data and post to the Main FSM
5803 ------------------------------------------------------------------------*/
5804 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005805 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 wdiEventData.pUserData = pUserData;
5809
5810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5811
5812}/*WDI_SetTxPerTrackingReq*/
5813
5814/**
5815 @brief WDI_SetTmLevelReq
5816 If HW Thermal condition changed, driver should react based on new
5817 HW thermal condition.
5818
5819 @param pwdiSetTmLevelReq: New thermal condition information
5820
5821 pwdiSetTmLevelRspCb: callback
5822
5823 usrData: user data will be passed back with the
5824 callback
5825
5826 @return Result of the function call
5827*/
5828WDI_Status
5829WDI_SetTmLevelReq
5830(
5831 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5832 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5833 void *usrData
5834)
5835{
5836 WDI_EventInfoType wdiEventData;
5837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5838
5839 /*------------------------------------------------------------------------
5840 Sanity Check
5841 ------------------------------------------------------------------------*/
5842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5843 {
5844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5845 "WDI API call before module is initialized - Fail request");
5846
5847 return WDI_STATUS_E_NOT_ALLOWED;
5848 }
5849
5850 /*------------------------------------------------------------------------
5851 Fill in Event data and post to the Main FSM
5852 ------------------------------------------------------------------------*/
5853 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5854 wdiEventData.pEventData = pwdiSetTmLevelReq;
5855 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5856 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5857 wdiEventData.pUserData = usrData;
5858
5859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5860}
5861
5862/**
5863 @brief WDI_HostSuspendInd
5864
5865 Suspend Indication from the upper layer will be sent
5866 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005867
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005869
5870 @see
5871
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 @return Status of the request
5873*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005874WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005875WDI_HostSuspendInd
5876(
5877 WDI_SuspendParamsType* pwdiSuspendIndParams
5878)
5879{
5880
5881 WDI_EventInfoType wdiEventData;
5882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5883
5884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 ------------------------------------------------------------------------*/
5887 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5888 {
5889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5890 "WDI API call before module is initialized - Fail request");
5891
Jeff Johnsone7245742012-09-05 17:12:55 -07005892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005893 }
5894
5895 /*------------------------------------------------------------------------
5896 Fill in Event data and post to the Main FSM
5897 ------------------------------------------------------------------------*/
5898 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 wdiEventData.pEventData = pwdiSuspendIndParams;
5900 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5901 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 wdiEventData.pUserData = NULL;
5903
5904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5905
5906}/*WDI_HostSuspendInd*/
5907
5908/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005909 @brief WDI_TrafficStatsInd
5910 Traffic Stats from the upper layer will be sent
5911 down to HAL
5912
5913 @param WDI_TrafficStatsIndType
5914
5915 @see
5916
5917 @return Status of the request
5918*/
5919WDI_Status
5920WDI_TrafficStatsInd
5921(
5922 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5923)
5924{
5925
5926 WDI_EventInfoType wdiEventData;
5927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5928
5929 /*------------------------------------------------------------------------
5930 Sanity Check
5931 ------------------------------------------------------------------------*/
5932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5933 {
5934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5935 "WDI API call before module is initialized - Fail request");
5936
5937 return WDI_STATUS_E_NOT_ALLOWED;
5938 }
5939
5940 /*------------------------------------------------------------------------
5941 Fill in Event data and post to the Main FSM
5942 ------------------------------------------------------------------------*/
5943 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5944 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5945 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5946 wdiEventData.pCBfnc = NULL;
5947 wdiEventData.pUserData = NULL;
5948
5949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5950
5951}/*WDI_TrafficStatsInd*/
5952
Chet Lanctota96bb432013-03-18 10:26:30 -07005953#ifdef WLAN_FEATURE_11W
5954/**
5955 @brief WDI_ExcludeUnencryptedInd
5956 Register with HAL to receive/drop unencrypted frames
5957
5958 @param WDI_ExcludeUnencryptIndType
5959
5960 @see
5961
5962 @return Status of the request
5963*/
5964WDI_Status
5965WDI_ExcludeUnencryptedInd
5966(
5967 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5968)
5969{
5970
5971 WDI_EventInfoType wdiEventData;
5972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5973
5974 /*------------------------------------------------------------------------
5975 Sanity Check
5976 ------------------------------------------------------------------------*/
5977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5978 {
5979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5980 "WDI API call before module is initialized - Fail request");
5981
5982 return WDI_STATUS_E_NOT_ALLOWED;
5983 }
5984
5985 /*------------------------------------------------------------------------
5986 Fill in Event data and post to the Main FSM
5987 ------------------------------------------------------------------------*/
5988 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5989 wdiEventData.pEventData = pWdiExcUnencParams;
5990 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5991 wdiEventData.pCBfnc = NULL;
5992 wdiEventData.pUserData = NULL;
5993
5994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5995
5996}/*WDI_TrafficStatsInd*/
5997#endif
5998
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005999/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006000 @brief WDI_HALDumpCmdReq
6001 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006002
6003 @param halDumpCmdReqParams: Hal Dump Command Body
6004 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006006
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 @see
6008 @return Result of the function call
6009*/
6010WDI_Status WDI_HALDumpCmdReq
6011(
6012 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6013 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6014 void *pUserData
6015)
6016{
6017 WDI_EventInfoType wdiEventData;
6018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6019
6020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006022 ------------------------------------------------------------------------*/
6023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6024 {
6025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6026 "WDI API call before module is initialized - Fail request");
6027
Jeff Johnsone7245742012-09-05 17:12:55 -07006028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006029 }
6030
6031 /*------------------------------------------------------------------------
6032 Fill in Event data and post to the Main FSM
6033 ------------------------------------------------------------------------*/
6034 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6035 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6036 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6037 wdiEventData.pCBfnc = halDumpCmdRspCb;
6038 wdiEventData.pUserData = pUserData;
6039
6040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6041}
6042
Jeff Johnsone7245742012-09-05 17:12:55 -07006043/*============================================================================
6044
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006046
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 ============================================================================*/
6048
6049/**
6050 @brief Main FSM Start function for all states except BUSY
6051
Jeff Johnsone7245742012-09-05 17:12:55 -07006052
6053 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 wdiEV: event posted to the main DAL FSM
6055 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006056 structure
6057
Jeff Johnson295189b2012-06-20 16:38:30 -07006058 @see
6059 @return Result of the function call
6060*/
6061WDI_Status
6062WDI_PostMainEvent
6063(
Jeff Johnsone7245742012-09-05 17:12:55 -07006064 WDI_ControlBlockType* pWDICtx,
6065 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006066 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006067
Jeff Johnson295189b2012-06-20 16:38:30 -07006068)
6069{
Jeff Johnsone7245742012-09-05 17:12:55 -07006070 WDI_Status wdiStatus;
6071 WDI_MainFuncType pfnWDIMainEvHdlr;
6072 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6074
6075 /*-------------------------------------------------------------------------
6076 Sanity check
6077 -------------------------------------------------------------------------*/
6078 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6079 ( wdiEV >= WDI_MAX_EVENT ))
6080 {
6081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6082 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6083 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006085 }
6086
6087 /*Access to the global state must be locked */
6088 wpalMutexAcquire(&pWDICtx->wptMutex);
6089
6090 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006091 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006092
6093 wdiOldState = pWDICtx->uGlobalState;
6094
6095 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6097 response comes from CCPU for the request sent by host:
6098 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 -07006099 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 -07006100 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006101 CCPU:
6102 don't change the state */
6103 if ( WDI_RESPONSE_EVENT != wdiEV)
6104 {
6105 /*Transition to BUSY State - the request is now being processed by the FSM,
6106 if the request fails we shall transition back to the old state, if not
6107 the request will manage its own state transition*/
6108 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6109 }
6110 /* If the state function associated with the EV is NULL it means that this
6111 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006112 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006113 {
6114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006117 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006118 }
6119 else
6120 {
6121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006122 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006123 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006124 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006125 }
6126
6127 /* If a request handles itself well it will end up in a success or in a
6128 pending
6129 Success - means that the request was processed and the proper state
6130 transition already occurred or will occur when the resp is received
6131 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006132
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 Pending - means the request could not be processed at this moment in time
6134 because the FSM was already busy so no state transition or dequeueing
6135 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006136
Jeff Johnson295189b2012-06-20 16:38:30 -07006137 Success for synchronous case means that the transition may occur and
6138 processing of pending requests may continue - so it should go through
6139 and restores the state and continue processing queued requests*/
6140 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6141 ( WDI_STATUS_PENDING != wdiStatus ))
6142 {
6143 if ( WDI_RESPONSE_EVENT != wdiEV)
6144 {
6145 /*The request has failed or could not be processed - transition back to
6146 the old state - check to see if anything was queued and try to execute
6147 The dequeue logic should post a message to a thread and return - no
6148 actual processing can occur */
6149 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6150 }
6151 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006152
Jeff Johnson295189b2012-06-20 16:38:30 -07006153 }
6154
6155 /* we have completed processing the event */
6156 wpalMutexRelease(&pWDICtx->wptMutex);
6157
Jeff Johnsone7245742012-09-05 17:12:55 -07006158 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006159
6160}/*WDI_PostMainEvent*/
6161
6162
6163/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006165--------------------------------------------------------------------------*/
6166/**
6167 @brief Main FSM Start function for all states except BUSY
6168
Jeff Johnsone7245742012-09-05 17:12:55 -07006169
6170 @param pWDICtx: pointer to the WLAN DAL context
6171 pEventData: pointer to the event information structure
6172
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 @see
6174 @return Result of the function call
6175*/
6176WDI_Status
6177WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006178(
Jeff Johnson295189b2012-06-20 16:38:30 -07006179 WDI_ControlBlockType* pWDICtx,
6180 WDI_EventInfoType* pEventData
6181)
6182{
6183
6184 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006186 ----------------------------------------------------------------------*/
6187 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6188 {
6189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006190 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 pWDICtx, pEventData);
6192 return WDI_STATUS_E_FAILURE;
6193 }
6194
6195 wpalMutexAcquire(&pWDICtx->wptMutex);
6196
6197 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006198 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006199 ----------------------------------------------------------------------*/
6200 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6201 {
6202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6203 "Control Transport not yet Open - queueing the request");
6204
6205 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006206 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006207
6208 wpalMutexRelease(&pWDICtx->wptMutex);
6209 return WDI_STATUS_PENDING;
6210 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006211
Jeff Johnson295189b2012-06-20 16:38:30 -07006212 wpalMutexRelease(&pWDICtx->wptMutex);
6213
6214 /*Return Success*/
6215 return WDI_ProcessRequest( pWDICtx, pEventData );
6216
6217}/*WDI_MainStart*/
6218
6219/**
6220 @brief Main FSM Response function for state INIT
6221
Jeff Johnsone7245742012-09-05 17:12:55 -07006222
6223 @param pWDICtx: pointer to the WLAN DAL context
6224 pEventData: pointer to the event information structure
6225
Jeff Johnson295189b2012-06-20 16:38:30 -07006226 @see
6227 @return Result of the function call
6228*/
6229WDI_Status
6230WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006231(
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 WDI_ControlBlockType* pWDICtx,
6233 WDI_EventInfoType* pEventData
6234)
6235{
6236 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006237 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006239 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006240
6241 /*Return Success*/
6242 return WDI_STATUS_E_NOT_ALLOWED;
6243}/* WDI_MainRspInit */
6244
6245/**
6246 @brief Main FSM Close function for all states except BUSY
6247
Jeff Johnsone7245742012-09-05 17:12:55 -07006248
6249 @param pWDICtx: pointer to the WLAN DAL context
6250 pEventData: pointer to the event information structure
6251
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 @see
6253 @return Result of the function call
6254*/
6255WDI_Status
6256WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006257(
Jeff Johnson295189b2012-06-20 16:38:30 -07006258 WDI_ControlBlockType* pWDICtx,
6259 WDI_EventInfoType* pEventData
6260)
6261{
6262
6263 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006264 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 ----------------------------------------------------------------------*/
6266 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6267 {
6268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 pWDICtx, pEventData);
6271 return WDI_STATUS_E_FAILURE;
6272 }
6273
6274 /*Return Success*/
6275 return WDI_ProcessRequest( pWDICtx, pEventData );
6276
6277}/*WDI_MainClose*/
6278/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006280--------------------------------------------------------------------------*/
6281/**
6282 @brief Main FSM Start function for state STARTED
6283
Jeff Johnsone7245742012-09-05 17:12:55 -07006284
6285 @param pWDICtx: pointer to the WLAN DAL context
6286 pEventData: pointer to the event information structure
6287
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 @see
6289 @return Result of the function call
6290*/
6291WDI_Status
6292WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006293(
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 WDI_ControlBlockType* pWDICtx,
6295 WDI_EventInfoType* pEventData
6296)
6297{
6298 WDI_StartRspCb wdiStartRspCb = NULL;
6299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6300
6301 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 ----------------------------------------------------------------------*/
6304 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6305 {
6306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006307 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 pWDICtx, pEventData);
6309 return WDI_STATUS_E_FAILURE;
6310 }
6311
6312 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006313 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 ----------------------------------------------------------------------*/
6315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006317
6318 wpalMutexAcquire(&pWDICtx->wptMutex);
6319
6320 /*Transition back to started because the post function transitioned us to
6321 busy*/
6322 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6323
6324 /*Check to see if any request is pending*/
6325 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006326
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 wpalMutexRelease(&pWDICtx->wptMutex);
6328
6329 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006330 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6331
Jeff Johnson295189b2012-06-20 16:38:30 -07006332 /*Notify UMAC*/
6333 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6334
6335 /*Return Success*/
6336 return WDI_STATUS_SUCCESS;
6337
6338}/*WDI_MainStartStarted*/
6339
6340/**
6341 @brief Main FSM Stop function for state STARTED
6342
Jeff Johnsone7245742012-09-05 17:12:55 -07006343
6344 @param pWDICtx: pointer to the WLAN DAL context
6345 pEventData: pointer to the event information structure
6346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 @see
6348 @return Result of the function call
6349*/
6350WDI_Status
6351WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006352(
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 WDI_ControlBlockType* pWDICtx,
6354 WDI_EventInfoType* pEventData
6355)
6356{
6357 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006358 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006359 ----------------------------------------------------------------------*/
6360 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6361 {
6362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006364 pWDICtx, pEventData);
6365 return WDI_STATUS_E_FAILURE;
6366 }
6367
6368 /*State at this point is BUSY - because we enter this state before posting
6369 an event to the FSM in order to prevent potential race conditions*/
6370
6371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6372 "Processing stop request in FSM");
6373
6374 /*Return Success*/
6375 return WDI_ProcessRequest( pWDICtx, pEventData );
6376
6377}/*WDI_MainStopStarted*/
6378/**
6379 @brief Main FSM Request function for state started
6380
Jeff Johnsone7245742012-09-05 17:12:55 -07006381
6382 @param pWDICtx: pointer to the WLAN DAL context
6383 pEventData: pointer to the event information structure
6384
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 @see
6386 @return Result of the function call
6387*/
6388WDI_Status
6389WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006390(
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 WDI_ControlBlockType* pWDICtx,
6392 WDI_EventInfoType* pEventData
6393)
6394{
6395
6396 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 ----------------------------------------------------------------------*/
6399 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6400 {
6401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006402 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006403 pWDICtx, pEventData);
6404 return WDI_STATUS_E_FAILURE;
6405 }
6406
6407 /*State at this point is BUSY - because we enter this state before posting
6408 an event to the FSM in order to prevent potential race conditions*/
6409
6410 /*Return Success*/
6411 return WDI_ProcessRequest( pWDICtx, pEventData );
6412
6413}/*WDI_MainReqStarted*/
6414
6415/**
6416 @brief Main FSM Response function for all states except INIT
6417
Jeff Johnsone7245742012-09-05 17:12:55 -07006418
6419 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006421
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 @see
6423 @return Result of the function call
6424*/
6425WDI_Status
6426WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006427(
Jeff Johnson295189b2012-06-20 16:38:30 -07006428 WDI_ControlBlockType* pWDICtx,
6429 WDI_EventInfoType* pEventData
6430)
6431{
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 wpt_boolean expectedResponse;
6434
6435 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 ----------------------------------------------------------------------*/
6438 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6439 {
6440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006441 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 pWDICtx, pEventData);
6443 return WDI_STATUS_E_FAILURE;
6444 }
6445
6446 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6447 {
6448 /* we received an expected response */
6449 expectedResponse = eWLAN_PAL_TRUE;
6450
6451 /*We expect that we will transition to started after this processing*/
6452 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6453
6454 /* we are no longer expecting a response */
6455 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6456 }
6457 else
6458 {
6459 /* we received an indication or unexpected response */
6460 expectedResponse = eWLAN_PAL_FALSE;
6461 /* for indications no need to update state from what it is right
6462 now, unless it explicitly does it in the indication handler (say
6463 for device failure ind) */
6464 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6465 }
6466
6467 /*Process the response and indication */
6468 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6469
6470 /*Lock the CB as we are about to do a state transition*/
6471 wpalMutexAcquire(&pWDICtx->wptMutex);
6472
6473 /*Transition to the expected state after the response processing
6474 - this should always be started state with the following exceptions:
6475 1. processing of a failed start response
6476 2. device failure detected while processing response
6477 3. stop response received*/
6478 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006479
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 /*Dequeue request that may have been queued while we were waiting for the
6481 response */
6482 if ( expectedResponse )
6483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006484 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 }
6486
6487 wpalMutexRelease(&pWDICtx->wptMutex);
6488
6489 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006491
6492}/*WDI_MainRsp*/
6493
6494/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006495 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006496--------------------------------------------------------------------------*/
6497/**
6498 @brief Main FSM Stop function for state STOPPED
6499
Jeff Johnsone7245742012-09-05 17:12:55 -07006500
6501 @param pWDICtx: pointer to the WLAN DAL context
6502 pEventData: pointer to the event information structure
6503
Jeff Johnson295189b2012-06-20 16:38:30 -07006504 @see
6505 @return Result of the function call
6506*/
6507WDI_Status
6508WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006509(
Jeff Johnson295189b2012-06-20 16:38:30 -07006510 WDI_ControlBlockType* pWDICtx,
6511 WDI_EventInfoType* pEventData
6512)
6513{
6514 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006515 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006516 ----------------------------------------------------------------------*/
6517 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6518 {
6519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 pWDICtx, pEventData);
6522 return WDI_STATUS_E_FAILURE;
6523 }
6524
6525 /*We should normally not get a STOP request if we are already stopped
6526 since we should normally be stopped by the UMAC. However in some
6527 error situations we put ourselves in the stopped state without the
6528 UMAC knowing, so when we get a STOP request in this state we still
6529 process it since we need to clean up the underlying state */
6530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6531 "Processing stop request while stopped in FSM");
6532
6533 /*Return Success*/
6534 return WDI_ProcessRequest( pWDICtx, pEventData );
6535
6536}/*WDI_MainStopStopped*/
6537
6538/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006539 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006540--------------------------------------------------------------------------*/
6541/**
6542 @brief Main FSM Start function for state BUSY
6543
Jeff Johnsone7245742012-09-05 17:12:55 -07006544
6545 @param pWDICtx: pointer to the WLAN DAL context
6546 pEventData: pointer to the event information structure
6547
Jeff Johnson295189b2012-06-20 16:38:30 -07006548 @see
6549 @return Result of the function call
6550*/
6551WDI_Status
6552WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006553(
Jeff Johnson295189b2012-06-20 16:38:30 -07006554 WDI_ControlBlockType* pWDICtx,
6555 WDI_EventInfoType* pEventData
6556)
6557{
6558 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 ----------------------------------------------------------------------*/
6561 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6562 {
6563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 pWDICtx, pEventData);
6566 return WDI_STATUS_E_FAILURE;
6567 }
6568
6569 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006570 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006571 ----------------------------------------------------------------------*/
6572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6573 "WDI Busy state - queue start request");
6574
6575 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006577
6578 /*Return Success*/
6579 return WDI_STATUS_PENDING;
6580}/*WDI_MainStartBusy*/
6581
6582/**
6583 @brief Main FSM Stop function for state BUSY
6584
Jeff Johnsone7245742012-09-05 17:12:55 -07006585
6586 @param pWDICtx: pointer to the WLAN DAL context
6587 pEventData: pointer to the event information structure
6588
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 @see
6590 @return Result of the function call
6591*/
6592WDI_Status
6593WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006594(
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 WDI_ControlBlockType* pWDICtx,
6596 WDI_EventInfoType* pEventData
6597)
6598{
6599 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 ----------------------------------------------------------------------*/
6602 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6603 {
6604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006605 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006606 pWDICtx, pEventData);
6607 return WDI_STATUS_E_FAILURE;
6608 }
6609
6610 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006611 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006612 ----------------------------------------------------------------------*/
6613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6614 "WDI Busy state - queue stop request");
6615
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006618
Jeff Johnson295189b2012-06-20 16:38:30 -07006619}/*WDI_MainStopBusy*/
6620
6621/**
6622 @brief Main FSM Request function for state BUSY
6623
Jeff Johnsone7245742012-09-05 17:12:55 -07006624
6625 @param pWDICtx: pointer to the WLAN DAL context
6626 pEventData: pointer to the event information structure
6627
Jeff Johnson295189b2012-06-20 16:38:30 -07006628 @see
6629 @return Result of the function call
6630*/
6631WDI_Status
6632WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006633(
Jeff Johnson295189b2012-06-20 16:38:30 -07006634 WDI_ControlBlockType* pWDICtx,
6635 WDI_EventInfoType* pEventData
6636)
6637{
6638 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006639 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 ----------------------------------------------------------------------*/
6641 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6642 {
6643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 pWDICtx, pEventData);
6646 return WDI_STATUS_E_FAILURE;
6647 }
6648
6649 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006650 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006651 ----------------------------------------------------------------------*/
6652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6653 "WDI Busy state - queue request %d because waiting for response %d",
6654 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6655
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006658
Jeff Johnson295189b2012-06-20 16:38:30 -07006659}/*WDI_MainReqBusy*/
6660/**
6661 @brief Main FSM Close function for state BUSY
6662
Jeff Johnsone7245742012-09-05 17:12:55 -07006663
6664 @param pWDICtx: pointer to the WLAN DAL context
6665 pEventData: pointer to the event information structure
6666
Jeff Johnson295189b2012-06-20 16:38:30 -07006667 @see
6668 @return Result of the function call
6669*/
6670WDI_Status
6671WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006672(
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 WDI_ControlBlockType* pWDICtx,
6674 WDI_EventInfoType* pEventData
6675)
6676{
6677 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 ----------------------------------------------------------------------*/
6680 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6681 {
6682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 pWDICtx, pEventData);
6685 return WDI_STATUS_E_FAILURE;
6686 }
6687
6688 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 ----------------------------------------------------------------------*/
6691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6692 "WDI Busy state - queue close request");
6693
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006696
Jeff Johnson295189b2012-06-20 16:38:30 -07006697}/*WDI_MainCloseBusy*/
6698
6699/**
6700 @brief Main FSM Shutdown function for INIT & STARTED states
6701
6702
6703 @param pWDICtx: pointer to the WLAN DAL context
6704 pEventData: pointer to the event information structure
6705
6706 @see
6707 @return Result of the function call
6708*/
6709WDI_Status
6710WDI_MainShutdown
6711(
6712 WDI_ControlBlockType* pWDICtx,
6713 WDI_EventInfoType* pEventData
6714)
6715{
6716 /*--------------------------------------------------------------------
6717 Sanity Check
6718 ----------------------------------------------------------------------*/
6719 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6720 {
6721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6722 "Invalid parameters on Main Start %x %x",
6723 pWDICtx, pEventData);
6724 return WDI_STATUS_E_FAILURE;
6725 }
6726
6727 /*State at this point is BUSY - because we enter this state before posting
6728 an event to the FSM in order to prevent potential race conditions*/
6729
6730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6731 "Processing shutdown request in FSM");
6732
6733 /*Return Success*/
6734 return WDI_ProcessRequest( pWDICtx, pEventData );
6735
6736}/*WDI_MainShutdown*/
6737
6738/**
6739 @brief Main FSM Shutdown function for BUSY state
6740
6741
6742 @param pWDICtx: pointer to the WLAN DAL context
6743 pEventData: pointer to the event information structure
6744
6745 @see
6746 @return Result of the function call
6747*/
6748WDI_Status
6749WDI_MainShutdownBusy
6750(
6751 WDI_ControlBlockType* pWDICtx,
6752 WDI_EventInfoType* pEventData
6753)
6754{
6755 /*--------------------------------------------------------------------
6756 Sanity Check
6757 ----------------------------------------------------------------------*/
6758 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6759 {
6760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6761 "Invalid parameters on Main Start %x %x",
6762 pWDICtx, pEventData);
6763 return WDI_STATUS_E_FAILURE;
6764 }
6765
6766 /* If you are waiting for a HAL response at this stage, you are not
6767 * going to get it. Riva is already shutdown/crashed.
6768 */
6769 wpalTimerStop(&gWDICb.wptResponseTimer);
6770
6771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6772 "Processing shutdown request in FSM: Busy state ");
6773
6774 return WDI_ProcessRequest( pWDICtx, pEventData );
6775
6776}/*WDI_MainShutdownBusy*/
6777
6778
Jeff Johnsone7245742012-09-05 17:12:55 -07006779/*=======================================================================
6780
Jeff Johnson295189b2012-06-20 16:38:30 -07006781 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006782
Jeff Johnson295189b2012-06-20 16:38:30 -07006783*=======================================================================*/
6784
6785/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006786 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006787========================================================================*/
6788/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006791
6792 @param pWDICtx: pointer to the WLAN DAL context
6793 pEventData: pointer to the event information structure
6794
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 @see
6796 @return Result of the function call
6797*/
6798WDI_Status
6799WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006800(
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 WDI_ControlBlockType* pWDICtx,
6802 WDI_EventInfoType* pEventData
6803)
6804{
6805 WDI_StartReqParamsType* pwdiStartParams = NULL;
6806 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 wpt_uint16 usDataOffset = 0;
6809 wpt_uint16 usSendSize = 0;
6810
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 tHalMacStartReqMsg halStartReq;
6812 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6814
6815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 -------------------------------------------------------------------------*/
6818 if (( NULL == pEventData ) ||
6819 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6820 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6821 {
6822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 }
6827
6828 /*-----------------------------------------------------------------------
6829 Get message buffer
6830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006831 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 pwdiStartParams->usConfigBufferLen;
6833
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 usLen,
6836 &pSendBuffer, &usDataOffset, &usSendSize))||
6837 ( usSendSize < (usDataOffset + usLen )))
6838 {
6839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6840 "Unable to get send buffer in start req %x %x %x",
6841 pEventData, pwdiStartParams, wdiStartRspCb);
6842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006844 }
6845
6846 /*-----------------------------------------------------------------------
6847 Fill in the message
6848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 halStartReq.startReqParams.driverType =
6850 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006851
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 halStartReq.startReqParams.uConfigBufferLen =
6853 pwdiStartParams->usConfigBufferLen;
6854 wpalMemoryCopy( pSendBuffer+usDataOffset,
6855 &halStartReq.startReqParams,
6856 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006857
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 usDataOffset += sizeof(halStartReq.startReqParams);
6859 wpalMemoryCopy( pSendBuffer+usDataOffset,
6860 pwdiStartParams->pConfigBuffer,
6861 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006862
6863 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006864 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006865
6866 /*Save Low Level Ind CB and associated user data - it will be used further
6867 on when an indication is coming from the lower MAC*/
6868 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006870
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006875 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006876 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6877
Jeff Johnsone7245742012-09-05 17:12:55 -07006878
Jeff Johnson295189b2012-06-20 16:38:30 -07006879}/*WDI_ProcessStartReq*/
6880
6881/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006884
6885 @param pWDICtx: pointer to the WLAN DAL context
6886 pEventData: pointer to the event information structure
6887
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 @see
6889 @return Result of the function call
6890*/
6891WDI_Status
6892WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006893(
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 WDI_ControlBlockType* pWDICtx,
6895 WDI_EventInfoType* pEventData
6896)
6897{
6898 WDI_StopReqParamsType* pwdiStopParams = NULL;
6899 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 wpt_uint16 usDataOffset = 0;
6902 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006903 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006904 tHalMacStopReqMsg halStopReq;
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 == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6912 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6913 {
6914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006917 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 }
6919
6920 /*-----------------------------------------------------------------------
6921 Get message buffer
6922 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 sizeof(halStopReq.stopReqParams),
6925 &pSendBuffer, &usDataOffset, &usSendSize))||
6926 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6927 {
6928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6929 "Unable to get send buffer in stop req %x %x %x",
6930 pEventData, pwdiStopParams, wdiStopRspCb);
6931 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006932 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006933 }
6934
6935 /*-----------------------------------------------------------------------
6936 Fill in the message
6937 -----------------------------------------------------------------------*/
6938 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6939 pwdiStopParams->wdiStopReason);
6940
Jeff Johnsone7245742012-09-05 17:12:55 -07006941 wpalMemoryCopy( pSendBuffer+usDataOffset,
6942 &halStopReq.stopReqParams,
6943 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006944
6945 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006946 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006947
6948 /*! TO DO: stop the data services */
6949 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6950 {
6951 /*Stop the STA Table !UT- check this logic again
6952 It is safer to do it here than on the response - because a stop is imminent*/
6953 WDI_STATableStop(pWDICtx);
6954
6955 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006956 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6957 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 {
6959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6960 "WDI Init failed to reset power state event");
6961
Jeff Johnsone7245742012-09-05 17:12:55 -07006962 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006963 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 }
6965 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006966 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6967 if( eWLAN_PAL_STATUS_SUCCESS != status )
6968 {
6969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6970 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6971 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006972 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006973 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006975 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006976 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006977 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6978 WDI_SET_POWER_STATE_TIMEOUT);
6979 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 {
6981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6982 "WDI Init failed to wait on an event");
6983
Jeff Johnsone7245742012-09-05 17:12:55 -07006984 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006985 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 }
6987 }
6988
6989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6994
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006995fail:
6996 // Release the message buffer so we don't leak
6997 wpalMemoryFree(pSendBuffer);
6998
6999failRequest:
7000 //WDA should have failure check to avoid the memory leak
7001 return WDI_STATUS_E_FAILURE;
7002
Jeff Johnson295189b2012-06-20 16:38:30 -07007003}/*WDI_ProcessStopReq*/
7004
7005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007008
7009 @param pWDICtx: pointer to the WLAN DAL context
7010 pEventData: pointer to the event information structure
7011
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 @see
7013 @return Result of the function call
7014*/
7015WDI_Status
7016WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007017(
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 WDI_ControlBlockType* pWDICtx,
7019 WDI_EventInfoType* pEventData
7020)
7021{
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7024
7025 /*Lock control block for cleanup*/
7026 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007027
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 /*Clear all pending request*/
7029 WDI_ClearPendingRequests(pWDICtx);
7030
7031 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007033
7034 /* Close Data transport*/
7035 /* FTM mode does not open Data Path */
7036 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7037 {
7038 WDTS_Close(pWDICtx);
7039 }
7040
7041 /*Close the STA Table !UT- check this logic again*/
7042 WDI_STATableClose(pWDICtx);
7043
7044 /*close the PAL */
7045 wptStatus = wpalClose(pWDICtx->pPALContext);
7046 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7047 {
7048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7049 "Failed to wpal Close %d", wptStatus);
7050 WDI_ASSERT(0);
7051 }
7052
7053 /*Transition back to init state*/
7054 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7055
7056 wpalMutexRelease(&pWDICtx->wptMutex);
7057
7058 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007059 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007060
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062}/*WDI_ProcessCloseReq*/
7063
7064
7065/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007067===========================================================================*/
7068
7069/**
7070 @brief Process Init Scan Request function (called when Main FSM
7071 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007072
7073 @param pWDICtx: pointer to the WLAN DAL context
7074 pEventData: pointer to the event information structure
7075
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 @see
7077 @return Result of the function call
7078*/
7079WDI_Status
7080WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007081(
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 WDI_ControlBlockType* pWDICtx,
7083 WDI_EventInfoType* pEventData
7084)
7085{
7086 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7087 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 wpt_uint16 usDataOffset = 0;
7090 wpt_uint16 usSendSize = 0;
7091 wpt_uint8 i = 0;
7092
7093 tHalInitScanReqMsg halInitScanReqMsg;
7094
Jeff Johnsone7245742012-09-05 17:12:55 -07007095 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 * It shold be removed once host and riva changes are in sync*/
7097 tHalInitScanConReqMsg halInitScanConReqMsg;
7098
7099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7100
7101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 -------------------------------------------------------------------------*/
7104 if (( NULL == pEventData ) ||
7105 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7106 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7107 {
7108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 }
7113
7114#if 0
7115 wpalMutexAcquire(&pWDICtx->wptMutex);
7116 /*-----------------------------------------------------------------------
7117 Check to see if SCAN is already in progress - if so reject the req
7118 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 -----------------------------------------------------------------------*/
7121 if ( pWDICtx->bScanInProgress )
7122 {
7123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7124 "Scan is already in progress - subsequent scan is not allowed"
7125 " until the first scan completes");
7126
7127 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 }
7130
Jeff Johnsone7245742012-09-05 17:12:55 -07007131 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7132 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007133
7134 wpalMutexRelease(&pWDICtx->wptMutex);
7135#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007136 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007139 * It shold be removed once host and riva changes are in sync*/
7140 /*-----------------------------------------------------------------------
7141 Get message buffer
7142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007144 sizeof(halInitScanConReqMsg.initScanParams),
7145 &pSendBuffer, &usDataOffset, &usSendSize))||
7146 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7147 {
7148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7149 "Unable to get send buffer in init scan req %x %x %x",
7150 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 }
7154
7155
7156 /*-----------------------------------------------------------------------
7157 Fill in the message
7158 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7161
7162 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7163 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7164
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7171
7172 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7173 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7174
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7176 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007177
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7180
7181 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7182 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7185 }
7186
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 wpalMemoryCopy( pSendBuffer+usDataOffset,
7188 &halInitScanConReqMsg.initScanParams,
7189 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007190 }
7191 else
7192 {
7193 /*-----------------------------------------------------------------------
7194 Get message buffer
7195 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 sizeof(halInitScanReqMsg.initScanParams),
7198 &pSendBuffer, &usDataOffset, &usSendSize))||
7199 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7200 {
7201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7202 "Unable to get send buffer in init scan req %x %x %x",
7203 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 }
7207
7208
7209 /*-----------------------------------------------------------------------
7210 Fill in the message
7211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007213 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7214
7215 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7216 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7217
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7224
7225 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7226 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7227
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7230
7231 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7232 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7235 }
7236
Jeff Johnsone7245742012-09-05 17:12:55 -07007237 wpalMemoryCopy( pSendBuffer+usDataOffset,
7238 &halInitScanReqMsg.initScanParams,
7239 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 }
7241
7242 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007244
7245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7250
7251}/*WDI_ProcessInitScanReq*/
7252
7253/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007256
7257 @param pWDICtx: pointer to the WLAN DAL context
7258 pEventData: pointer to the event information structure
7259
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 @see
7261 @return Result of the function call
7262*/
7263WDI_Status
7264WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007265(
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 WDI_ControlBlockType* pWDICtx,
7267 WDI_EventInfoType* pEventData
7268)
7269{
7270 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7271 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 wpt_uint16 usDataOffset = 0;
7274 wpt_uint16 usSendSize = 0;
7275
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7278
7279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007281 -------------------------------------------------------------------------*/
7282 if (( NULL == pEventData ) ||
7283 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7284 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7285 {
7286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 }
7291
7292#if 0
7293 wpalMutexAcquire(&pWDICtx->wptMutex);
7294 /*-----------------------------------------------------------------------
7295 Check to see if SCAN is already in progress - start scan is only
7296 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7301 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7302 {
7303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7304 "Scan start not allowed in this state %d %d",
7305 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007306
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 }
7310
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007312
7313 wpalMutexRelease(&pWDICtx->wptMutex);
7314#endif
7315
7316 /*-----------------------------------------------------------------------
7317 Get message buffer
7318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 sizeof(halStartScanReqMsg.startScanParams),
7321 &pSendBuffer, &usDataOffset, &usSendSize))||
7322 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7323 {
7324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7325 "Unable to get send buffer in start scan req %x %x %x",
7326 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 }
7330
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 wpalMemoryCopy( pSendBuffer+usDataOffset,
7334 &halStartScanReqMsg.startScanParams,
7335 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007336
7337 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007339
7340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007343 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7345}/*WDI_ProcessStartScanReq*/
7346
7347
7348/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007351
7352 @param pWDICtx: pointer to the WLAN DAL context
7353 pEventData: pointer to the event information structure
7354
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 @see
7356 @return Result of the function call
7357*/
7358WDI_Status
7359WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007360(
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 WDI_ControlBlockType* pWDICtx,
7362 WDI_EventInfoType* pEventData
7363)
7364{
7365 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7366 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 wpt_uint16 usDataOffset = 0;
7369 wpt_uint16 usSendSize = 0;
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7373
7374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 -------------------------------------------------------------------------*/
7377 if (( NULL == pEventData ) ||
7378 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7379 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7380 {
7381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 }
7386
Jeff Johnsone7245742012-09-05 17:12:55 -07007387 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7388 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 * forwarded to HAL and result in hang*/
7390#if 0
7391 wpalMutexAcquire(&pWDICtx->wptMutex);
7392 /*-----------------------------------------------------------------------
7393 Check to see if SCAN is already in progress - end scan is only
7394 allowed when a scan is ongoing and the state of the scan procedure
7395 is started
7396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7399 {
7400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7401 "End start not allowed in this state %d %d",
7402 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007403
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 }
7407
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007409
7410 wpalMutexRelease(&pWDICtx->wptMutex);
7411#endif
7412
7413 /*-----------------------------------------------------------------------
7414 Get message buffer
7415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 sizeof(halEndScanReqMsg.endScanParams),
7418 &pSendBuffer, &usDataOffset, &usSendSize))||
7419 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7420 {
7421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7422 "Unable to get send buffer in start scan req %x %x %x",
7423 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 }
7427
7428 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7429
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 wpalMemoryCopy( pSendBuffer+usDataOffset,
7431 &halEndScanReqMsg.endScanParams,
7432 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007433
7434 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007436
7437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007441 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7442}/*WDI_ProcessEndScanReq*/
7443
7444
7445/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007448
7449 @param pWDICtx: pointer to the WLAN DAL context
7450 pEventData: pointer to the event information structure
7451
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 @see
7453 @return Result of the function call
7454*/
7455WDI_Status
7456WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007457(
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 WDI_ControlBlockType* pWDICtx,
7459 WDI_EventInfoType* pEventData
7460)
7461{
7462 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7463 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 wpt_uint16 usDataOffset = 0;
7466 wpt_uint16 usSendSize = 0;
7467 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007468 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7471
7472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 -------------------------------------------------------------------------*/
7475 if (( NULL == pEventData ) ||
7476 ( NULL == pEventData->pEventData) ||
7477 ( NULL == pEventData->pCBfnc))
7478 {
7479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 }
7484
7485 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7486 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007487 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7488 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 * forwarded to HAL and result in hang*/
7490#if 0
7491 wpalMutexAcquire(&pWDICtx->wptMutex);
7492 /*-----------------------------------------------------------------------
7493 Check to see if SCAN is already in progress
7494 Finish scan gets invoked any scan states. ie. abort scan
7495 It should be allowed in any states.
7496 -----------------------------------------------------------------------*/
7497 if ( !pWDICtx->bScanInProgress )
7498 {
7499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7500 "Finish start not allowed in this state %d",
7501 pWDICtx->bScanInProgress );
7502
7503 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 }
7506
7507 /*-----------------------------------------------------------------------
7508 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7512 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 wpalMutexRelease(&pWDICtx->wptMutex);
7514#endif
7515
7516 if ( pWDICtx->bInBmps )
7517 {
7518 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007519 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7520 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7521 {
7522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7523 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7524 WDI_ASSERT(0);
7525 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 }
7527
7528 /*-----------------------------------------------------------------------
7529 Get message buffer
7530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 sizeof(halFinishScanReqMsg.finishScanParams),
7533 &pSendBuffer, &usDataOffset, &usSendSize))||
7534 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7535 {
7536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7537 "Unable to get send buffer in start scan req %x %x %x",
7538 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 }
7542
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7545
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7551
7552 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7553 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7554
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7561
Jeff Johnsone7245742012-09-05 17:12:55 -07007562 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7564
7565 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7566 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7569 }
7570
7571 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7572 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7573
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 wpalMemoryCopy( pSendBuffer+usDataOffset,
7575 &halFinishScanReqMsg.finishScanParams,
7576 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007577
7578 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007580
7581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007585 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7586}/*WDI_ProcessFinishScanReq*/
7587
7588
7589/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007591==========================================================================*/
7592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 @brief Process BSS Join for a given Session
7594
7595 @param pWDICtx: pointer to the WLAN DAL context
7596 pEventData: pointer to the event information structure
7597
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 @see
7599 @return Result of the function call
7600*/
7601WDI_Status
7602WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007603(
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 WDI_ControlBlockType* pWDICtx,
7605 WDI_JoinReqParamsType* pwdiJoinParams,
7606 WDI_JoinRspCb wdiJoinRspCb,
7607 void* pUserData
7608)
7609{
7610 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 wpt_uint16 usDataOffset = 0;
7613 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007615
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7618
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007619 wpalMutexAcquire(&pWDICtx->wptMutex);
7620
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 /*------------------------------------------------------------------------
7622 Check to see if we have any session with this BSSID already stored, we
7623 should not
7624 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007625 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7626 pwdiJoinParams->wdiReqInfo.macBSSID,
7627 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007628
7629 if ( NULL != pBSSSes )
7630 {
7631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007632 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7633 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007634
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007635 /*reset the bAssociationInProgress otherwise the next
7636 *join request will be queued*/
7637 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7638 wpalMutexRelease(&pWDICtx->wptMutex);
7639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 }
7641
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007645 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 if ( NULL == pBSSSes )
7647 {
7648
7649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7650 "DAL has no free sessions - cannot run another join");
7651
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007652 /*reset the bAssociationInProgress otherwise the next
7653 *join request will be queued*/
7654 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 }
7658
7659 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7661 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 WDI_MAC_ADDR_LEN);
7663
7664 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007665 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007667
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 wpalMutexRelease(&pWDICtx->wptMutex);
7669
7670 /*-----------------------------------------------------------------------
7671 Get message buffer
7672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 sizeof(halJoinReqMsg.joinReqParams),
7675 &pSendBuffer, &usDataOffset, &usSendSize))||
7676 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7677 {
7678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7679 "Unable to get send buffer in join req %x %x %x",
7680 pUserData, pwdiJoinParams, wdiJoinRspCb);
7681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 }
7684
7685 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007687
7688 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007689 pwdiJoinParams->wdiReqInfo.macSTASelf,
7690 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007691
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7694
7695 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7696
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007697#ifdef WLAN_FEATURE_VOWIFI
7698 halJoinReqMsg.joinReqParams.maxTxPower =
7699 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7700#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7703#endif
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7707 wdiSecondaryChannelOffset);
7708
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 wpalMemoryCopy( pSendBuffer+usDataOffset,
7710 &halJoinReqMsg.joinReqParams,
7711 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007712
7713 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7720 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007721
7722}/*WDI_ProcessBSSSessionJoinReq*/
7723
7724/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007727
7728 @param pWDICtx: pointer to the WLAN DAL context
7729 pEventData: pointer to the event information structure
7730
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 @see
7732 @return Result of the function call
7733*/
7734WDI_Status
7735WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007736(
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 WDI_ControlBlockType* pWDICtx,
7738 WDI_EventInfoType* pEventData
7739)
7740{
7741 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7742 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7743 WDI_JoinRspCb wdiJoinRspCb = NULL;
7744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7745
7746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 -------------------------------------------------------------------------*/
7749 if (( NULL == pEventData ) ||
7750 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7751 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7752 {
7753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007758
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 /*-------------------------------------------------------------------------
7760 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 -------------------------------------------------------------------------*/
7763 wpalMutexAcquire(&pWDICtx->wptMutex);
7764
7765 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7766 {
7767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7768 "Association is currently in progress, queueing new join req");
7769
7770 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 pwdiJoinParams->wdiReqInfo.macBSSID);
7773
7774 wpalMutexRelease(&pWDICtx->wptMutex);
7775
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 }
7778
7779 /*Starting a new association */
7780 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7781 wpalMutexRelease(&pWDICtx->wptMutex);
7782
7783 /*Process the Join Request*/
7784 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7785 wdiJoinRspCb,pEventData->pUserData);
7786
7787}/*WDI_ProcessJoinReq*/
7788
7789
7790/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007793
7794 @param pWDICtx: pointer to the WLAN DAL context
7795 pEventData: pointer to the event information structure
7796
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 @see
7798 @return Result of the function call
7799*/
7800WDI_Status
7801WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007802(
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 WDI_ControlBlockType* pWDICtx,
7804 WDI_EventInfoType* pEventData
7805)
7806{
7807 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7808 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007809 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 wpt_uint16 uMsgSize = 0;
7812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 wpt_uint16 usDataOffset = 0;
7814 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007816
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7819
7820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 -------------------------------------------------------------------------*/
7823 if (( NULL == pEventData ) ||
7824 ( NULL == pEventData->pEventData ) ||
7825 ( NULL == pEventData->pCBfnc ))
7826 {
7827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 }
7832
7833 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7834 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7835 /*-------------------------------------------------------------------------
7836 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007838 -------------------------------------------------------------------------*/
7839 wpalMutexAcquire(&pWDICtx->wptMutex);
7840
7841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7845 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7846 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007847
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 {
7850#ifdef WLAN_FEATURE_VOWIFI_11R
7851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 if ( NULL == pBSSSes )
7856 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007857
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7859 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007860
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007864
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7867 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007869
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7873#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 * Request in case of IBSS*/
7876 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7877 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7878 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7879 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7880 {
7881 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 if ( NULL == pBSSSes )
7886 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007887
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7889 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007890
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007894
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7897 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007899
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007901 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007902 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7903 }
7904 else
7905 {
7906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7908 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7909 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7910
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 /* for IBSS testing */
7912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 }
7915#endif
7916 }
7917
7918 /*------------------------------------------------------------------------
7919 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 ------------------------------------------------------------------------*/
7922 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7923 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7925 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7926 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7927 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007930
7931 wpalMutexRelease(&pWDICtx->wptMutex);
7932
Jeff Johnsone7245742012-09-05 17:12:55 -07007933 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 }
7935
7936 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7938 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 sizeof(pWDICtx->wdiCachedConfigBssReq));
7940
7941 wpalMutexRelease(&pWDICtx->wptMutex);
7942
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7944#ifdef WLAN_FEATURE_11AC
7945 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007946 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 else
7948#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007949 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007950
7951 /*-----------------------------------------------------------------------
7952 Get message buffer
7953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7956 ( usSendSize < (usDataOffset + uMsgSize )))
7957 {
7958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7959 "Unable to get send buffer in config bss req %x %x %x",
7960 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 }
7964
7965 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007966#ifdef WLAN_FEATURE_11AC
7967 if (WDI_getFwWlanFeatCaps(DOT11AC))
7968 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7969 &pwdiConfigBSSParams->wdiReqInfo);
7970 else
7971#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 &pwdiConfigBSSParams->wdiReqInfo);
7974
7975 /* Need to fill in the STA Index to invalid, since at this point we have not
7976 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007978
7979 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7981
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007982#ifdef WLAN_FEATURE_11AC
7983 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7984 wpalMemoryCopy( pSendBuffer+usDataOffset,
7985 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7986 uMsgSize);
7987 }else
7988#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007989 {
7990 if ( uMsgSize <= sizeof(tConfigBssParams) )
7991 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007992 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007993 &halConfigBssReqMsg.uBssParams.configBssParams,
7994 uMsgSize);
7995 }
7996 else
7997 {
7998 return WDI_STATUS_E_FAILURE;
7999 }
8000 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008001
8002 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
8005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8009 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 WDI_CONFIG_BSS_RESP);
8011
8012}/*WDI_ProcessConfigBSSReq*/
8013
8014
8015/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008018
8019 @param pWDICtx: pointer to the WLAN DAL context
8020 pEventData: pointer to the event information structure
8021
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 @see
8023 @return Result of the function call
8024*/
8025WDI_Status
8026WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008027(
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 WDI_ControlBlockType* pWDICtx,
8029 WDI_EventInfoType* pEventData
8030)
8031{
8032 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8033 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 wpt_uint16 usDataOffset = 0;
8038 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008040
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8043
8044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 -------------------------------------------------------------------------*/
8047 if (( NULL == pEventData ) ||
8048 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8049 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8050 {
8051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 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 /*-------------------------------------------------------------------------
8058 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 -------------------------------------------------------------------------*/
8061 wpalMutexAcquire(&pWDICtx->wptMutex);
8062
8063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8067 pwdiDelBSSParams->ucBssIdx,
8068 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008069
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 {
8072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 "%s: BSS does not yet exist. ucBssIdx %d",
8074 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008075
8076 wpalMutexRelease(&pWDICtx->wptMutex);
8077
8078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008080
8081 /*------------------------------------------------------------------------
8082 Check if this BSS is being currently processed or queued,
8083 if queued - queue the new request as well
8084 ------------------------------------------------------------------------*/
8085 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8088 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8089 __func__, pwdiDelBSSParams->ucBssIdx);
8090
8091 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8092
8093 wpalMutexRelease(&pWDICtx->wptMutex);
8094
8095 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008097
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 /*-----------------------------------------------------------------------
8099 If we receive a Del BSS request for an association that is already in
8100 progress, it indicates that the assoc has failed => we no longer have
8101 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 -----------------------------------------------------------------------*/
8104 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8105 {
8106 /*We can switch to false here because even if a subsequent Join comes in
8107 it will only be processed when DAL transitions out of BUSY state which
8108 happens when the Del BSS request comes */
8109 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8110
8111 /*Former association is complete - prepare next pending assoc for
8112 processing */
8113 WDI_DequeueAssocRequest(pWDICtx);
8114 }
8115
8116 wpalMutexRelease(&pWDICtx->wptMutex);
8117 /*-----------------------------------------------------------------------
8118 Get message buffer
8119 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008121 sizeof(halBssReqMsg.deleteBssParams),
8122 &pSendBuffer, &usDataOffset, &usSendSize))||
8123 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8124 {
8125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8126 "Unable to get send buffer in start req %x %x %x",
8127 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 }
8131
8132 /*Fill in the message request structure*/
8133
8134 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008135 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 wpalMemoryCopy( pSendBuffer+usDataOffset,
8138 &halBssReqMsg.deleteBssParams,
8139 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008140
8141 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008143
Jeff Johnsone7245742012-09-05 17:12:55 -07008144
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8150
Jeff Johnsone7245742012-09-05 17:12:55 -07008151
Jeff Johnson295189b2012-06-20 16:38:30 -07008152}/*WDI_ProcessDelBSSReq*/
8153
8154/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008157
8158 @param pWDICtx: pointer to the WLAN DAL context
8159 pEventData: pointer to the event information structure
8160
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 @see
8162 @return Result of the function call
8163*/
8164WDI_Status
8165WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008166(
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 WDI_ControlBlockType* pWDICtx,
8168 WDI_EventInfoType* pEventData
8169)
8170{
8171 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8172 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 wpt_uint16 usDataOffset = 0;
8177 wpt_uint16 usSendSize = 0;
8178 wpt_uint16 uMsgSize = 0;
8179 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8184
8185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 -------------------------------------------------------------------------*/
8188 if (( NULL == pEventData ) ||
8189 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8190 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8191 {
8192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 }
8197
8198 /*-------------------------------------------------------------------------
8199 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 -------------------------------------------------------------------------*/
8202 wpalMutexAcquire(&pWDICtx->wptMutex);
8203
8204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8208 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8209 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008210
8211 if ( NULL == pBSSSes )
8212 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8214 "%s: Association sequence for this BSS does not yet exist - "
8215 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8216 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008217
8218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 }
8221
8222 /*------------------------------------------------------------------------
8223 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 ------------------------------------------------------------------------*/
8226 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8227 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8229 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8230 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008231
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008233
8234 wpalMutexRelease(&pWDICtx->wptMutex);
8235
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 }
8238
8239 /*-----------------------------------------------------------------------
8240 If Post Assoc was not yet received - the current association must
8241 be in progress
8242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8245 {
8246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8247 "Association sequence for this BSS association no longer in "
8248 "progress - not allowed");
8249
8250 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 }
8253
8254 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 -----------------------------------------------------------------------*/
8257 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8258 {
8259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8260 "Post Assoc not allowed before JOIN - failing request");
8261
8262 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 }
8265
8266 wpalMutexRelease(&pWDICtx->wptMutex);
8267
8268 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8269 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8270 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8275 ( usSendSize < (usDataOffset + uMsgSize )))
8276 {
8277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8278 "Unable to get send buffer in start req %x %x %x",
8279 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 }
8283
8284 /*Copy the STA parameters */
8285 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8286 &pwdiPostAssocParams->wdiSTAParams );
8287
8288 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 WDI_STATableFindStaidByAddr(pWDICtx,
8291 pwdiPostAssocParams->wdiSTAParams.macSTA,
8292 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8293 {
8294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8295 "This station does not exist in the WDI Station Table %d");
8296 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008297 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 }
8300
8301 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 pBSSSes->ucBSSIdx;
8304
8305 /*Copy the BSS parameters */
8306 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8307 &pwdiPostAssocParams->wdiBSSParams);
8308
8309 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 WDI_STATableFindStaidByAddr(pWDICtx,
8312 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008313 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8316 "This station does not exist in the WDI Station Table %d");
8317 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008318 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 }
8321
8322 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 pBSSSes->ucBSSIdx;
8325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326
8327 wpalMemoryCopy( pSendBuffer+usDataOffset,
8328 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8329 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008330
8331 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8332
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8334 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8335 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008336
Jeff Johnsone7245742012-09-05 17:12:55 -07008337
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340
Jeff Johnsone7245742012-09-05 17:12:55 -07008341
8342 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008345
8346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8351
Jeff Johnsone7245742012-09-05 17:12:55 -07008352
Jeff Johnson295189b2012-06-20 16:38:30 -07008353}/*WDI_ProcessPostAssocReq*/
8354
8355/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008358
8359 @param pWDICtx: pointer to the WLAN DAL context
8360 pEventData: pointer to the event information structure
8361
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 @see
8363 @return Result of the function call
8364*/
8365WDI_Status
8366WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008367(
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 WDI_ControlBlockType* pWDICtx,
8369 WDI_EventInfoType* pEventData
8370)
8371{
8372 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8373 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 wpt_uint16 usDataOffset = 0;
8378 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8381
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8384
8385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 -------------------------------------------------------------------------*/
8388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8389 ( NULL == pEventData->pCBfnc ))
8390 {
8391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 }
8396
8397 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8398 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8399 /*-------------------------------------------------------------------------
8400 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 -------------------------------------------------------------------------*/
8403 wpalMutexAcquire(&pWDICtx->wptMutex);
8404
8405 /*------------------------------------------------------------------------
8406 Find the BSS for which the request is made and identify WDI session
8407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8409 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 &macBSSID))
8411 {
8412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8413 "This station does not exist in the WDI Station Table %d");
8414 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 }
8417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8419 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8422 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8423 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
8425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 }
8428
8429 /*------------------------------------------------------------------------
8430 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 ------------------------------------------------------------------------*/
8433 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8434 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8436 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8437 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008438
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 }
8443
8444 wpalMutexRelease(&pWDICtx->wptMutex);
8445 /*-----------------------------------------------------------------------
8446 Get message buffer
8447 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 sizeof(halDelStaReqMsg.delStaParams),
8450 &pSendBuffer, &usDataOffset, &usSendSize))||
8451 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8452 {
8453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8454 "Unable to get send buffer in start req %x %x %x",
8455 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 }
8459
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8461 wpalMemoryCopy( pSendBuffer+usDataOffset,
8462 &halDelStaReqMsg.delStaParams,
8463 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008464
8465 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
8468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8473
8474}/*WDI_ProcessDelSTAReq*/
8475
8476
8477/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008479==========================================================================*/
8480/**
8481 @brief Process Set BSS Key Request function (called when Main FSM
8482 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008483
8484 @param pWDICtx: pointer to the WLAN DAL context
8485 pEventData: pointer to the event information structure
8486
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 @see
8488 @return Result of the function call
8489*/
8490WDI_Status
8491WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008492(
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 WDI_ControlBlockType* pWDICtx,
8494 WDI_EventInfoType* pEventData
8495)
8496{
8497 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8498 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 wpt_uint16 usDataOffset = 0;
8503 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8506 wpt_uint8 keyIndex = 0;
8507
8508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8509
8510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 -------------------------------------------------------------------------*/
8513 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8514 ( NULL == pEventData->pCBfnc ))
8515 {
8516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 }
8521
8522 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8523 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8524 /*-------------------------------------------------------------------------
8525 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 -------------------------------------------------------------------------*/
8528 wpalMutexAcquire(&pWDICtx->wptMutex);
8529
8530 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8534 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8535 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008536
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 {
8539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8541 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008542
8543 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 }
8546
8547 /*------------------------------------------------------------------------
8548 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 ------------------------------------------------------------------------*/
8551 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8552 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8554 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8555 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008556
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 }
8561
8562
8563 wpalMutexRelease(&pWDICtx->wptMutex);
8564 /*-----------------------------------------------------------------------
8565 Get message buffer
8566 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8569 &pSendBuffer, &usDataOffset, &usSendSize))||
8570 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8571 {
8572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8573 "Unable to get send buffer in set bss key req %x %x %x",
8574 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 }
8578
8579 /*-----------------------------------------------------------------------
8580 Copy the Key parameters into the HAL message
8581 -----------------------------------------------------------------------*/
8582
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8587
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8590
8591 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8592 keyIndex++)
8593 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8596 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8597 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8598 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8599 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8600 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8607 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 WDI_MAX_KEY_LENGTH);
8610 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008611
8612 wpalMemoryCopy( pSendBuffer+usDataOffset,
8613 &halSetBssKeyReqMsg.setBssKeyParams,
8614 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008615
8616 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008618
8619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8623 wdiSetBSSKeyRspCb, pEventData->pUserData,
8624 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008625
8626}/*WDI_ProcessSetBssKeyReq*/
8627
8628/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008631
8632 @param pWDICtx: pointer to the WLAN DAL context
8633 pEventData: pointer to the event information structure
8634
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 @see
8636 @return Result of the function call
8637*/
8638WDI_Status
8639WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008640(
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 WDI_ControlBlockType* pWDICtx,
8642 WDI_EventInfoType* pEventData
8643)
8644{
8645 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8646 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 wpt_uint16 usDataOffset = 0;
8651 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8655
8656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 -------------------------------------------------------------------------*/
8659 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8660 ( NULL == pEventData->pCBfnc ))
8661 {
8662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 }
8667
8668 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8669 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8670 /*-------------------------------------------------------------------------
8671 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 -------------------------------------------------------------------------*/
8674 wpalMutexAcquire(&pWDICtx->wptMutex);
8675
8676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8680 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8681 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008682
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 {
8685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8687 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008688
8689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 }
8692
8693 /*------------------------------------------------------------------------
8694 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 ------------------------------------------------------------------------*/
8697 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8698 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8700 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8701 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 }
8707
8708
8709 wpalMutexRelease(&pWDICtx->wptMutex);
8710
8711 /*-----------------------------------------------------------------------
8712 Get message buffer
8713 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8716 &pSendBuffer, &usDataOffset, &usSendSize))||
8717 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8718 {
8719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8720 "Unable to get send buffer in set bss key req %x %x %x",
8721 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 }
8725 /*-----------------------------------------------------------------------
8726 Copy the Key parameters into the HAL message
8727 -----------------------------------------------------------------------*/
8728 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8729
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8732
8733 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8737
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 wpalMemoryCopy( pSendBuffer+usDataOffset,
8739 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8740 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008741
8742 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008744
8745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008751}/*WDI_ProcessRemoveBssKeyReq*/
8752
8753/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008756
8757 @param pWDICtx: pointer to the WLAN DAL context
8758 pEventData: pointer to the event information structure
8759
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 @see
8761 @return Result of the function call
8762*/
8763WDI_Status
8764WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008765(
Jeff Johnson295189b2012-06-20 16:38:30 -07008766 WDI_ControlBlockType* pWDICtx,
8767 WDI_EventInfoType* pEventData
8768)
8769{
8770 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8771 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8772 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 wpt_uint16 usDataOffset = 0;
8775 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8780 wpt_uint8 keyIndex = 0;
8781
8782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8783
8784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 -------------------------------------------------------------------------*/
8787 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8788 ( NULL == pEventData->pCBfnc ))
8789 {
8790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 }
8795
8796 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8797 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8798 /*-------------------------------------------------------------------------
8799 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 -------------------------------------------------------------------------*/
8802 wpalMutexAcquire(&pWDICtx->wptMutex);
8803
8804 /*------------------------------------------------------------------------
8805 Find the BSS for which the request is made and identify WDI session
8806 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8808 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 &macBSSID))
8810 {
8811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8812 "This station does not exist in the WDI Station Table %d");
8813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 }
8816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8818 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8821 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8822 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
8824 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008827
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 /*------------------------------------------------------------------------
8829 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 ------------------------------------------------------------------------*/
8832 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8833 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8835 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8836 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008837
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 }
8842
8843
8844 wpalMutexRelease(&pWDICtx->wptMutex);
8845 /*-----------------------------------------------------------------------
8846 Get message buffer
8847 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008848 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8850 &pSendBuffer, &usDataOffset, &usSendSize))||
8851 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8852 {
8853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8854 "Unable to get send buffer in set bss key req %x %x %x",
8855 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 }
8859 /*-----------------------------------------------------------------------
8860 Copy the STA Key parameters into the HAL message
8861 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8864
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8867
8868 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8869
8870 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8871
8872 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8873
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8875 keyIndex++)
8876 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8879 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8880 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8881 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8882 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8883 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8890 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 WDI_MAX_KEY_LENGTH);
8893 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008894
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 wpalMemoryCopy( pSendBuffer+usDataOffset,
8896 &halSetStaKeyReqMsg.setStaKeyParams,
8897 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008898
8899 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008901
8902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8906 wdiSetSTAKeyRspCb, pEventData->pUserData,
8907 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008908
8909}/*WDI_ProcessSetSTAKeyReq*/
8910
8911/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008914
8915 @param pWDICtx: pointer to the WLAN DAL context
8916 pEventData: pointer to the event information structure
8917
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 @see
8919 @return Result of the function call
8920*/
8921WDI_Status
8922WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008923(
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 WDI_ControlBlockType* pWDICtx,
8925 WDI_EventInfoType* pEventData
8926)
8927{
8928 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8929 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8930 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 wpt_uint16 usDataOffset = 0;
8933 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 wpt_macAddr macBSSID;
8936 wpt_uint8 ucCurrentBSSSesIdx;
8937 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8939
8940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 -------------------------------------------------------------------------*/
8943 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8944 ( NULL == pEventData->pCBfnc ))
8945 {
8946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 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 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8953 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8954 /*-------------------------------------------------------------------------
8955 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 -------------------------------------------------------------------------*/
8958 wpalMutexAcquire(&pWDICtx->wptMutex);
8959
8960 /*------------------------------------------------------------------------
8961 Find the BSS for which the request is made and identify WDI session
8962 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8964 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 &macBSSID))
8966 {
8967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8968 "This station does not exist in the WDI Station Table %d");
8969 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 }
8972
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8974 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8977 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8978 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008979
8980 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008983
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 /*------------------------------------------------------------------------
8985 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 ------------------------------------------------------------------------*/
8988 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8989 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8991 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8992 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008993
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 }
8998
8999
9000
9001 wpalMutexRelease(&pWDICtx->wptMutex);
9002 /*-----------------------------------------------------------------------
9003 Get message buffer
9004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9007 &pSendBuffer, &usDataOffset, &usSendSize))||
9008 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9009 {
9010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9011 "Unable to get send buffer in set bss key req %x %x %x",
9012 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 }
9016
9017 /*-----------------------------------------------------------------------
9018 Copy the Key parameters into the HAL message
9019 -----------------------------------------------------------------------*/
9020
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9023
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9026
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9029
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9032
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 wpalMemoryCopy( pSendBuffer+usDataOffset,
9034 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9035 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009036
9037 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009039
9040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009046
9047}/*WDI_ProcessRemoveSTAKeyReq*/
9048
9049/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009052
9053 @param pWDICtx: pointer to the WLAN DAL context
9054 pEventData: pointer to the event information structure
9055
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 @see
9057 @return Result of the function call
9058*/
9059WDI_Status
9060WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009061(
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 WDI_ControlBlockType* pWDICtx,
9063 WDI_EventInfoType* pEventData
9064)
9065{
9066 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9067 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9068 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 wpt_uint16 usDataOffset = 0;
9071 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9076 wpt_uint8 keyIndex = 0;
9077
9078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9079
9080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 -------------------------------------------------------------------------*/
9083 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9084 ( NULL == pEventData->pCBfnc ))
9085 {
9086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 }
9091
9092 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9093 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9094 /*-------------------------------------------------------------------------
9095 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 -------------------------------------------------------------------------*/
9098 wpalMutexAcquire(&pWDICtx->wptMutex);
9099
9100 /*------------------------------------------------------------------------
9101 Find the BSS for which the request is made and identify WDI session
9102 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9104 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 &macBSSID))
9106 {
9107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9108 "This station does not exist in the WDI Station Table %d");
9109 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 }
9112
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9114 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 {
9116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9118 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009119
9120 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009123
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 /*------------------------------------------------------------------------
9125 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 ------------------------------------------------------------------------*/
9128 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9129 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9131 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9132 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009133
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 }
9138
9139
9140 wpalMutexRelease(&pWDICtx->wptMutex);
9141 /*-----------------------------------------------------------------------
9142 Get message buffer
9143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9146 &pSendBuffer, &usDataOffset, &usSendSize))||
9147 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9148 {
9149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9150 "Unable to get send buffer in set bss key req %x %x %x",
9151 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 }
9155 /*-----------------------------------------------------------------------
9156 Copy the STA Key parameters into the HAL message
9157 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9160
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9163
9164 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9165
9166 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9167
9168 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9169
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9171 keyIndex++)
9172 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9175 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9176 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9177 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9178 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9179 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9186 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 WDI_MAX_KEY_LENGTH);
9189 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009190
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 wpalMemoryCopy( pSendBuffer+usDataOffset,
9192 &halSetStaKeyReqMsg.setStaKeyParams,
9193 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009194
9195 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009197
9198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9202 wdiSetSTAKeyRspCb, pEventData->pUserData,
9203 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009204
9205}/*WDI_ProcessSetSTABcastKeyReq*/
9206
9207/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009210
9211 @param pWDICtx: pointer to the WLAN DAL context
9212 pEventData: pointer to the event information structure
9213
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 @see
9215 @return Result of the function call
9216*/
9217WDI_Status
9218WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009219(
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 WDI_ControlBlockType* pWDICtx,
9221 WDI_EventInfoType* pEventData
9222)
9223{
9224 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9225 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9226 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 wpt_uint16 usDataOffset = 0;
9229 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 wpt_macAddr macBSSID;
9232 wpt_uint8 ucCurrentBSSSesIdx;
9233 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9235
9236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 -------------------------------------------------------------------------*/
9239 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9240 ( NULL == pEventData->pCBfnc ))
9241 {
9242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 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 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9249 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9250 /*-------------------------------------------------------------------------
9251 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 -------------------------------------------------------------------------*/
9254 wpalMutexAcquire(&pWDICtx->wptMutex);
9255
9256 /*------------------------------------------------------------------------
9257 Find the BSS for which the request is made and identify WDI session
9258 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9260 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 &macBSSID))
9262 {
9263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9264 "This station does not exist in the WDI Station Table %d");
9265 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 }
9268
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9270 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9273 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9274 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009275
9276 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009279
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 /*------------------------------------------------------------------------
9281 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 ------------------------------------------------------------------------*/
9284 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9285 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9287 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9288 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009289
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 }
9294
9295
9296
9297 wpalMutexRelease(&pWDICtx->wptMutex);
9298 /*-----------------------------------------------------------------------
9299 Get message buffer
9300 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9303 &pSendBuffer, &usDataOffset, &usSendSize))||
9304 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9305 {
9306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9307 "Unable to get send buffer in set bss key req %x %x %x",
9308 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 }
9312
9313 /*-----------------------------------------------------------------------
9314 Copy the Key parameters into the HAL message
9315 -----------------------------------------------------------------------*/
9316
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9319
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9322
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9325
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9328
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 wpalMemoryCopy( pSendBuffer+usDataOffset,
9330 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9331 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009332
9333 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009335
9336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
9343}/*WDI_ProcessRemoveSTABcastKeyReq*/
9344
9345/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009347==========================================================================*/
9348/**
9349 @brief Process Add TSpec Request function (called when Main FSM
9350 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009351
9352 @param pWDICtx: pointer to the WLAN DAL context
9353 pEventData: pointer to the event information structure
9354
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 @see
9356 @return Result of the function call
9357*/
9358WDI_Status
9359WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009360(
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 WDI_ControlBlockType* pWDICtx,
9362 WDI_EventInfoType* pEventData
9363)
9364{
9365 WDI_AddTSReqParamsType* pwdiAddTSParams;
9366 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 wpt_uint16 usDataOffset = 0;
9371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 wpt_macAddr macBSSID;
9374 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009375
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9377
9378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 -------------------------------------------------------------------------*/
9381 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9382 ( NULL == pEventData->pCBfnc ))
9383 {
9384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 }
9389
9390 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9391 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9392 /*-------------------------------------------------------------------------
9393 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 -------------------------------------------------------------------------*/
9396 wpalMutexAcquire(&pWDICtx->wptMutex);
9397
9398 /*------------------------------------------------------------------------
9399 Find the BSS for which the request is made and identify WDI session
9400 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9402 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 &macBSSID))
9404 {
9405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9406 "This station does not exist in the WDI Station Table %d");
9407 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 }
9410
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9412 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9415 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9416 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009417
9418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009421
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 /*------------------------------------------------------------------------
9423 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 ------------------------------------------------------------------------*/
9426 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9427 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9429 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9430 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009431
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 }
9436
9437 wpalMutexRelease(&pWDICtx->wptMutex);
9438 /*-----------------------------------------------------------------------
9439 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9443 sizeof(halAddTsParams),
9444 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 &usSendSize))||
9446 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9447 {
9448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9449 "Unable to get send buffer in set bss key req %x %x %x",
9450 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 }
9454
9455 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9456 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9457
9458 //TSPEC IE
9459 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9460 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9491
9492 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9507
9508 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9513
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 wpalMemoryCopy( pSendBuffer+usDataOffset,
9515 &halAddTsParams,
9516 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009517
9518 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009520
9521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009527}/*WDI_ProcessAddTSpecReq*/
9528
9529
9530/**
9531 @brief Process Del TSpec Request function (called when Main FSM
9532 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009533
9534 @param pWDICtx: pointer to the WLAN DAL context
9535 pEventData: pointer to the event information structure
9536
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 @see
9538 @return Result of the function call
9539*/
9540WDI_Status
9541WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009542(
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 WDI_ControlBlockType* pWDICtx,
9544 WDI_EventInfoType* pEventData
9545)
9546{
9547 WDI_DelTSReqParamsType* pwdiDelTSParams;
9548 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 wpt_uint16 usDataOffset = 0;
9553 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9556
9557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 -------------------------------------------------------------------------*/
9560 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9561 ( NULL == pEventData->pCBfnc ))
9562 {
9563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 }
9568
9569 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9570 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9571
9572 /*-------------------------------------------------------------------------
9573 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 -------------------------------------------------------------------------*/
9576 wpalMutexAcquire(&pWDICtx->wptMutex);
9577
9578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9582 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9583 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009584
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9588 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9589 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9590
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 }
9594
9595 /*------------------------------------------------------------------------
9596 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 ------------------------------------------------------------------------*/
9599 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9600 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9602 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9603 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 }
9609
9610
9611 wpalMutexRelease(&pWDICtx->wptMutex);
9612 /*-----------------------------------------------------------------------
9613 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9618 &pSendBuffer, &usDataOffset, &usSendSize))||
9619 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9620 {
9621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9622 "Unable to get send buffer in set bss key req %x %x %x",
9623 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 }
9627
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 wpalMemoryCopy( pSendBuffer+usDataOffset,
9629 &pwdiDelTSParams->wdiDelTSInfo,
9630 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009631
9632 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009634
9635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9639 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009640}/*WDI_ProcessDelTSpecReq*/
9641
9642/**
9643 @brief Process Update EDCA Params Request function (called when
9644 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009645
9646 @param pWDICtx: pointer to the WLAN DAL context
9647 pEventData: pointer to the event information structure
9648
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 @see
9650 @return Result of the function call
9651*/
9652WDI_Status
9653WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009654(
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 WDI_ControlBlockType* pWDICtx,
9656 WDI_EventInfoType* pEventData
9657)
9658{
9659 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9660 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 wpt_uint16 usDataOffset = 0;
9665 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9668
9669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 -------------------------------------------------------------------------*/
9672 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9673 ( NULL == pEventData->pCBfnc ))
9674 {
9675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 }
9680
9681 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9682 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9683 /*-------------------------------------------------------------------------
9684 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 -------------------------------------------------------------------------*/
9687 wpalMutexAcquire(&pWDICtx->wptMutex);
9688
9689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9693 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9694 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009695
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 {
9698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9700 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009701
9702 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 }
9705
9706 /*------------------------------------------------------------------------
9707 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 ------------------------------------------------------------------------*/
9710 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9711 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9713 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9714 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009715
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 }
9720
9721
9722 wpalMutexRelease(&pWDICtx->wptMutex);
9723 /*-----------------------------------------------------------------------
9724 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9729 &pSendBuffer, &usDataOffset, &usSendSize))||
9730 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9731 {
9732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9733 "Unable to get send buffer in set bss key req %x %x %x",
9734 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 }
9738
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 wpalMemoryCopy( pSendBuffer+usDataOffset,
9740 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9741 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009742
9743 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745
9746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9750 wdiUpdateEDCARspCb, pEventData->pUserData,
9751 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009752}/*WDI_ProcessUpdateEDCAParamsReq*/
9753
9754/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009757
9758 @param pWDICtx: pointer to the WLAN DAL context
9759 pEventData: pointer to the event information structure
9760
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 @see
9762 @return Result of the function call
9763*/
9764WDI_Status
9765WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009766(
Jeff Johnson295189b2012-06-20 16:38:30 -07009767 WDI_ControlBlockType* pWDICtx,
9768 WDI_EventInfoType* pEventData
9769)
9770{
9771 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9772 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 wpt_uint16 usDataOffset = 0;
9777 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 wpt_macAddr macBSSID;
9780
9781 tAddBASessionReqMsg halAddBASessionReq;
9782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9783
9784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009786 -------------------------------------------------------------------------*/
9787 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9788 ( NULL == pEventData->pCBfnc ))
9789 {
9790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 }
9795
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9800 /*-------------------------------------------------------------------------
9801 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 -------------------------------------------------------------------------*/
9804 wpalMutexAcquire(&pWDICtx->wptMutex);
9805
9806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009808 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9810 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 &macBSSID))
9812 {
9813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9814 "This station does not exist in the WDI Station Table %d");
9815 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 }
9818
9819
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009821
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9825 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9826 __func__, MAC_ADDR_ARRAY(macBSSID));
9827
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 }
9831
9832 /*------------------------------------------------------------------------
9833 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 ------------------------------------------------------------------------*/
9836 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9837 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9839 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9840 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009841
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 }
9846
9847
9848 wpalMutexRelease(&pWDICtx->wptMutex);
9849 /*-----------------------------------------------------------------------
9850 Get message buffer
9851 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9853 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 sizeof(halAddBASessionReq.addBASessionParams),
9855 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9858 {
9859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9860 "Unable to get send buffer in Add BA session req %x %x %x",
9861 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 }
9865
9866 halAddBASessionReq.addBASessionParams.staIdx =
9867 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9868 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9869 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9870 WDI_MAC_ADDR_LEN);
9871 halAddBASessionReq.addBASessionParams.baTID =
9872 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9873 halAddBASessionReq.addBASessionParams.baPolicy =
9874 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9875 halAddBASessionReq.addBASessionParams.baBufferSize =
9876 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9877 halAddBASessionReq.addBASessionParams.baTimeout =
9878 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9879 halAddBASessionReq.addBASessionParams.baSSN =
9880 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9881 halAddBASessionReq.addBASessionParams.baDirection =
9882 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9883
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 wpalMemoryCopy( pSendBuffer+usDataOffset,
9885 &halAddBASessionReq.addBASessionParams,
9886 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009887
9888 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009890
9891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9895 wdiAddBASessionRspCb, pEventData->pUserData,
9896 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009897}/*WDI_ProcessAddBASessionReq*/
9898
9899/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009902
9903 @param pWDICtx: pointer to the WLAN DAL context
9904 pEventData: pointer to the event information structure
9905
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 @see
9907 @return Result of the function call
9908*/
9909WDI_Status
9910WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009911(
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 WDI_ControlBlockType* pWDICtx,
9913 WDI_EventInfoType* pEventData
9914)
9915{
9916 WDI_DelBAReqParamsType* pwdiDelBAParams;
9917 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009920 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 wpt_uint16 usDataOffset = 0;
9922 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 wpt_macAddr macBSSID;
9925 tDelBAParams halDelBAparam;
9926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9927
9928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 -------------------------------------------------------------------------*/
9931 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9932 ( NULL == pEventData->pCBfnc ))
9933 {
9934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 }
9939
9940 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9941 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9942 /*-------------------------------------------------------------------------
9943 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 -------------------------------------------------------------------------*/
9946 wpalMutexAcquire(&pWDICtx->wptMutex);
9947
9948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9952 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 &macBSSID))
9954 {
9955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9956 "This station does not exist in the WDI Station Table %d");
9957 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 }
9960
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009962
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9966 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9967 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009968
9969 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 }
9972
9973 /*------------------------------------------------------------------------
9974 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 ------------------------------------------------------------------------*/
9977 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9978 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9980 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9981 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009982
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 }
9987
9988 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 sizeof(halDelBAparam),
9991 &pSendBuffer, &usDataOffset, &usSendSize))||
9992 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9993 {
9994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9995 "Unable to get send buffer for DEL BA req %x %x %x",
9996 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 }
10000
10001 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10002 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10003 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10004
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 wpalMemoryCopy( pSendBuffer+usDataOffset,
10006 &halDelBAparam,
10007 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010008
10009 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010011
10012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10016 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010017}/*WDI_ProcessDelBAReq*/
10018
10019#ifdef FEATURE_WLAN_CCX
10020
10021WDI_Status
10022WDI_ProcessTSMStatsReq
10023(
10024 WDI_ControlBlockType* pWDICtx,
10025 WDI_EventInfoType* pEventData
10026)
10027{
10028 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10029 WDI_TsmRspCb wdiTSMRspCb;
10030 wpt_uint8 ucCurrentBSSSesIdx = 0;
10031 WDI_BSSSessionType* pBSSSes = NULL;
10032 wpt_uint8* pSendBuffer = NULL;
10033 wpt_uint16 usDataOffset = 0;
10034 wpt_uint16 usSendSize = 0;
10035 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10036 tTsmStatsParams halTsmStatsReqParams = {0};
10037
10038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10039
10040 /*-------------------------------------------------------------------------
10041 Sanity check
10042 -------------------------------------------------------------------------*/
10043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10044 ( NULL == pEventData->pCBfnc ))
10045 {
10046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 WDI_ASSERT(0);
10049 return WDI_STATUS_E_FAILURE;
10050 }
10051
10052 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10053 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10054 /*-------------------------------------------------------------------------
10055 Check to see if we are in the middle of an association, if so queue, if
10056 not it means it is free to process request
10057 -------------------------------------------------------------------------*/
10058 wpalMutexAcquire(&pWDICtx->wptMutex);
10059
10060 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10061 if ( NULL == pBSSSes )
10062 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10064 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10065 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010066
10067 wpalMutexRelease(&pWDICtx->wptMutex);
10068 return WDI_STATUS_E_NOT_ALLOWED;
10069 }
10070
10071 /*------------------------------------------------------------------------
10072 Check if this BSS is being currently processed or queued,
10073 if queued - queue the new request as well
10074 ------------------------------------------------------------------------*/
10075 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10076 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10078 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10079 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010080
10081 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10082 wpalMutexRelease(&pWDICtx->wptMutex);
10083 return wdiStatus;
10084 }
10085
10086 wpalMutexRelease(&pWDICtx->wptMutex);
10087 /*-----------------------------------------------------------------------
10088 Get message buffer
10089 ! TO DO : proper conversion into the HAL Message Request Format
10090 -----------------------------------------------------------------------*/
10091 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10092 sizeof(halTsmStatsReqParams),
10093 &pSendBuffer, &usDataOffset, &usSendSize))||
10094 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10095 {
10096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10097 "Unable to get send buffer in set bss key req %x %x %x",
10098 pEventData, pwdiTSMParams, wdiTSMRspCb);
10099 WDI_ASSERT(0);
10100 return WDI_STATUS_E_FAILURE;
10101 }
10102
10103 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10104 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10105 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10106 WDI_MAC_ADDR_LEN);
10107 wpalMemoryCopy( pSendBuffer+usDataOffset,
10108 &halTsmStatsReqParams,
10109 sizeof(halTsmStatsReqParams));
10110
10111 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10112 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10113
10114 /*-------------------------------------------------------------------------
10115 Send TSM Stats Request to HAL
10116 -------------------------------------------------------------------------*/
10117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10118 wdiTSMRspCb, pEventData->pUserData,
10119 WDI_TSM_STATS_RESP);
10120}/*WDI_ProcessTSMStatsReq*/
10121
10122#endif
10123
10124
10125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010128
10129 @param pWDICtx: pointer to the WLAN DAL context
10130 pEventData: pointer to the event information structure
10131
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 @see
10133 @return Result of the function call
10134*/
10135WDI_Status
10136WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010137(
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 WDI_ControlBlockType* pWDICtx,
10139 WDI_EventInfoType* pEventData
10140)
10141{
10142 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10143 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 wpt_uint16 usDataOffset = 0;
10146 wpt_uint16 usSendSize = 0;
10147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10148
10149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 -------------------------------------------------------------------------*/
10152 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10153 ( NULL == pEventData->pCBfnc ))
10154 {
10155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 }
10160
10161 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10162 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10163 /*-----------------------------------------------------------------------
10164 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10169 &pSendBuffer, &usDataOffset, &usSendSize))||
10170 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10171 {
10172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10173 "Unable to get send buffer in set bss key req %x %x %x",
10174 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 }
10178
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 wpalMemoryCopy( pSendBuffer+usDataOffset,
10180 &pwdiFlushAcParams->wdiFlushAcInfo,
10181 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010182
10183 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010185
10186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10190 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010191}/*WDI_ProcessFlushAcReq*/
10192
10193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010196
10197 @param pWDICtx: pointer to the WLAN DAL context
10198 pEventData: pointer to the event information structure
10199
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 @see
10201 @return Result of the function call
10202*/
10203WDI_Status
10204WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010205(
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 WDI_ControlBlockType* pWDICtx,
10207 WDI_EventInfoType* pEventData
10208)
10209{
10210 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10211 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 wpt_uint16 usDataOffset = 0;
10214 wpt_uint16 usSendSize = 0;
10215
10216 tBtAmpEventMsg haltBtAmpEventMsg;
10217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10218
10219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 -------------------------------------------------------------------------*/
10222 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10223 ( NULL == pEventData->pCBfnc ))
10224 {
10225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 }
10230
10231 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10232 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10233 /*-----------------------------------------------------------------------
10234 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10239 &pSendBuffer, &usDataOffset, &usSendSize))||
10240 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10241 {
10242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10243 "Unable to get send buffer in BT AMP event req %x %x %x",
10244 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 }
10248
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 wpalMemoryCopy( pSendBuffer+usDataOffset,
10252 &haltBtAmpEventMsg.btAmpEventParams,
10253 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010254
10255 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010257
10258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10262 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010263}/*WDI_ProcessBtAmpEventReq*/
10264
10265/**
10266 @brief Process Add STA self Request function (called when Main FSM
10267 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010268
10269 @param pWDICtx: pointer to the WLAN DAL context
10270 pEventData: pointer to the event information structure
10271
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 @see
10273 @return Result of the function call
10274*/
10275WDI_Status
10276WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010277(
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 WDI_ControlBlockType* pWDICtx,
10279 WDI_EventInfoType* pEventData
10280)
10281{
10282 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10283 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 wpt_uint16 usDataOffset = 0;
10286 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010287 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10289
10290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 -------------------------------------------------------------------------*/
10293 if (( NULL == pEventData ) ||
10294 ( NULL == pEventData->pEventData) ||
10295 ( NULL == pEventData->pCBfnc))
10296 {
10297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 }
10302
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10307 /*-----------------------------------------------------------------------
10308 Get message buffer
10309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10311 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010312 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010314 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 {
10316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10317 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10318 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10319 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 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010325 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10326
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010328 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10329 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10330 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10331 {
10332 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10333 }
10334 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10335 VOS_P2P_CLIENT_MODE) ||
10336 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10337 VOS_P2P_DEVICE))
10338 {
10339 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10340 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010342 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010343
10344 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346
10347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10351 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10352 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010353}/*WDI_ProcessAddSTASelfReq*/
10354
10355
10356
10357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 FSM 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_ProcessDelSTASelfReq
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_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10375 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
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;
10379 tDelStaSelfParams halSetDelSelfSTAParams;
10380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10381
10382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 -------------------------------------------------------------------------*/
10385 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10386 ( NULL == pEventData->pCBfnc ))
10387 {
10388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 }
10393
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10396 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10397
10398 /*-----------------------------------------------------------------------
10399 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10404 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10407 {
10408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10409 "Unable to get send buffer in Del Sta Self req %x %x %x",
10410 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
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
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10417
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10419 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010420
10421 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010422 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010423
10424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10428 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 WDI_DEL_STA_SELF_RESP);
10430
10431}
10432
Jeff Johnsone7245742012-09-05 17:12:55 -070010433#ifdef FEATURE_OEM_DATA_SUPPORT
10434/**
10435 @brief Process Start Oem Data Request function (called when Main
10436 FSM allows it)
10437
10438 @param pWDICtx: pointer to the WLAN DAL context
10439 pEventData: pointer to the event information structure
10440
10441 @see
10442 @return Result of the function call
10443*/
10444WDI_Status
10445WDI_ProcessStartOemDataReq
10446(
10447 WDI_ControlBlockType* pWDICtx,
10448 WDI_EventInfoType* pEventData
10449)
10450{
10451 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10452 WDI_oemDataRspCb wdiOemDataRspCb;
10453 wpt_uint8* pSendBuffer = NULL;
10454 wpt_uint16 usDataOffset = 0;
10455 wpt_uint16 usSendSize = 0;
10456 wpt_uint16 reqLen;
10457 tStartOemDataReqParams* halStartOemDataReqParams;
10458
10459 /*-------------------------------------------------------------------------
10460 Sanity check
10461 -------------------------------------------------------------------------*/
10462 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10463 ( NULL == pEventData->pCBfnc ))
10464 {
10465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010466 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 WDI_ASSERT(0);
10468 return WDI_STATUS_E_FAILURE;
10469 }
10470
10471 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10472 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10473
10474 /*-----------------------------------------------------------------------
10475 Get message buffer
10476 -----------------------------------------------------------------------*/
10477
10478 reqLen = sizeof(tStartOemDataReqParams);
10479
10480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10481 WDI_START_OEM_DATA_REQ, reqLen,
10482 &pSendBuffer, &usDataOffset, &usSendSize))||
10483 (usSendSize < (usDataOffset + reqLen)))
10484 {
10485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10486 "Unable to get send buffer in Start Oem Data req %x %x %x",
10487 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10488 WDI_ASSERT(0);
10489 return WDI_STATUS_E_FAILURE;
10490 }
10491
10492 //copying WDI OEM DATA REQ PARAMS to shared memory
10493 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10494
10495 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10496 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10497
10498 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10499 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10500
10501 /*-------------------------------------------------------------------------
10502 Send Start Request to HAL
10503 -------------------------------------------------------------------------*/
10504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10505 wdiOemDataRspCb, pEventData->pUserData,
10506 WDI_START_OEM_DATA_RESP);
10507}/*WDI_ProcessStartOemDataReq*/
10508#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010509
10510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010513
10514 @param pWDICtx: pointer to the WLAN DAL context
10515 pEventData: pointer to the event information structure
10516
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 @see
10518 @return Result of the function call
10519*/
10520WDI_Status
10521WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010522(
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 WDI_ControlBlockType* pWDICtx,
10524 WDI_EventInfoType* pEventData
10525)
10526{
10527 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10528 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 wpt_uint16 usDataOffset = 0;
10531 wpt_uint16 usSendSize = 0;
10532 tHalWlanHostResumeReqParam halResumeReqParams;
10533
10534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10535
10536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 -------------------------------------------------------------------------*/
10539 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10540 ( NULL == pEventData->pCBfnc ))
10541 {
10542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010543 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 }
10547
10548 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10549 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10550
10551 /*-----------------------------------------------------------------------
10552 Get message buffer
10553 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10556 &pSendBuffer, &usDataOffset, &usSendSize))||
10557 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10558 {
10559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 }
10565
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010568
10569 wpalMemoryCopy( pSendBuffer+usDataOffset,
10570 &halResumeReqParams,
10571 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010572
10573 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010575
10576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010578 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10580 wdiHostResumeRspCb, pEventData->pUserData,
10581 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010582}/*WDI_ProcessHostResumeReq*/
10583
10584/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010587
10588 @param pWDICtx: pointer to the WLAN DAL context
10589 pEventData: pointer to the event information structure
10590
Jeff Johnson295189b2012-06-20 16:38:30 -070010591 @see
10592 @return Result of the function call
10593*/
10594WDI_Status
10595WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010596(
Jeff Johnson295189b2012-06-20 16:38:30 -070010597 WDI_ControlBlockType* pWDICtx,
10598 WDI_EventInfoType* pEventData
10599)
10600{
10601 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10602 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 wpt_uint16 usDataOffset = 0;
10605 wpt_uint16 usSendSize = 0;
10606 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10608
10609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 -------------------------------------------------------------------------*/
10612 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10613 ( NULL == pEventData->pCBfnc ))
10614 {
10615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010616 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 }
10620
10621 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10622 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010623
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 /*-----------------------------------------------------------------------
10625 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 sizeof(halTxPerTrackingReqParam),
10630 &pSendBuffer, &usDataOffset, &usSendSize))||
10631 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10632 {
10633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10634 "Unable to get send buffer in set tx per tracking req %x %x %x",
10635 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010639
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10641 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10642 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10643 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010644
10645 wpalMemoryCopy( pSendBuffer+usDataOffset,
10646 &halTxPerTrackingReqParam,
10647 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010648
10649 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010651
10652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10656 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010657}/*WDI_ProcessSetTxPerTrackingReq*/
10658
10659/*=========================================================================
10660 Indications
10661=========================================================================*/
10662
10663/**
10664 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010665
10666 @param pWDICtx: pointer to the WLAN DAL context
10667 pEventData: pointer to the event information structure
10668
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 @see
10670 @return Result of the function call
10671*/
10672WDI_Status
10673WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010674(
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 WDI_ControlBlockType* pWDICtx,
10676 WDI_EventInfoType* pEventData
10677)
10678{
10679 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 wpt_uint16 usDataOffset = 0;
10682 wpt_uint16 usSendSize = 0;
10683 WDI_Status wdiStatus;
10684 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10686
10687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 -------------------------------------------------------------------------*/
10690 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10691 {
10692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010693 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 }
10697
10698 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10699
10700 /*-----------------------------------------------------------------------
10701 Get message buffer
10702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10704 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 sizeof(halWlanSuspendIndparams),
10706 &pSendBuffer, &usDataOffset, &usSendSize))||
10707 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10708 {
10709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10710 "Unable to get send buffer in Suspend Ind ");
10711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 }
10714
10715 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10716 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10717
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010719 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010720
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10722 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010723
10724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 -------------------------------------------------------------------------*/
10727 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010729
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10732}/*WDI_ProcessHostSuspendInd*/
10733
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010734
10735
10736/**
10737 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10738
10739 @param pWDICtx: pointer to the WLAN DAL context
10740 pEventData: pointer to the event information structure
10741
10742 @see
10743 @return Result of the function call
10744*/
10745WDI_Status
10746WDI_ProcessTrafficStatsInd
10747(
10748 WDI_ControlBlockType* pWDICtx,
10749 WDI_EventInfoType* pEventData
10750)
10751{
10752 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10753 wpt_uint8* pSendBuffer = NULL;
10754 wpt_uint16 usDataOffset = 0;
10755 wpt_uint16 usSendSize = 0;
10756 WDI_Status wdiStatus;
10757 tStatsClassBIndParams* pStatsClassBIndParams;
10758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10759
10760 /*-------------------------------------------------------------------------
10761 Sanity check
10762 -------------------------------------------------------------------------*/
10763 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10764 {
10765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10766 "%s: Invalid parameters in Traffic Stats ind",__func__);
10767 WDI_ASSERT(0);
10768 return WDI_STATUS_E_FAILURE;
10769 }
10770
10771 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10772
10773 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10774 {
10775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10776 "%s: Invalid parameters in Traffic Stats ind",__func__);
10777 WDI_ASSERT(0);
10778 return WDI_STATUS_E_FAILURE;
10779 }
10780
10781 /*-----------------------------------------------------------------------
10782 Get message buffer
10783 -----------------------------------------------------------------------*/
10784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10785 WDI_TRAFFIC_STATS_IND,
10786 sizeof(tStatsClassBIndParams),
10787 &pSendBuffer, &usDataOffset, &usSendSize))||
10788 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10789 {
10790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10791 "Unable to get send buffer in Traffic Stats Ind ");
10792 WDI_ASSERT(0);
10793 return WDI_STATUS_E_FAILURE;
10794 }
10795
10796 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10797
10798 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10799
10800 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10801 pTrafficStatsIndParams->pTrafficStats,
10802 pTrafficStatsIndParams->length);
10803
10804 /*-------------------------------------------------------------------------
10805 Send Suspend Request to HAL
10806 -------------------------------------------------------------------------*/
10807 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10808 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10809
10810 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10811 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10812}/*WDI_ProcessTrafficStatsInd*/
10813
Chet Lanctota96bb432013-03-18 10:26:30 -070010814#ifdef WLAN_FEATURE_11W
10815/**
10816 @brief Process Exclude Unencrypted Indications function (called
10817 when Main FSM allows it)
10818
10819 @param pWDICtx: pointer to the WLAN DAL context
10820 pEventData: pointer to the event information structure
10821
10822 @see
10823 @return Result of the function call
10824*/
10825WDI_Status
10826WDI_ProcessExcludeUnencryptInd
10827(
10828 WDI_ControlBlockType* pWDICtx,
10829 WDI_EventInfoType* pEventData
10830)
10831{
10832 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10833 wpt_uint8* pSendBuffer = NULL;
10834 wpt_uint16 usDataOffset = 0;
10835 wpt_uint16 usSendSize = 0;
10836 WDI_Status wdiStatus;
10837 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10839
10840 /*-------------------------------------------------------------------------
10841 Sanity check
10842 -------------------------------------------------------------------------*/
10843 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10844 {
10845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10846 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10847 WDI_ASSERT(0);
10848 return WDI_STATUS_E_FAILURE;
10849 }
10850
10851 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10852
10853 /*-----------------------------------------------------------------------
10854 Get message buffer
10855 -----------------------------------------------------------------------*/
10856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10857 WDI_EXCLUDE_UNENCRYPTED_IND,
10858 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10859 &pSendBuffer, &usDataOffset, &usSendSize))||
10860 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10861 {
10862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10863 "Unable to get send buffer in Exclude Unencrypted Ind ");
10864 WDI_ASSERT(0);
10865 return WDI_STATUS_E_FAILURE;
10866 }
10867
10868 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10869
10870 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10871
10872 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10873 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10874
10875 /*-------------------------------------------------------------------------
10876 Send Suspend Request to HAL
10877 -------------------------------------------------------------------------*/
10878 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10879 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10880
10881 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10882 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10883}/*WDI_ProcessExcludeUnencryptInd*/
10884#endif
10885
Jeff Johnson295189b2012-06-20 16:38:30 -070010886/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010888==========================================================================*/
10889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010890 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010892
10893 @param pWDICtx: pointer to the WLAN DAL context
10894 pEventData: pointer to the event information structure
10895
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 @see
10897 @return Result of the function call
10898*/
10899WDI_Status
10900WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010901(
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 WDI_ControlBlockType* pWDICtx,
10903 WDI_EventInfoType* pEventData
10904)
10905{
10906 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10907 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 wpt_uint16 usDataOffset = 0;
10910 wpt_uint16 usSendSize = 0;
10911 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10913
10914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 -------------------------------------------------------------------------*/
10917 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10918 ( NULL == pEventData->pCBfnc ))
10919 {
10920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 }
10925
10926 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10927 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10928 /*-----------------------------------------------------------------------
10929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 sizeof(halSwitchChannelReq.switchChannelParams),
10934 &pSendBuffer, &usDataOffset, &usSendSize))||
10935 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10936 {
10937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10938 "Unable to get send buffer in channel switch req %x %x %x",
10939 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 }
10943
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010946#ifndef WLAN_FEATURE_VOWIFI
10947 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010948 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10949#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10952
10953#ifdef WLAN_FEATURE_VOWIFI
10954 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10957 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10958 WDI_MAC_ADDR_LEN);
10959 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10960 pwdiSwitchChParams->wdiChInfo.macBSSId,
10961 WDI_MAC_ADDR_LEN);
10962#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010963 wpalMemoryCopy( pSendBuffer+usDataOffset,
10964 &halSwitchChannelReq.switchChannelParams,
10965 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010966
10967 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010969
10970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10974 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010975}/*WDI_ProcessChannelSwitchReq*/
10976
10977/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010978 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010980
10981 @param pWDICtx: pointer to the WLAN DAL context
10982 pEventData: pointer to the event information structure
10983
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 @see
10985 @return Result of the function call
10986*/
10987WDI_Status
10988WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010989(
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 WDI_ControlBlockType* pWDICtx,
10991 WDI_EventInfoType* pEventData
10992)
10993{
10994 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10995 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010999 wpt_uint16 usDataOffset = 0;
11000 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011002
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 tConfigStaReqMsg halConfigStaReqMsg;
11004 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11006
11007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 -------------------------------------------------------------------------*/
11010 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11011 ( NULL == pEventData->pCBfnc ))
11012 {
11013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 }
11018
11019 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11020 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11021 /*-------------------------------------------------------------------------
11022 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 -------------------------------------------------------------------------*/
11025 wpalMutexAcquire(&pWDICtx->wptMutex);
11026
11027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011028 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011030 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11031 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11032 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011033
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11037 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11038 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011039
11040 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011042 }
11043
11044 /*------------------------------------------------------------------------
11045 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 ------------------------------------------------------------------------*/
11048 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11049 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11051 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11052 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011053
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 }
11058
11059 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011060
11061 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11062#ifdef WLAN_FEATURE_11AC
11063 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011064 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 else
11066#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011067 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011068
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 /*-----------------------------------------------------------------------
11070 Get message buffer
11071 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11073 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 {
11077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11078 "Unable to get send buffer in config sta req %x %x %x",
11079 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011082 }
11083
11084 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011086 &pwdiConfigSTAParams->wdiReqInfo);
11087
11088 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11089 {
11090 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011092 WDI_STATableFindStaidByAddr(pWDICtx,
11093 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 {
11096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11097 "This station does not exist in the WDI Station Table %d");
11098 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011099 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 }
11102 }
11103 else
11104 {
11105 /* Need to fill in the STA Index to invalid, since at this point we have not
11106 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011107 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 }
11109
11110 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011111 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011112
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 wpalMemoryCopy( pSendBuffer+usDataOffset,
11114 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011115 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011116
11117 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011119
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11121 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 sizeof(pWDICtx->wdiCachedConfigStaReq));
11123
11124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11128 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011129}/*WDI_ProcessConfigStaReq*/
11130
11131
11132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011133 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011134 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011135
11136 @param pWDICtx: pointer to the WLAN DAL context
11137 pEventData: pointer to the event information structure
11138
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 @see
11140 @return Result of the function call
11141*/
11142WDI_Status
11143WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011144(
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 WDI_ControlBlockType* pWDICtx,
11146 WDI_EventInfoType* pEventData
11147)
11148{
11149 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11150 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 wpt_uint16 usDataOffset = 0;
11155 wpt_uint16 usSendSize = 0;
11156 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011157 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11159
11160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 -------------------------------------------------------------------------*/
11163 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11164 ( NULL == pEventData->pCBfnc ))
11165 {
11166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 }
11171
11172 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11173 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11174 /*-------------------------------------------------------------------------
11175 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 -------------------------------------------------------------------------*/
11178 wpalMutexAcquire(&pWDICtx->wptMutex);
11179
11180 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011183 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11184 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11185 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011186
Jeff Johnsone7245742012-09-05 17:12:55 -070011187 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011188 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011190 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11191 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 }
11193 else
11194 {
11195 /*------------------------------------------------------------------------
11196 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 ------------------------------------------------------------------------*/
11199 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11200 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11202 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11203 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11204
11205 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 }
11209 }
11210 /* If the link is set to enter IDLE - the Session allocated for this BSS
11211 will be deleted on the Set Link State response coming from HAL
11212 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11215
11216 wpalMutexRelease(&pWDICtx->wptMutex);
11217 /*-----------------------------------------------------------------------
11218 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011221
11222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 sizeof(halLinkStateReqMsg),
11224 &pSendBuffer, &usDataOffset, &usSendSize))||
11225 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11226 {
11227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11228 "Unable to get send buffer in set bss key req %x %x %x",
11229 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 }
11233
11234 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11235 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11236
11237 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11238 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11239
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011241 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11242
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 wpalMemoryCopy( pSendBuffer+usDataOffset,
11244 &halLinkStateReqMsg,
11245 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011246
11247 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011249
11250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011253 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11254 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011255}/*WDI_ProcessSetLinkStateReq*/
11256
11257
11258/**
11259 @brief Process Get Stats Request function (called when Main FSM
11260 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011261
11262 @param pWDICtx: pointer to the WLAN DAL context
11263 pEventData: pointer to the event information structure
11264
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 @see
11266 @return Result of the function call
11267*/
11268WDI_Status
11269WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011270(
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 WDI_ControlBlockType* pWDICtx,
11272 WDI_EventInfoType* pEventData
11273)
11274{
11275 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11276 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 wpt_uint16 usDataOffset = 0;
11279 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 WDI_BSSSessionType* pBSSSes = NULL;
11282 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 tHalStatsReqMsg halStatsReqMsg;
11285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11286
11287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 -------------------------------------------------------------------------*/
11290 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11291 ( NULL == pEventData->pCBfnc ) )
11292 {
11293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 }
11298
11299 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11300 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11301
11302 /*-------------------------------------------------------------------------
11303 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 -------------------------------------------------------------------------*/
11306 wpalMutexAcquire(&pWDICtx->wptMutex);
11307
11308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11312 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 &macBSSID))
11314 {
11315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11316 "This station does not exist in the WDI Station Table %d");
11317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011319 }
11320
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11326 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011327
11328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011330 }
11331
11332 /*------------------------------------------------------------------------
11333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 ------------------------------------------------------------------------*/
11336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11340 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011341
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011345 }
11346
11347
11348 wpalMutexRelease(&pWDICtx->wptMutex);
11349
11350 /*-----------------------------------------------------------------------
11351 Get message buffer
11352 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 sizeof(halStatsReqMsg.statsReqParams),
11355 &pSendBuffer, &usDataOffset, &usSendSize))||
11356 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11357 {
11358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11359 "Unable to get send buffer in set bss key req %x %x %x",
11360 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 }
11364
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 wpalMemoryCopy( pSendBuffer+usDataOffset,
11370 &halStatsReqMsg.statsReqParams,
11371 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011372
11373 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375
11376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11380 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011381}/*WDI_ProcessGetStatsReq*/
11382
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011383#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11384/**
11385 @brief Process Get Roam Rssi Request function (called when Main FSM
11386 allows it)
11387
11388 @param pWDICtx: pointer to the WLAN DAL context
11389 pEventData: pointer to the event information structure
11390
11391 @see
11392 @return Result of the function call
11393*/
11394WDI_Status
11395WDI_ProcessGetRoamRssiReq
11396(
11397 WDI_ControlBlockType* pWDICtx,
11398 WDI_EventInfoType* pEventData
11399)
11400{
11401 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11402 WDI_GetStatsRspCb wdiGetStatsRspCb;
11403 wpt_uint8* pSendBuffer = NULL;
11404 wpt_uint16 usDataOffset = 0;
11405 wpt_uint16 usSendSize = 0;
11406 wpt_uint8 ucCurrentBSSSesIdx = 0;
11407 WDI_BSSSessionType* pBSSSes = NULL;
11408 wpt_macAddr macBSSID;
11409 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11410 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11412 /*-------------------------------------------------------------------------
11413 Sanity check
11414 -------------------------------------------------------------------------*/
11415 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11416 ( NULL == pEventData->pCBfnc ) )
11417 {
11418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11419 "%s: Invalid parameters", __func__);
11420 WDI_ASSERT(0);
11421 return WDI_STATUS_E_FAILURE;
11422 }
11423
11424 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11425 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11426
11427 /*-------------------------------------------------------------------------
11428 Check to see if we are in the middle of an association, if so queue, if
11429 not it means it is free to process request
11430 -------------------------------------------------------------------------*/
11431 wpalMutexAcquire(&pWDICtx->wptMutex);
11432
11433 /*------------------------------------------------------------------------
11434 Find the BSS for which the request is made
11435 ------------------------------------------------------------------------*/
11436 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11437 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11438 &macBSSID))
11439 {
11440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11441 "This station does not exist in the WDI Station Table %d");
11442 wpalMutexRelease(&pWDICtx->wptMutex);
11443 return WDI_STATUS_E_FAILURE;
11444 }
11445
11446 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11447 if ( NULL == pBSSSes )
11448 {
11449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11450 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11451 __func__, MAC_ADDR_ARRAY(macBSSID));
11452
11453 wpalMutexRelease(&pWDICtx->wptMutex);
11454 return WDI_STATUS_E_NOT_ALLOWED;
11455 }
11456
11457 /*------------------------------------------------------------------------
11458 Check if this BSS is being currently processed or queued,
11459 if queued - queue the new request as well
11460 ------------------------------------------------------------------------*/
11461 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11462 {
11463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11464 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11465 __func__, MAC_ADDR_ARRAY(macBSSID));
11466
11467 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11468 wpalMutexRelease(&pWDICtx->wptMutex);
11469 return wdiStatus;
11470 }
11471
11472 wpalMutexRelease(&pWDICtx->wptMutex);
11473
11474 /*-----------------------------------------------------------------------
11475 Get message buffer
11476 -----------------------------------------------------------------------*/
11477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11478 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11479 &pSendBuffer, &usDataOffset, &usSendSize))||
11480 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11481 {
11482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11483 "Unable to get send buffer in set bss key req %x %x %x",
11484 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11485 WDI_ASSERT(0);
11486 return WDI_STATUS_E_FAILURE;
11487 }
11488
11489 halRssiRoamReqMsg.roamRssiReqParams.staId =
11490 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11491 wpalMemoryCopy( pSendBuffer+usDataOffset,
11492 &halRssiRoamReqMsg.roamRssiReqParams,
11493 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11494
11495 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11496 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11497
11498 /*-------------------------------------------------------------------------
11499 Send Get STA Request to HAL
11500 -------------------------------------------------------------------------*/
11501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11502 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11503}/*WDI_ProcessGetRoamRssiReq*/
11504#endif
11505
Jeff Johnson295189b2012-06-20 16:38:30 -070011506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011509
11510 @param pWDICtx: pointer to the WLAN DAL context
11511 pEventData: pointer to the event information structure
11512
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 @see
11514 @return Result of the function call
11515*/
11516WDI_Status
11517WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011518(
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 WDI_ControlBlockType* pWDICtx,
11520 WDI_EventInfoType* pEventData
11521)
11522{
11523 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11524 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11525
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 wpt_uint16 usDataOffset = 0;
11528 wpt_uint16 usSendSize = 0;
11529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11530
11531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 -------------------------------------------------------------------------*/
11534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11535 ( NULL == pEventData->pCBfnc))
11536 {
11537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 }
11542
11543 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11544 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11545
11546 /*-----------------------------------------------------------------------
11547 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 -----------------------------------------------------------------------*/
11550
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11553 &pSendBuffer, &usDataOffset, &usSendSize))||
11554 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11555 {
11556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11557 "Unable to get send buffer in set bss key req %x %x %x",
11558 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 }
11562
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 wpalMemoryCopy( pSendBuffer+usDataOffset,
11564 &pwdiUpdateCfgParams->uConfigBufferLen,
11565 sizeof(wpt_uint32));
11566 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11567 pwdiUpdateCfgParams->pConfigBuffer,
11568 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011569
11570 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011572
11573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 -------------------------------------------------------------------------*/
11576
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11578 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011579
11580}/*WDI_ProcessUpdateCfgReq*/
11581
11582
11583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011585 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011586
11587 @param pWDICtx: pointer to the WLAN DAL context
11588 pEventData: pointer to the event information structure
11589
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 @see
11591 @return Result of the function call
11592*/
11593WDI_Status
11594WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011595(
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 WDI_ControlBlockType* pWDICtx,
11597 WDI_EventInfoType* pEventData
11598)
11599{
11600 WDI_AddBAReqParamsType* pwdiAddBAParams;
11601 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 wpt_uint16 usDataOffset = 0;
11606 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 wpt_macAddr macBSSID;
11609
11610 tAddBAReqMsg halAddBAReq;
11611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11612
11613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 -------------------------------------------------------------------------*/
11616 if (( NULL == pEventData ) ||
11617 ( NULL == pEventData->pEventData) ||
11618 ( NULL == pEventData->pCBfnc ))
11619 {
11620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 }
11625
11626 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11627 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11628
11629 /*-------------------------------------------------------------------------
11630 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011632 -------------------------------------------------------------------------*/
11633 wpalMutexAcquire(&pWDICtx->wptMutex);
11634
11635 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011637 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11639 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011640 &macBSSID))
11641 {
11642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11643 "This station does not exist in the WDI Station Table %d");
11644 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 }
11647
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11649 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11652 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11653 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011654
11655 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 }
11658
11659 /*------------------------------------------------------------------------
11660 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 ------------------------------------------------------------------------*/
11663 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11664 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11666 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11667 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011668
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 }
11673
11674
11675 wpalMutexRelease(&pWDICtx->wptMutex);
11676 /*-----------------------------------------------------------------------
11677 Get message buffer
11678 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011680 sizeof(halAddBAReq.addBAParams),
11681 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011682 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11684 {
11685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11686 "Unable to get send buffer in Add BA req %x %x %x",
11687 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 }
11691
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11694 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11695#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011696 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011697 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11698#endif
11699
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 wpalMemoryCopy( pSendBuffer+usDataOffset,
11701 &halAddBAReq.addBAParams,
11702 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011703
11704 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011706
11707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11711 wdiAddBARspCb, pEventData->pUserData,
11712 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011713}/*WDI_ProcessAddBAReq*/
11714
11715
11716
11717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011718 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011720
11721 @param pWDICtx: pointer to the WLAN DAL context
11722 pEventData: pointer to the event information structure
11723
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 @see
11725 @return Result of the function call
11726*/
11727WDI_Status
11728WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011729(
Jeff Johnson295189b2012-06-20 16:38:30 -070011730 WDI_ControlBlockType* pWDICtx,
11731 WDI_EventInfoType* pEventData
11732)
11733{
11734 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11735 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011736 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011737 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 wpt_uint16 usDataOffset = 0;
11740 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 wpt_uint16 index;
11743 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011744
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 tTriggerBAReqMsg halTriggerBAReq;
11746 tTriggerBaReqCandidate* halTriggerBACandidate;
11747 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11749
11750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 -------------------------------------------------------------------------*/
11753 if (( NULL == pEventData ) ||
11754 ( NULL == pEventData->pEventData ) ||
11755 ( NULL == pEventData->pCBfnc ))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 }
11762
11763 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11764 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11765 /*-------------------------------------------------------------------------
11766 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011767 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011768 -------------------------------------------------------------------------*/
11769 wpalMutexAcquire(&pWDICtx->wptMutex);
11770
11771 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011772 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11775 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 &macBSSID))
11777 {
11778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11779 "This station does not exist in the WDI Station Table %d");
11780 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 }
11783
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11785 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11788 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11789 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011790
11791 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 }
11794
11795 /*------------------------------------------------------------------------
11796 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 ------------------------------------------------------------------------*/
11799 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11800 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11802 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11803 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011804
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011807 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011808 }
11809
11810
11811 wpalMutexRelease(&pWDICtx->wptMutex);
11812 /*-----------------------------------------------------------------------
11813 Get message buffer
11814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11816 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011818 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011819 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11820 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11825 {
11826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11827 "Unable to get send buffer in Trigger BA req %x %x %x",
11828 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 }
11832
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11837
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 wpalMemoryCopy( pSendBuffer+usDataOffset,
11839 &halTriggerBAReq.triggerBAParams,
11840 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011841
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11844 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11845 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011846
11847 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 index++)
11849 {
11850 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11851 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11852 halTriggerBACandidate++;
11853 wdiTriggerBACandidate++;
11854 }
11855
11856 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011857 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011858
11859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11863 wdiTriggerBARspCb, pEventData->pUserData,
11864 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011865}/*WDI_ProcessTriggerBAReq*/
11866
11867
11868
11869/**
11870 @brief Process Update Beacon Params Request function (called when Main FSM
11871 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011872
11873 @param pWDICtx: pointer to the WLAN DAL context
11874 pEventData: pointer to the event information structure
11875
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 @see
11877 @return Result of the function call
11878*/
11879WDI_Status
11880WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011881(
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 WDI_ControlBlockType* pWDICtx,
11883 WDI_EventInfoType* pEventData
11884)
11885{
11886 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11887 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 wpt_uint16 usDataOffset = 0;
11890 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11893
11894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 -------------------------------------------------------------------------*/
11897 if (( NULL == pEventData ) ||
11898 ( NULL == pEventData->pEventData) ||
11899 ( NULL == pEventData->pCBfnc))
11900 {
11901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 }
11906
11907 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11908 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11909 /*-----------------------------------------------------------------------
11910 Get message buffer
11911 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 sizeof(halUpdateBeaconParams),
11914 &pSendBuffer, &usDataOffset, &usSendSize))||
11915 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11916 {
11917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11918 "Unable to get send buffer in set bss key req %x %x %x",
11919 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 }
11923
11924 /*BSS Index of the BSS*/
11925 halUpdateBeaconParams.bssIdx =
11926 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11927 /*shortPreamble mode. HAL should update all the STA rates when it
11928 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11931 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11934 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11937
11938 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011947 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11951 halUpdateBeaconParams.fRIFSMode =
11952 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11955
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11957 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011958
11959 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011961
11962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11966 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011967}/*WDI_ProcessUpdateBeaconParamsReq*/
11968
11969
11970
11971/**
11972 @brief Process Send Beacon template Request function (called when Main FSM
11973 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011974
11975 @param pWDICtx: pointer to the WLAN DAL context
11976 pEventData: pointer to the event information structure
11977
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 @see
11979 @return Result of the function call
11980*/
11981WDI_Status
11982WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011983(
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 WDI_ControlBlockType* pWDICtx,
11985 WDI_EventInfoType* pEventData
11986)
11987{
11988 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11989 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 wpt_uint16 usDataOffset = 0;
11992 wpt_uint16 usSendSize = 0;
11993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11994
11995 tSendBeaconReqMsg halSendBeaconReq;
11996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 -------------------------------------------------------------------------*/
11999 if (( NULL == pEventData ) ||
12000 ( NULL == pEventData->pEventData ) ||
12001 ( NULL == pEventData->pCBfnc ))
12002 {
12003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 }
12008
12009 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12010 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12011 /*-----------------------------------------------------------------------
12012 Get message buffer
12013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 sizeof(halSendBeaconReq.sendBeaconParam),
12016 &pSendBuffer, &usDataOffset, &usSendSize))||
12017 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12018 {
12019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12020 "Unable to get send buffer in send beacon req %x %x %x",
12021 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012024 }
12025
12026 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12027 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12028 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12031 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12032 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12033 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012036 /* usP2PIeOffset should be atleast greater than timIeOffset */
12037 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12038 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12039 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12040 {
12041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12042 "Invalid usP2PIeOffset %hu",
12043 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12044 WDI_ASSERT(0);
12045 return WDI_STATUS_E_FAILURE;
12046 }
12047
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012050
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 wpalMemoryCopy( pSendBuffer+usDataOffset,
12052 &halSendBeaconReq.sendBeaconParam,
12053 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012054
12055 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057
12058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12062 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012063}/*WDI_ProcessSendBeaconParamsReq*/
12064
12065/**
12066 @brief Process Update Beacon Params Request function (called when Main FSM
12067 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012068
12069 @param pWDICtx: pointer to the WLAN DAL context
12070 pEventData: pointer to the event information structure
12071
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 @see
12073 @return Result of the function call
12074*/
12075WDI_Status
12076WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012077(
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 WDI_ControlBlockType* pWDICtx,
12079 WDI_EventInfoType* pEventData
12080)
12081{
12082 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12083 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 wpt_uint16 usDataOffset = 0;
12086 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12089
12090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 -------------------------------------------------------------------------*/
12093 if (( NULL == pEventData ) ||
12094 ( NULL == pEventData->pEventData) ||
12095 ( NULL == pEventData->pCBfnc))
12096 {
12097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 }
12102
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12107 /*-----------------------------------------------------------------------
12108 Get message buffer
12109 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 sizeof(halUpdateProbeRspTmplParams),
12112 &pSendBuffer, &usDataOffset, &usSendSize))||
12113 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12114 {
12115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12116 "Unable to get send buffer in set bss key req %x %x %x",
12117 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 }
12121
12122 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012123 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 WDI_MAC_ADDR_LEN);
12125
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12128
12129 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12130 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012131 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012132
12133
12134 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12135 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12136 WDI_PROBE_REQ_BITMAP_IE_LEN);
12137
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 wpalMemoryCopy( pSendBuffer+usDataOffset,
12139 &halUpdateProbeRspTmplParams,
12140 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012141
12142 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012144
12145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12149 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12150 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012151}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12152
12153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012156
12157 @param pWDICtx: pointer to the WLAN DAL context
12158 pEventData: pointer to the event information structure
12159
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 @see
12161 @return Result of the function call
12162*/
12163WDI_Status
12164WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012165(
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 WDI_ControlBlockType* pWDICtx,
12167 WDI_EventInfoType* pEventData
12168)
12169{
12170
12171 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12172 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12173
12174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 -------------------------------------------------------------------------*/
12177 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12182 {
12183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 }
12188
12189 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12192
12193 /*cache the wdi nv request message here if the the first fragment
12194 * To issue the request to HAL for the next fragment */
12195 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12196 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012197 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12198 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12200
12201 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12202 pWDICtx->pRspCBUserData = pEventData->pUserData;
12203 }
12204
12205 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12206}
12207
12208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012211
12212 @param pWDICtx: pointer to the WLAN DAL context
12213 pEventData: pointer to the event information structure
12214
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 @see
12216 @return Result of the function call
12217*/
12218WDI_Status WDI_ProcessSetMaxTxPowerReq
12219(
12220 WDI_ControlBlockType* pWDICtx,
12221 WDI_EventInfoType* pEventData
12222)
12223{
12224 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12225 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 wpt_uint16 usDataOffset = 0;
12228 wpt_uint16 usSendSize = 0;
12229 tSetMaxTxPwrReq halSetMaxTxPower;
12230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12231
12232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 -------------------------------------------------------------------------*/
12235 if (( NULL == pEventData ) ||
12236 ( NULL == pEventData->pEventData ) ||
12237 ( NULL == pEventData->pCBfnc ))
12238 {
12239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12248
12249 /*-----------------------------------------------------------------------
12250 Get message buffer
12251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012252if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12254 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012256)))
12257 {
12258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12259 "Unable to get Set Max Tx Power req %x %x %x",
12260 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 }
12264
12265 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12266 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12267 WDI_MAC_ADDR_LEN);
12268
12269 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12270 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12271 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012274
12275 wpalMemoryCopy( pSendBuffer+usDataOffset,
12276 &halSetMaxTxPower.setMaxTxPwrParams,
12277 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012278
12279 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012281
12282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12286 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12287 WDI_SET_MAX_TX_POWER_RESP);
12288
Jeff Johnson295189b2012-06-20 16:38:30 -070012289}
12290
schangd82195a2013-03-13 18:41:24 -070012291/**
12292 @brief Process Set Tx Power Request function (called when Main
12293 FSM allows it)
12294
12295 @param pWDICtx: pointer to the WLAN DAL context
12296 pEventData: pointer to the event information structure
12297
12298 @see
12299 @return Result of the function call
12300*/
12301WDI_Status WDI_ProcessSetTxPowerReq
12302(
12303 WDI_ControlBlockType* pWDICtx,
12304 WDI_EventInfoType* pEventData
12305)
12306{
12307 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12308 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12309 wpt_uint8* pSendBuffer = NULL;
12310 wpt_uint16 usDataOffset = 0;
12311 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012312 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12314
12315 /*-------------------------------------------------------------------------
12316 Sanity check
12317 -------------------------------------------------------------------------*/
12318 if (( NULL == pEventData ) ||
12319 ( NULL == pEventData->pEventData ) ||
12320 ( NULL == pEventData->pCBfnc ))
12321 {
12322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12323 "%s: Invalid parameters", __func__);
12324 WDI_ASSERT(0);
12325 return WDI_STATUS_E_FAILURE;
12326 }
12327
12328 pwdiSetTxPowerParams =
12329 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12330 wdiSetTxPowerRspCb =
12331 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12332
12333 /*-----------------------------------------------------------------------
12334 Get message buffer
12335 -----------------------------------------------------------------------*/
12336 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12337 sizeof(tSetTxPwrReqParams),
12338 &pSendBuffer, &usDataOffset, &usSendSize))||
12339 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12340 )))
12341 {
12342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12343 "Unable to get Set Max Tx Power req %x %x %x",
12344 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12345 WDI_ASSERT(0);
12346 return WDI_STATUS_E_FAILURE;
12347 }
12348
Leo Changa37e2a92013-03-25 17:39:58 -070012349 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12350 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12351 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012352
12353 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12354 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12355
12356 /*-------------------------------------------------------------------------
12357 Send Set Tx Power Request to HAL
12358 -------------------------------------------------------------------------*/
12359 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12360 wdiSetTxPowerRspCb, pEventData->pUserData,
12361 WDI_SET_TX_POWER_RESP);
12362}
Jeff Johnson295189b2012-06-20 16:38:30 -070012363
12364/**
12365 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12366 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012367
12368 @param pWDICtx: pointer to the WLAN DAL context
12369 pEventData: pointer to the event information structure
12370
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 @see
12372 @return Result of the function call
12373*/
12374WDI_Status
12375WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012376(
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 WDI_ControlBlockType* pWDICtx,
12378 WDI_EventInfoType* pEventData
12379)
12380{
12381 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12382 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 wpt_uint16 usDataOffset = 0;
12385 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12388
12389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 -------------------------------------------------------------------------*/
12392 if (( NULL == pEventData ) ||
12393 ( NULL == pEventData->pEventData) ||
12394 ( NULL == pEventData->pCBfnc))
12395 {
12396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 }
12401
Jeff Johnsone7245742012-09-05 17:12:55 -070012402 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12406 /*-----------------------------------------------------------------------
12407 Get message buffer
12408 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12410 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 sizeof(halSetP2PGONOAParams),
12412 &pSendBuffer, &usDataOffset, &usSendSize))||
12413 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12414 {
12415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12416 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12417 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 }
12421
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012425 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12426 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12435
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 wpalMemoryCopy( pSendBuffer+usDataOffset,
12437 &halSetP2PGONOAParams,
12438 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012439
12440 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012442
12443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12447 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12448 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012449}/*WDI_ProcessP2PGONOAReq*/
12450
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012451#ifdef FEATURE_WLAN_TDLS
12452
12453/**
12454 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12455 allows it)
12456
12457 @param pWDICtx: pointer to the WLAN DAL context
12458 pEventData: pointer to the event information structure
12459
12460 @see
12461 @return Result of the function call
12462*/
12463WDI_Status
12464WDI_ProcessTdlsLinkEstablishReq
12465(
12466 WDI_ControlBlockType* pWDICtx,
12467 WDI_EventInfoType* pEventData
12468)
12469{
12470 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12471 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12472 wpt_uint8* pSendBuffer = NULL;
12473 wpt_uint16 usDataOffset = 0;
12474 wpt_uint16 usSendSize = 0;
12475
12476 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12478
12479 /*-------------------------------------------------------------------------
12480 Sanity check
12481 -------------------------------------------------------------------------*/
12482 if (( NULL == pEventData ) ||
12483 ( NULL == pEventData->pEventData) ||
12484 ( NULL == pEventData->pCBfnc))
12485 {
12486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12487 "%s: Invalid parameters", __func__);
12488 WDI_ASSERT(0);
12489 return WDI_STATUS_E_FAILURE;
12490 }
12491 pwdiTDLSLinkEstablishReqParams =
12492 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12493 wdiTDLSLinkEstablishReqRspCb =
12494 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12495
12496
12497 /*-----------------------------------------------------------------------
12498 Get message buffer
12499 -----------------------------------------------------------------------*/
12500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12501 WDI_TDLS_LINK_ESTABLISH_REQ,
12502 sizeof(halSetTDLSLinkEstablishParams),
12503 &pSendBuffer, &usDataOffset, &usSendSize))||
12504 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12505 {
12506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12507 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12508 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12509 WDI_ASSERT(0);
12510 return WDI_STATUS_E_FAILURE;
12511 }
12512
12513 halSetTDLSLinkEstablishParams.staIdx =
12514 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12515 halSetTDLSLinkEstablishParams.bIsResponder =
12516 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12517 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12518 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12519 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12520 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12521 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12522 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12523 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12524 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12525 halSetTDLSLinkEstablishParams.aAck = 0;
12526 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12527 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12528 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12529
12530 wpalMemoryCopy( pSendBuffer+usDataOffset,
12531 &halSetTDLSLinkEstablishParams,
12532 sizeof(halSetTDLSLinkEstablishParams));
12533
12534 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12535 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12536
12537 /*-------------------------------------------------------------------------
12538 Send Update Probe Resp Template Request to HAL
12539 -------------------------------------------------------------------------*/
12540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12541 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12542 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12543 return 0;
12544}/*WDI_ProcessTdlsLinkEstablishReq*/
12545
12546
12547#endif
12548
Jeff Johnson295189b2012-06-20 16:38:30 -070012549
12550
12551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 @param None
12555
12556 @see
12557 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012558*/
12559void
12560WDI_SetPowerStateCb
12561(
12562 wpt_status status,
12563 unsigned int dxePhyAddr,
12564 void *pContext
12565)
12566{
12567 wpt_status wptStatus;
12568 WDI_ControlBlockType *pCB = NULL;
12569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12570 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12571 {
12572 //it shouldn't happen, put an error msg
12573 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 /*
12575 * Trigger the event to bring the Enter BMPS req function to come
12576 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012577*/
12578 if( NULL != pContext )
12579 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 }
12582 else
12583 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 pCB = &gWDICb;
12586 }
12587 pCB->dxePhyAddr = dxePhyAddr;
12588 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12589 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12590 {
12591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12592 "Failed to set an event");
12593
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 }
12596 return;
12597}
12598
12599
12600/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012603
12604 @param pWDICtx: pointer to the WLAN DAL context
12605 pEventData: pointer to the event information structure
12606
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 @see
12608 @return Result of the function call
12609*/
12610WDI_Status
12611WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012612(
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 WDI_ControlBlockType* pWDICtx,
12614 WDI_EventInfoType* pEventData
12615)
12616{
Jeff Johnson43971f52012-07-17 12:26:56 -070012617 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 wpt_uint16 usDataOffset = 0;
12621 wpt_uint16 usSendSize = 0;
12622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12623
12624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 -------------------------------------------------------------------------*/
12627 if (( NULL == pEventData ) ||
12628 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12629 {
12630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012633 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 }
12635
12636 /*-----------------------------------------------------------------------
12637 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 0,
12642 &pSendBuffer, &usDataOffset, &usSendSize))||
12643 ( usSendSize < (usDataOffset )))
12644 {
12645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12646 "Unable to get send buffer in Enter IMPS req %x %x",
12647 pEventData, wdiEnterImpsRspCb);
12648 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012649 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 }
12651
12652 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012653 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12654 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 {
12656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12657 "WDI Init failed to reset an event");
12658
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012660 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 }
12662
12663 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012664 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12665 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12667 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12668 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012669 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012670 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012671
12672 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012675 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12676 WDI_SET_POWER_STATE_TIMEOUT);
12677 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012678 {
12679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12680 "WDI Init failed to wait on an event");
12681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012683 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 }
12685
12686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12690 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012691
12692fail:
12693 // Release the message buffer so we don't leak
12694 wpalMemoryFree(pSendBuffer);
12695
12696failRequest:
12697 //WDA should have failure check to avoid the memory leak
12698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012699}/*WDI_ProcessEnterImpsReq*/
12700
12701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012704
12705 @param pWDICtx: pointer to the WLAN DAL context
12706 pEventData: pointer to the event information structure
12707
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 @see
12709 @return Result of the function call
12710*/
12711WDI_Status
12712WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012713(
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 WDI_ControlBlockType* pWDICtx,
12715 WDI_EventInfoType* pEventData
12716)
12717{
12718 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 wpt_uint16 usDataOffset = 0;
12721 wpt_uint16 usSendSize = 0;
12722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12723
12724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 -------------------------------------------------------------------------*/
12727 if (( NULL == pEventData ) ||
12728 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12729 {
12730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 }
12735
12736 /*-----------------------------------------------------------------------
12737 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 0,
12742 &pSendBuffer, &usDataOffset, &usSendSize))||
12743 ( usSendSize < (usDataOffset )))
12744 {
12745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12746 "Unable to get send buffer in Exit IMPS req %x %x",
12747 pEventData, wdiExitImpsRspCb);
12748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 }
12751
12752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12756 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012757}/*WDI_ProcessExitImpsReq*/
12758
12759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012762
12763 @param pWDICtx: pointer to the WLAN DAL context
12764 pEventData: pointer to the event information structure
12765
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 @see
12767 @return Result of the function call
12768*/
12769WDI_Status
12770WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012771(
Jeff Johnson295189b2012-06-20 16:38:30 -070012772 WDI_ControlBlockType* pWDICtx,
12773 WDI_EventInfoType* pEventData
12774)
12775{
12776 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12777 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 wpt_uint16 usDataOffset = 0;
12780 wpt_uint16 usSendSize = 0;
12781 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012782 wpt_status wptStatus;
12783
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12785
12786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 -------------------------------------------------------------------------*/
12789 if (( NULL == pEventData ) ||
12790 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12791 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12792 {
12793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012796 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 }
12798
12799 /*-----------------------------------------------------------------------
12800 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 sizeof(enterBmpsReq),
12805 &pSendBuffer, &usDataOffset, &usSendSize))||
12806 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12809 "Unable to get send buffer in Enter BMPS req %x %x %x",
12810 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12811 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012812 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 }
12814
12815 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012816 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12817 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 {
12819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12820 "WDI Init failed to reset an event");
12821
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012823 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012824 }
12825
12826 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012827 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12828 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12829 {
12830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12831 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12832 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012833 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012834 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012835
12836/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012839 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12840 WDI_SET_POWER_STATE_TIMEOUT);
12841 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 {
12843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12844 "WDI Init failed to wait on an event");
12845
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012847 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 }
12849
12850 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12851
12852 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12853 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12854 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12855 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12856
12857 // For CCX and 11R Roaming
12858 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12859 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12860 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12861
12862 wpalMemoryCopy( pSendBuffer+usDataOffset,
12863 &enterBmpsReq,
12864 sizeof(enterBmpsReq));
12865
12866 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868
12869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12873 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012874
12875fail:
12876 // Release the message buffer so we don't leak
12877 wpalMemoryFree(pSendBuffer);
12878
12879failRequest:
12880 //WDA should have failure check to avoid the memory leak
12881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012882}/*WDI_ProcessEnterBmpsReq*/
12883
12884/**
12885 @brief Process Exit BMPS Request function (called when Main FSM
12886 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012887
12888 @param pWDICtx: pointer to the WLAN DAL context
12889 pEventData: pointer to the event information structure
12890
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 @see
12892 @return Result of the function call
12893*/
12894WDI_Status
12895WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012896(
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 WDI_ControlBlockType* pWDICtx,
12898 WDI_EventInfoType* pEventData
12899)
12900{
12901 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12902 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 wpt_uint16 usDataOffset = 0;
12905 wpt_uint16 usSendSize = 0;
12906 tHalExitBmpsReqParams exitBmpsReq;
12907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12908
12909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 -------------------------------------------------------------------------*/
12912 if (( NULL == pEventData ) ||
12913 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12914 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12915 {
12916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 }
12921
12922 /*-----------------------------------------------------------------------
12923 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012924 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 sizeof(exitBmpsReq),
12928 &pSendBuffer, &usDataOffset, &usSendSize))||
12929 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12930 {
12931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12932 "Unable to get send buffer in Exit BMPS req %x %x %x",
12933 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 }
12937 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12938
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12940
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 wpalMemoryCopy( pSendBuffer+usDataOffset,
12942 &exitBmpsReq,
12943 sizeof(exitBmpsReq));
12944
12945 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012947
12948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012951 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12952 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012953}/*WDI_ProcessExitBmpsReq*/
12954
12955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012958
12959 @param pWDICtx: pointer to the WLAN DAL context
12960 pEventData: pointer to the event information structure
12961
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 @see
12963 @return Result of the function call
12964*/
12965WDI_Status
12966WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012967(
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 WDI_ControlBlockType* pWDICtx,
12969 WDI_EventInfoType* pEventData
12970)
12971{
12972 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12973 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 wpt_uint16 usDataOffset = 0;
12976 wpt_uint16 usSendSize = 0;
12977 tUapsdReqParams enterUapsdReq;
12978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12979
12980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012982 -------------------------------------------------------------------------*/
12983 if (( NULL == pEventData ) ||
12984 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12985 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12986 {
12987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 }
12992
12993 /*-----------------------------------------------------------------------
12994 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 sizeof(enterUapsdReq),
12999 &pSendBuffer, &usDataOffset, &usSendSize))||
13000 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13001 {
13002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13003 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13004 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 }
13008
13009 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13010 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13011 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13012 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13013 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13014 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13015 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13016 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013018
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 wpalMemoryCopy( pSendBuffer+usDataOffset,
13020 &enterUapsdReq,
13021 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013022
13023 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013025
13026 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13030 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013031}/*WDI_ProcessEnterUapsdReq*/
13032
13033/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013036
13037 @param pWDICtx: pointer to the WLAN DAL context
13038 pEventData: pointer to the event information structure
13039
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 @see
13041 @return Result of the function call
13042*/
13043WDI_Status
13044WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013045(
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 WDI_ControlBlockType* pWDICtx,
13047 WDI_EventInfoType* pEventData
13048)
13049{
13050 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 wpt_uint16 usDataOffset = 0;
13053 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013054 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13055 wpt_uint8 bssIdx = 0;
13056
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13058
13059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 -------------------------------------------------------------------------*/
13062 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013063 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13065 {
13066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 }
13071
13072 /*-----------------------------------------------------------------------
13073 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013077 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013079 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 {
13081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13082 "Unable to get send buffer in Exit UAPSD req %x %x",
13083 pEventData, wdiExitUapsdRspCb);
13084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 }
13087
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013088 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13089
13090 wpalMemoryCopy( pSendBuffer+usDataOffset,
13091 &bssIdx,
13092 sizeof(wpt_uint8));
13093
13094 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13095 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13096
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013099 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013100 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13101 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013102}/*WDI_ProcessExitUapsdReq*/
13103
13104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013107
13108 @param pWDICtx: pointer to the WLAN DAL context
13109 pEventData: pointer to the event information structure
13110
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 @see
13112 @return Result of the function call
13113*/
13114WDI_Status
13115WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013116(
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 WDI_ControlBlockType* pWDICtx,
13118 WDI_EventInfoType* pEventData
13119)
13120{
13121 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13122 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 wpt_uint16 usDataOffset = 0;
13125 wpt_uint16 usSendSize = 0;
13126 tUapsdInfo uapsdAcParamsReq;
13127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13128
13129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 -------------------------------------------------------------------------*/
13132 if (( NULL == pEventData ) ||
13133 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13134 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13135 {
13136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 }
13141
13142 /*-----------------------------------------------------------------------
13143 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 sizeof(uapsdAcParamsReq),
13148 &pSendBuffer, &usDataOffset, &usSendSize))||
13149 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13150 {
13151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13152 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13153 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 }
13157
13158 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13159 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13160 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13161 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13162 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13163 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13164
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 wpalMemoryCopy( pSendBuffer+usDataOffset,
13166 &uapsdAcParamsReq,
13167 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013168
13169 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013171
13172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13176 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013177}/*WDI_ProcessSetUapsdAcParamsReq*/
13178
13179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013182
13183 @param pWDICtx: pointer to the WLAN DAL context
13184 pEventData: pointer to the event information structure
13185
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 @see
13187 @return Result of the function call
13188*/
13189WDI_Status
13190WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013191(
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 WDI_ControlBlockType* pWDICtx,
13193 WDI_EventInfoType* pEventData
13194)
13195{
13196 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13197 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 wpt_uint16 usDataOffset = 0;
13200 wpt_uint16 usSendSize = 0;
13201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13202
13203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 -------------------------------------------------------------------------*/
13206 if (( NULL == pEventData ) ||
13207 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13208 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13209 {
13210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 }
13215
13216 /*-----------------------------------------------------------------------
13217 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13222 &pSendBuffer, &usDataOffset, &usSendSize))||
13223 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13224 {
13225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13226 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13227 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 }
13231
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 wpalMemoryCopy( pSendBuffer+usDataOffset,
13233 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13234 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013235
13236 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013238
13239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13243 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013244}/*WDI_ProcessUpdateUapsdParamsReq*/
13245
13246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013249
13250 @param pWDICtx: pointer to the WLAN DAL context
13251 pEventData: pointer to the event information structure
13252
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 @see
13254 @return Result of the function call
13255*/
13256WDI_Status
13257WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013258(
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 WDI_ControlBlockType* pWDICtx,
13260 WDI_EventInfoType* pEventData
13261)
13262{
13263 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13264 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 wpt_uint16 usDataOffset = 0;
13267 wpt_uint16 usSendSize = 0;
13268 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13269
13270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13271
13272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 -------------------------------------------------------------------------*/
13275 if (( NULL == pEventData ) ||
13276 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13277 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13278 {
13279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 }
13284
13285 /*-----------------------------------------------------------------------
13286 Get message buffer
13287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 sizeof(halRxpFilterParams),
13290 &pSendBuffer, &usDataOffset, &usSendSize))||
13291 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13292 {
13293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13294 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13295 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 }
13299
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 wpalMemoryCopy( pSendBuffer+usDataOffset,
13306 &halRxpFilterParams,
13307 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013308
13309 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013311
13312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13316 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013317}/*WDI_ProcessConfigureRxpFilterReq*/
13318
13319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013322
13323 @param pWDICtx: pointer to the WLAN DAL context
13324 pEventData: pointer to the event information structure
13325
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 @see
13327 @return Result of the function call
13328*/
13329WDI_Status
13330WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013331(
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 WDI_ControlBlockType* pWDICtx,
13333 WDI_EventInfoType* pEventData
13334)
13335{
13336 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13337 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 wpt_uint16 usDataOffset = 0;
13340 wpt_uint16 usSendSize = 0;
13341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13342
13343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 -------------------------------------------------------------------------*/
13346 if (( NULL == pEventData ) ||
13347 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13348 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13349 {
13350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 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
13356 /*-----------------------------------------------------------------------
13357 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13362 &pSendBuffer, &usDataOffset, &usSendSize))||
13363 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13364 {
13365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13366 "Unable to get send buffer in Set beacon filter req %x %x %x",
13367 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 }
13371
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 wpalMemoryCopy( pSendBuffer+usDataOffset,
13373 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13374 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13375 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13376 &pwdiBeaconFilterParams->aFilters[0],
13377 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013378
13379 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013381
13382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13386 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013387}/*WDI_ProcessSetBeaconFilterReq*/
13388
13389/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013392
13393 @param pWDICtx: pointer to the WLAN DAL context
13394 pEventData: pointer to the event information structure
13395
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 @see
13397 @return Result of the function call
13398*/
13399WDI_Status
13400WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013401(
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 WDI_ControlBlockType* pWDICtx,
13403 WDI_EventInfoType* pEventData
13404)
13405{
13406 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13407 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013408 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 wpt_uint16 usDataOffset = 0;
13410 wpt_uint16 usSendSize = 0;
13411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13412
13413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 -------------------------------------------------------------------------*/
13416 if (( NULL == pEventData ) ||
13417 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13418 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13419 {
13420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 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 /*-----------------------------------------------------------------------
13427 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13432 &pSendBuffer, &usDataOffset, &usSendSize))||
13433 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13434 {
13435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13436 "Unable to get send buffer in remove beacon filter req %x %x %x",
13437 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 }
13441
Jeff Johnsone7245742012-09-05 17:12:55 -070013442 wpalMemoryCopy( pSendBuffer+usDataOffset,
13443 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13444 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013445
13446 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013448
13449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13453 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013454}
13455
13456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013459
13460 @param pWDICtx: pointer to the WLAN DAL context
13461 pEventData: pointer to the event information structure
13462
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 @see
13464 @return Result of the function call
13465*/
13466WDI_Status
13467WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013468(
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 WDI_ControlBlockType* pWDICtx,
13470 WDI_EventInfoType* pEventData
13471)
13472{
13473 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13474 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 wpt_uint16 usDataOffset = 0;
13477 wpt_uint16 usSendSize = 0;
13478 tHalRSSIThresholds rssiThresholdsReq;
13479 WDI_Status ret_status = 0;
13480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13481
13482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 -------------------------------------------------------------------------*/
13485 if (( NULL == pEventData ) ||
13486 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13487 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13488 {
13489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 }
13494
13495 /*-----------------------------------------------------------------------
13496 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 sizeof(rssiThresholdsReq),
13501 &pSendBuffer, &usDataOffset, &usSendSize))||
13502 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13503 {
13504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13505 "Unable to get send buffer in remove beacon filter req %x %x %x",
13506 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 }
13510
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013513 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13531
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 wpalMemoryCopy( pSendBuffer+usDataOffset,
13533 &rssiThresholdsReq,
13534 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
13536 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
13539 /*-------------------------------------------------------------------------
13540 Send Set threshold req to HAL
13541 -------------------------------------------------------------------------*/
13542 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13543 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13544 {
13545 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13546 // req. Then as a result of processing the threshold cross ind, we trigger
13547 // a Set threshold req, then we need to indicate to WDI that it needs to
13548 // go to busy state as a result of the indication as we sent a req in the
13549 // same WDI context.
13550 // Hence expected state transition is to busy.
13551 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13552 }
13553
13554 return ret_status;
13555}
13556
13557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013560
13561 @param pWDICtx: pointer to the WLAN DAL context
13562 pEventData: pointer to the event information structure
13563
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 @see
13565 @return Result of the function call
13566*/
13567WDI_Status
13568WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013569(
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 WDI_ControlBlockType* pWDICtx,
13571 WDI_EventInfoType* pEventData
13572)
13573{
13574 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13575 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 wpt_uint16 usDataOffset = 0;
13578 wpt_uint16 usSendSize = 0;
13579 tHalHostOffloadReq hostOffloadParams;
13580 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013581 wpt_uint8 ucCurrentBSSSesIdx = 0;
13582 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013583
13584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13585
13586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 -------------------------------------------------------------------------*/
13589 if (( NULL == pEventData ) ||
13590 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13591 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13592 {
13593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013596 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 }
13598
13599 /*-----------------------------------------------------------------------
13600 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13605 &pSendBuffer, &usDataOffset, &usSendSize))||
13606 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13607 {
13608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13609 "Unable to get send buffer in host offload req %x %x %x",
13610 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13611 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013612 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 }
13614
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013615 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13616 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13617 &pBSSSes);
13618 if ( NULL == pBSSSes )
13619 {
13620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013621 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13622 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013623 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013624 }
13625
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13627 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013628
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13630 {
13631 // ARP Offload
13632 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13633 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13634 4);
13635 }
13636 else
13637 {
13638 // NS Offload
13639 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13640 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13641 16);
13642
13643#ifdef WLAN_NS_OFFLOAD
13644 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13645 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13646 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13647 16);
13648 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13649 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13650 16);
13651 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13652 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13653 16);
13654 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13655 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13656 16);
13657 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13658 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13659 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013660 nsOffloadParams.srcIPv6AddrValid =
13661 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13662
13663 nsOffloadParams.targetIPv6Addr1Valid =
13664 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13665
13666 nsOffloadParams.targetIPv6Addr2Valid =
13667 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13668
13669 nsOffloadParams.slotIndex =
13670 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013671
Jeff Johnson295189b2012-06-20 16:38:30 -070013672#endif // WLAN_NS_OFFLOAD
13673 }
13674
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013675 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13676
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 // copy hostOffloadParams into pSendBuffer
13678 wpalMemoryCopy( pSendBuffer+usDataOffset,
13679 &hostOffloadParams,
13680 sizeof(hostOffloadParams));
13681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013682 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013684 // copy nsOffloadParams into pSendBuffer
13685 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 &nsOffloadParams,
13687 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013688 }
13689 else
13690 {
13691#ifdef WLAN_NS_OFFLOAD
13692 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13693 {
13694 // copy nsOffloadParams into pSendBuffer
13695 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13696 &nsOffloadParams,
13697 sizeof(nsOffloadParams));
13698 }
13699#endif
13700 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013701
13702 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013704
13705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13709 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013710
13711fail:
13712 // Release the message buffer so we don't leak
13713 wpalMemoryFree(pSendBuffer);
13714
13715failRequest:
13716 //WDA should have failure check to avoid the memory leak
13717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013718}/*WDI_ProcessHostOffloadReq*/
13719
13720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013723
13724 @param pWDICtx: pointer to the WLAN DAL context
13725 pEventData: pointer to the event information structure
13726
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 @see
13728 @return Result of the function call
13729*/
13730WDI_Status
13731WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013732(
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 WDI_ControlBlockType* pWDICtx,
13734 WDI_EventInfoType* pEventData
13735)
13736{
13737 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13738 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 wpt_uint16 usDataOffset = 0;
13741 wpt_uint16 usSendSize = 0;
13742 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013743 wpt_uint8 ucCurrentBSSSesIdx = 0;
13744 WDI_BSSSessionType* pBSSSes = NULL;
13745
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13747
13748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 -------------------------------------------------------------------------*/
13751 if (( NULL == pEventData ) ||
13752 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13753 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13754 {
13755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13756 "Invalid parameters in Keep Alive req");
13757 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013758 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 }
13760
13761 /*-----------------------------------------------------------------------
13762 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 sizeof(keepAliveReq),
13767 &pSendBuffer, &usDataOffset, &usSendSize))||
13768 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13769 {
13770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13771 "Unable to get send buffer in keep alive req %x %x %x",
13772 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13773 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013774 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 }
13776
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013777 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13778 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13779 &pBSSSes);
13780 if ( NULL == pBSSSes )
13781 {
13782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013783 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013784 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013785 }
13786
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13788 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13789
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013790 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013791
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13793 {
13794 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13795 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13796 HAL_IPV4_ADDR_LEN);
13797 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13798 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 wpalMemoryCopy(keepAliveReq.destMacAddr,
13801 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13802 HAL_MAC_ADDR_LEN);
13803 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013804
13805 wpalMemoryCopy( pSendBuffer+usDataOffset,
13806 &keepAliveReq,
13807 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013808
13809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13810 "Process keep alive req %d",sizeof(keepAliveReq));
13811
13812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13813 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13814
13815 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817
13818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13819 "Sending keep alive req to HAL");
13820
13821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13825 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013826
13827fail:
13828 // Release the message buffer so we don't leak
13829 wpalMemoryFree(pSendBuffer);
13830
13831failRequest:
13832 //WDA should have failure check to avoid the memory leak
13833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013834}/*WDI_ProcessKeepAliveReq*/
13835
13836
13837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013840
13841 @param pWDICtx: pointer to the WLAN DAL context
13842 pEventData: pointer to the event information structure
13843
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 @see
13845 @return Result of the function call
13846*/
13847WDI_Status
13848WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013849(
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 WDI_ControlBlockType* pWDICtx,
13851 WDI_EventInfoType* pEventData
13852)
13853{
13854 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13855 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 wpt_uint16 usDataOffset = 0;
13858 wpt_uint16 usSendSize = 0;
13859 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013860 wpt_uint8 ucCurrentBSSSesIdx = 0;
13861 WDI_BSSSessionType* pBSSSes = NULL;
13862
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13864
13865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 -------------------------------------------------------------------------*/
13868 if (( NULL == pEventData ) ||
13869 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13870 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13871 {
13872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013875 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 }
13877
13878 /*-----------------------------------------------------------------------
13879 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 sizeof(wowlAddBcPtrnReq),
13884 &pSendBuffer, &usDataOffset, &usSendSize))||
13885 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13886 {
13887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13888 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13889 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13890 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013891 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 }
13893
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013894 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13895 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13896 &pBSSSes);
13897 if ( NULL == pBSSSes )
13898 {
13899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013900 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013901 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013902 }
13903
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013910 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13912
13913 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13914 {
13915 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13916 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13917 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13918 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13919 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13920 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13921 }
13922 else
13923 {
13924 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13925 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13926 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13927 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13928 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13929 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13930
13931 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13932 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13933 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13934 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13935 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13936 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13937 }
13938
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013939 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13940
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 wpalMemoryCopy( pSendBuffer+usDataOffset,
13942 &wowlAddBcPtrnReq,
13943 sizeof(wowlAddBcPtrnReq));
13944
13945 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013947
13948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013951 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13952 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013953fail:
13954 // Release the message buffer so we don't leak
13955 wpalMemoryFree(pSendBuffer);
13956
13957failRequest:
13958 //WDA should have failure check to avoid the memory leak
13959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013960}/*WDI_ProcessWowlAddBcPtrnReq*/
13961
13962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013965
13966 @param pWDICtx: pointer to the WLAN DAL context
13967 pEventData: pointer to the event information structure
13968
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 @see
13970 @return Result of the function call
13971*/
13972WDI_Status
13973WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013974(
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 WDI_ControlBlockType* pWDICtx,
13976 WDI_EventInfoType* pEventData
13977)
13978{
13979 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13980 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 wpt_uint16 usDataOffset = 0;
13983 wpt_uint16 usSendSize = 0;
13984 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013985 wpt_uint8 ucCurrentBSSSesIdx = 0;
13986 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13988
13989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 -------------------------------------------------------------------------*/
13992 if (( NULL == pEventData ) ||
13993 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13994 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13995 {
13996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013999 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 }
14001
14002 /*-----------------------------------------------------------------------
14003 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 sizeof(wowlDelBcPtrnReq),
14008 &pSendBuffer, &usDataOffset, &usSendSize))||
14009 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14010 {
14011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14012 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14013 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14014 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014015 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 }
14017
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014018 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14019 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14020 &pBSSSes);
14021 if ( NULL == pBSSSes )
14022 {
14023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014024 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014025 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014026 }
14027
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014030
14031 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14032
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 wpalMemoryCopy( pSendBuffer+usDataOffset,
14034 &wowlDelBcPtrnReq,
14035 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014036
14037 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014039
14040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014041 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14044 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014045
14046fail:
14047 // Release the message buffer so we don't leak
14048 wpalMemoryFree(pSendBuffer);
14049
14050failRequest:
14051 //WDA should have failure check to avoid the memory leak
14052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014053}/*WDI_ProcessWowlDelBcPtrnReq*/
14054
14055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014058
14059 @param pWDICtx: pointer to the WLAN DAL context
14060 pEventData: pointer to the event information structure
14061
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 @see
14063 @return Result of the function call
14064*/
14065WDI_Status
14066WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014067(
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 WDI_ControlBlockType* pWDICtx,
14069 WDI_EventInfoType* pEventData
14070)
14071{
14072 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14073 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 wpt_uint16 usDataOffset = 0;
14076 wpt_uint16 usSendSize = 0;
14077 tHalWowlEnterParams wowlEnterReq;
14078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14079
14080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 -------------------------------------------------------------------------*/
14083 if (( NULL == pEventData ) ||
14084 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14085 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14086 {
14087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 }
14092
14093 /*-----------------------------------------------------------------------
14094 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 sizeof(wowlEnterReq),
14099 &pSendBuffer, &usDataOffset, &usSendSize))||
14100 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14101 {
14102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14103 "Unable to get send buffer in Wowl enter req %x %x %x",
14104 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 }
14108
Kumar Anand21a26022013-07-22 14:35:34 -070014109 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14110
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14127
14128#ifdef WLAN_WAKEUP_EVENTS
14129 wowlEnterReq.ucWoWEAPIDRequestEnable =
14130 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14131
14132 wowlEnterReq.ucWoWEAPOL4WayEnable =
14133 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14134
14135 wowlEnterReq.ucWowNetScanOffloadMatch =
14136 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14137
14138 wowlEnterReq.ucWowGTKRekeyError =
14139 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14140
14141 wowlEnterReq.ucWoWBSSConnLoss =
14142 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14143#endif // WLAN_WAKEUP_EVENTS
14144
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014145 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14146
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14148 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14149 sizeof(tSirMacAddr));
14150
Jeff Johnsone7245742012-09-05 17:12:55 -070014151 wpalMemoryCopy( pSendBuffer+usDataOffset,
14152 &wowlEnterReq,
14153 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014154
14155 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014156 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014157
14158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014161 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14162 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014163}/*WDI_ProcessWowlEnterReq*/
14164
14165/**
14166 @brief Process Wowl exit Request function (called when Main FSM
14167 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014168
14169 @param pWDICtx: pointer to the WLAN DAL context
14170 pEventData: pointer to the event information structure
14171
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 @see
14173 @return Result of the function call
14174*/
14175WDI_Status
14176WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014177(
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_ControlBlockType* pWDICtx,
14179 WDI_EventInfoType* pEventData
14180)
14181{
14182 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014183 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 wpt_uint16 usDataOffset = 0;
14186 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014187 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14189
14190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 -------------------------------------------------------------------------*/
14193 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014194 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014195 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14196 {
14197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
14202
14203 /*-----------------------------------------------------------------------
14204 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014208 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014210 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 {
14212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14213 "Unable to get send buffer in Wowl Exit req %x %x",
14214 pEventData, wdiWowlExitCb);
14215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 }
14218
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014219 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14220
14221 wpalMemoryCopy( pSendBuffer+usDataOffset,
14222 &wowlExitparams,
14223 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14228 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014229}/*WDI_ProcessWowlExitReq*/
14230
14231/**
14232 @brief Process Configure Apps Cpu Wakeup State Request function
14233 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014234
14235 @param pWDICtx: pointer to the WLAN DAL context
14236 pEventData: pointer to the event information structure
14237
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 @see
14239 @return Result of the function call
14240*/
14241WDI_Status
14242WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014243(
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 WDI_ControlBlockType* pWDICtx,
14245 WDI_EventInfoType* pEventData
14246)
14247{
14248 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14249 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 wpt_uint16 usDataOffset = 0;
14252 wpt_uint16 usSendSize = 0;
14253 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14255
14256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 -------------------------------------------------------------------------*/
14259 if (( NULL == pEventData ) ||
14260 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14261 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14262 {
14263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 }
14268
14269 /*-----------------------------------------------------------------------
14270 Get message buffer
14271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 sizeof(halCfgAppsCpuWakeupStateReqParams),
14274 &pSendBuffer, &usDataOffset, &usSendSize))||
14275 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14276 {
14277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14278 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14279 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 }
14283
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14286
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 wpalMemoryCopy( pSendBuffer+usDataOffset,
14288 &halCfgAppsCpuWakeupStateReqParams,
14289 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014290
14291 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014293
14294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14298 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14299 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014300}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14301
14302#ifdef WLAN_FEATURE_VOWIFI_11R
14303/**
14304 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14305 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014306
14307 @param pWDICtx: pointer to the WLAN DAL context
14308 pEventData: pointer to the event information structure
14309
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 @see
14311 @return Result of the function call
14312*/
14313WDI_Status
14314WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014315(
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 WDI_ControlBlockType* pWDICtx,
14317 WDI_EventInfoType* pEventData
14318)
14319{
14320 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14321 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 wpt_uint16 usDataOffset = 0;
14326 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 wpt_macAddr macBSSID;
14329 tAggrAddTsReq halAggrAddTsReq;
14330 int i;
14331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14332
14333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 -------------------------------------------------------------------------*/
14336 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14337 ( NULL == pEventData->pCBfnc ))
14338 {
14339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 }
14344 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14345 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14346 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14347 /*-------------------------------------------------------------------------
14348 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 -------------------------------------------------------------------------*/
14351 wpalMutexAcquire(&pWDICtx->wptMutex);
14352
14353 /*------------------------------------------------------------------------
14354 Find the BSS for which the request is made and identify WDI session
14355 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14357 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 &macBSSID))
14359 {
14360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14361 "This station does not exist in the WDI Station Table %d");
14362 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 }
14365
Jeff Johnsone7245742012-09-05 17:12:55 -070014366 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14367 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14370 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14371 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014372
14373 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014376
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 /*------------------------------------------------------------------------
14378 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 ------------------------------------------------------------------------*/
14381 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14382 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14384 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14385 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014386
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 }
14391
14392 wpalMutexRelease(&pWDICtx->wptMutex);
14393 /*-----------------------------------------------------------------------
14394 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 sizeof(tAggrAddTsParams),
14399 &pSendBuffer, &usDataOffset, &usSendSize))||
14400 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14401 {
14402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14403 "Unable to get send buffer in set bss key req %x %x %x",
14404 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 }
14408
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14413
14414 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14415 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14422 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14425 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14428 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14431 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014432 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14434 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14437 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14440 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14443 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014448
14449
14450 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14480 }
14481
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 wpalMemoryCopy( pSendBuffer+usDataOffset,
14483 &halAggrAddTsReq,
14484 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014485
14486 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014488
14489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014495}/*WDI_ProcessAggrAddTSpecReq*/
14496#endif /* WLAN_FEATURE_VOWIFI_11R */
14497
14498/**
14499 @brief Process Shutdown Request function (called when Main FSM
14500 allows it)
14501
14502 @param pWDICtx: pointer to the WLAN DAL context
14503 pEventData: pointer to the event information structure
14504
14505 @see
14506 @return Result of the function call
14507*/
14508WDI_Status
14509WDI_ProcessShutdownReq
14510(
14511 WDI_ControlBlockType* pWDICtx,
14512 WDI_EventInfoType* pEventData
14513 )
14514{
14515 wpt_status wptStatus;
14516
14517
14518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14519
14520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 -------------------------------------------------------------------------*/
14523 if ( NULL == pEventData )
14524 {
14525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 WDI_ASSERT(0);
14528 return WDI_STATUS_E_FAILURE;
14529 }
14530
14531 wpalMutexAcquire(&pWDICtx->wptMutex);
14532
14533
14534 gWDIInitialized = eWLAN_PAL_FALSE;
14535 /*! TO DO: stop the data services */
14536 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14537 {
14538 /*Stop the STA Table !UT- check this logic again
14539 It is safer to do it here than on the response - because a stop is imminent*/
14540 WDI_STATableStop(pWDICtx);
14541
14542 /* Stop Transport Driver, DXE */
14543 WDTS_Stop(pWDICtx);
14544 }
14545
14546 /*Clear all pending request*/
14547 WDI_ClearPendingRequests(pWDICtx);
14548 /* Close Data transport*/
14549 /* FTM mode does not open Data Path */
14550 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14551 {
14552 WDTS_Close(pWDICtx);
14553 }
14554 /*Close the STA Table !UT- check this logic again*/
14555 WDI_STATableClose(pWDICtx);
14556 /*close the PAL */
14557 wptStatus = wpalClose(pWDICtx->pPALContext);
14558 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14559 {
14560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14561 "Failed to wpal Close %d", wptStatus);
14562 WDI_ASSERT(0);
14563 }
14564
14565 /*Transition back to init state*/
14566 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14567
14568 wpalMutexRelease(&pWDICtx->wptMutex);
14569
14570 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014572
14573
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014575}/*WDI_ProcessShutdownReq*/
14576
14577/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014579========================================================================*/
14580
14581/**
14582 @brief Process Start Response function (called when a response
14583 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014584
14585 @param pWDICtx: pointer to the WLAN DAL context
14586 pEventData: pointer to the event information structure
14587
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 @see
14589 @return Result of the function call
14590*/
14591WDI_Status
14592WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014593(
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 WDI_ControlBlockType* pWDICtx,
14595 WDI_EventInfoType* pEventData
14596)
14597{
14598 WDI_StartRspParamsType wdiRspParams;
14599 WDI_StartRspCb wdiStartRspCb = NULL;
14600
14601 tHalMacStartRspParams* startRspParams;
14602
14603#ifndef HAL_SELF_STA_PER_BSS
14604 WDI_AddStaParams wdiAddSTAParam = {0};
14605#endif
14606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14607
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 -------------------------------------------------------------------------*/
14612 if (( NULL == pEventData ) ||
14613 ( NULL == pEventData->pEventData) ||
14614 ( NULL == wdiStartRspCb ))
14615 {
14616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 }
14621
14622 /*-------------------------------------------------------------------------
14623 Extract response and send it to UMAC
14624 -------------------------------------------------------------------------*/
14625 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14626 {
14627 // not enough data was received
14628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14629 "Invalid response length in Start Resp Expect %x Rcvd %x",
14630 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 }
14634
14635 /*-------------------------------------------------------------------------
14636 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 -------------------------------------------------------------------------*/
14639 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14640
14641 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14642 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14643 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14644 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14645 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14646 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14647 wdiRspParams.wlanReportedVersion.major =
14648 startRspParams->wcnssWlanVersion.major;
14649 wdiRspParams.wlanReportedVersion.minor =
14650 startRspParams->wcnssWlanVersion.minor;
14651 wdiRspParams.wlanReportedVersion.version =
14652 startRspParams->wcnssWlanVersion.version;
14653 wdiRspParams.wlanReportedVersion.revision =
14654 startRspParams->wcnssWlanVersion.revision;
14655 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14656 startRspParams->wcnssCrmVersionString,
14657 sizeof(wdiRspParams.wcnssSoftwareVersion));
14658 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14659 startRspParams->wcnssWlanVersionString,
14660 sizeof(wdiRspParams.wcnssHardwareVersion));
14661 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14662
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014663 /*Save the HAL Version*/
14664 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14665
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 wpalMutexAcquire(&pWDICtx->wptMutex);
14667 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14668 {
14669 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14670
14671 /*Cache the start response for further use*/
14672 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 sizeof(pWDICtx->wdiCachedStartRspParams));
14675
14676 }
14677 else
14678 {
14679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14680 "Failed to start device with status %s(%d)",
14681 WDI_getHALStatusMsgString(startRspParams->status),
14682 startRspParams->status);
14683
14684 /*Set the expected state transition to stopped - because the start has
14685 failed*/
14686 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14687
14688 wpalMutexRelease(&pWDICtx->wptMutex);
14689
14690 /*Notify UMAC*/
14691 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014692
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14694
14695 /*Although the response is an error - it was processed by our function
14696 so as far as the caller is concerned this is a succesful reponse processing*/
14697 return WDI_STATUS_SUCCESS;
14698 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014699
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 wpalMutexRelease(&pWDICtx->wptMutex);
14701
14702 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14703 {
14704 /* FTM mode does not need to execute below */
14705 /* Notify UMAC */
14706 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14707 return WDI_STATUS_SUCCESS;
14708 }
14709
14710 /* START the Data transport */
14711 WDTS_startTransport(pWDICtx);
14712
14713 /*Start the STA Table !- check this logic again*/
14714 WDI_STATableStart(pWDICtx);
14715
14716#ifndef HAL_SELF_STA_PER_BSS
14717 /* Store the Self STA Index */
14718 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14719
14720 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14721 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14722 WDI_MAC_ADDR_LEN);
14723
14724 /* At this point add the self-STA */
14725
14726 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14727 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14728 /*! TO DO: wdiAddSTAParam.dpuSig */
14729 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14730 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14731 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14732
14733 //all DPU indices are the same for self STA
14734 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14735 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014736 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14738 WDI_MAC_ADDR_LEN);
14739 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14740 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14741
14742 /* Note: Since we don't get an explicit config STA request for self STA, we
14743 add the self STA upon receiving the Start response message. But the
14744 self STA entry in the table is deleted when WDI gets an explicit delete STA
14745 request */
14746 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14747#endif
14748
14749 /*Notify UMAC*/
14750 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14751
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014753}/*WDI_ProcessStartRsp*/
14754
14755
14756/**
14757 @brief Process Stop Response function (called when a response
14758 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014759
14760 @param pWDICtx: pointer to the WLAN DAL context
14761 pEventData: pointer to the event information structure
14762
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 @see
14764 @return Result of the function call
14765*/
14766WDI_Status
14767WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014768(
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 WDI_ControlBlockType* pWDICtx,
14770 WDI_EventInfoType* pEventData
14771)
14772{
14773 WDI_Status wdiStatus;
14774 WDI_StopRspCb wdiStopRspCb = NULL;
14775
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14778
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 -------------------------------------------------------------------------*/
14783 if (( NULL == pEventData ) ||
14784 ( NULL == pEventData->pEventData) ||
14785 ( NULL == wdiStopRspCb ))
14786 {
14787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 }
14792
14793 /*-------------------------------------------------------------------------
14794 Extract response and send it to UMAC
14795 -------------------------------------------------------------------------*/
14796 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14797 {
14798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14799 "Invalid response length in Stop Resp %x %x",
14800 pEventData->uEventDataSize);
14801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 }
14804
14805 /*-------------------------------------------------------------------------
14806 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014807 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14810 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 sizeof(halMacStopRspMsg.stopRspParams));
14812
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014814
14815 wpalMutexAcquire(&pWDICtx->wptMutex);
14816
14817 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 --------------------------------------------------------------------------*/
14820 if ( WDI_STATUS_SUCCESS != wdiStatus )
14821 {
14822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14823 "Failed to stop the device with status %s (%d)",
14824 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14825 halMacStopRspMsg.stopRspParams.status);
14826
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14828
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014832
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14834
14835 /*Transition now as WDI may get preempted imediately after it sends
14836 up the Stop Response and it will not get to process the state transition
14837 from Main Rsp function*/
14838 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14839 wpalMutexRelease(&pWDICtx->wptMutex);
14840
14841 /*! TO DO: - STOP the Data transport */
14842
14843 /*Notify UMAC*/
14844 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14845
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014847}/*WDI_ProcessStopRsp*/
14848
14849/**
14850 @brief Process Close Rsp 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_ProcessCloseRsp
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 /*There is no close response comming from HAL - function just kept for
14867 simmetry */
14868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014870}/*WDI_ProcessCloseRsp*/
14871
14872
14873/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014875============================================================================*/
14876
14877/**
14878 @brief Process Init Scan Rsp function (called when a response
14879 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014880
14881 @param pWDICtx: pointer to the WLAN DAL context
14882 pEventData: pointer to the event information structure
14883
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 @see
14885 @return Result of the function call
14886*/
14887WDI_Status
14888WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014889(
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 WDI_ControlBlockType* pWDICtx,
14891 WDI_EventInfoType* pEventData
14892)
14893{
14894 WDI_Status wdiStatus;
14895 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014897 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14899
14900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 -------------------------------------------------------------------------*/
14903 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14904 ( NULL == pEventData->pEventData))
14905 {
14906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 }
14911
14912 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14913 if( NULL == wdiInitScanRspCb)
14914 {
14915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014916 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 }
14920
14921 /*-------------------------------------------------------------------------
14922 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14926 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 sizeof(halInitScanRspMsg.initScanRspParams));
14928
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014930
14931 if ( pWDICtx->bInBmps )
14932 {
14933 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014934 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14935 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14937 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14938 WDI_ASSERT(0);
14939 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 }
14941
14942 /*Notify UMAC*/
14943 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14944
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014946}/*WDI_ProcessInitScanRsp*/
14947
14948
14949/**
14950 @brief Process Start Scan Rsp function (called when a response
14951 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014952
14953 @param pWDICtx: pointer to the WLAN DAL context
14954 pEventData: pointer to the event information structure
14955
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 @see
14957 @return Result of the function call
14958*/
14959WDI_Status
14960WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014961(
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 WDI_ControlBlockType* pWDICtx,
14963 WDI_EventInfoType* pEventData
14964)
14965{
14966 WDI_StartScanRspParamsType wdiStartScanParams;
14967 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014968
14969 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14971
14972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 -------------------------------------------------------------------------*/
14975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14976 ( NULL == pEventData->pEventData))
14977 {
14978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 }
14983
14984 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14985 if( NULL == wdiStartScanRspCb)
14986 {
14987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014988 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 }
14992
14993 /*-------------------------------------------------------------------------
14994 Extract response and send it to UMAC
14995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14997 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 sizeof(halStartScanRspMsg.startScanRspParams));
14999
15000 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15001 halStartScanRspMsg.startScanRspParams.status);
15002#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015005 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 halStartScanRspMsg.startScanRspParams.startTSF,
15007 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015008#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015009
15010 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15011 {
15012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15013 "Start scan failed with status %s (%d)",
15014 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15015 halStartScanRspMsg.startScanRspParams.status);
15016 /* send the status to UMAC, don't return from here*/
15017 }
15018
15019 /*Notify UMAC*/
15020 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15021
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015023
15024}/*WDI_ProcessStartScanRsp*/
15025
15026
15027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015030
15031 @param pWDICtx: pointer to the WLAN DAL context
15032 pEventData: pointer to the event information structure
15033
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 @see
15035 @return Result of the function call
15036*/
15037WDI_Status
15038WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015039(
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 WDI_ControlBlockType* pWDICtx,
15041 WDI_EventInfoType* pEventData
15042)
15043{
15044 WDI_Status wdiStatus;
15045 tHalEndScanRspMsg halEndScanRspMsg;
15046 WDI_EndScanRspCb wdiEndScanRspCb;
15047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15048
15049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 -------------------------------------------------------------------------*/
15052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15053 ( NULL == pEventData->pEventData))
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 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15062
15063 /*-------------------------------------------------------------------------
15064 Extract response and send it to UMAC
15065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015066 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15067 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 sizeof(halEndScanRspMsg.endScanRspParams));
15069
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015071
15072 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15073 {
15074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15075 "End Scan failed with status %s (%d )",
15076 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15077 halEndScanRspMsg.endScanRspParams.status);
15078 /* send the status to UMAC, don't return from here*/
15079 }
15080
15081 /*Notify UMAC*/
15082 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15083
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015085}/*WDI_ProcessEndScanRsp*/
15086
15087
15088/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015089 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015091
15092 @param pWDICtx: pointer to the WLAN DAL context
15093 pEventData: pointer to the event information structure
15094
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 @see
15096 @return Result of the function call
15097*/
15098WDI_Status
15099WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015100(
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 WDI_ControlBlockType* pWDICtx,
15102 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015103)
Jeff Johnson295189b2012-06-20 16:38:30 -070015104{
15105 WDI_Status wdiStatus;
15106 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015107
15108 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15110
15111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 -------------------------------------------------------------------------*/
15114 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15115 ( NULL == pEventData->pEventData))
15116 {
15117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 }
15122
15123 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15124
15125 /*-------------------------------------------------------------------------
15126 Extract response and send it to UMAC
15127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15129 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15131
Jeff Johnsone7245742012-09-05 17:12:55 -070015132 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015133
15134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 halFinishScanRspMsg.finishScanRspParams.status);
15137
15138 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15139 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15140 {
15141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15142 "Finish Scan failed with status %s (%d)",
15143 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15144 halFinishScanRspMsg.finishScanRspParams.status);
15145 /* send the status to UMAC, don't return from here*/
15146 }
15147
15148 /*Notify UMAC*/
15149 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15150
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015152}/*WDI_ProcessFinishScanRsp*/
15153
15154/**
15155 @brief Process Join Response function (called when a response
15156 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015157
15158 @param pWDICtx: pointer to the WLAN DAL context
15159 pEventData: pointer to the event information structure
15160
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 @see
15162 @return Result of the function call
15163*/
15164WDI_Status
15165WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015166(
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 WDI_ControlBlockType* pWDICtx,
15168 WDI_EventInfoType* pEventData
15169)
15170{
15171 WDI_Status wdiStatus;
15172 WDI_JoinRspCb wdiJoinRspCb;
15173 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015174
15175 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15177
15178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 -------------------------------------------------------------------------*/
15181 if (( NULL == pWDICtx ) ||
15182 ( NULL == pWDICtx->pfncRspCB ) ||
15183 ( NULL == pEventData ) ||
15184 ( NULL == pEventData->pEventData))
15185 {
15186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 }
15191
15192 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15193
15194 /*-------------------------------------------------------------------------
15195 Extract response and send it to UMAC
15196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15198 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 sizeof(halJoinRspMsg.joinRspParams));
15200
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015202
15203 wpalMutexAcquire(&pWDICtx->wptMutex);
15204
15205 /*-----------------------------------------------------------------------
15206 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015209 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15211 {
15212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15214 "association no longer in progress %d - mysterious HAL response",
15215 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015216
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 }
15221
15222 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15223
15224 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015225 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015226 -----------------------------------------------------------------------*/
15227 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15228 {
15229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15230 "Join only allowed in Joining state - failure state is %d "
15231 "strange HAL response", pBSSSes->wdiAssocState);
15232
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15234
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 }
15238
15239
15240 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 -----------------------------------------------------------------------*/
15243 if ( WDI_STATUS_SUCCESS != wdiStatus )
15244 {
15245 /*Association was failed by HAL - remove session*/
15246 WDI_DeleteSession(pWDICtx, pBSSSes);
15247
15248 /*Association no longer in progress */
15249 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15250
15251 /*Association no longer in progress - prepare pending assoc for processing*/
15252 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015253
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 }
15255 else
15256 {
15257 /*Transition to state Joining - this may be redundant as we are supposed
15258 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 }
15261
15262 wpalMutexRelease(&pWDICtx->wptMutex);
15263
15264 /*Notify UMAC*/
15265 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15266
Jeff Johnsone7245742012-09-05 17:12:55 -070015267 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015268}/*WDI_ProcessJoinRsp*/
15269
15270
15271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015274
15275 @param pWDICtx: pointer to the WLAN DAL context
15276 pEventData: pointer to the event information structure
15277
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 @see
15279 @return Result of the function call
15280*/
15281WDI_Status
15282WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015283(
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 WDI_ControlBlockType* pWDICtx,
15285 WDI_EventInfoType* pEventData
15286)
15287{
15288 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15289 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 WDI_BSSSessionType* pBSSSes = NULL;
15292
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15295 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15298
15299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 -------------------------------------------------------------------------*/
15302 if (( NULL == pEventData ) ||
15303 ( NULL == pEventData->pEventData))
15304 {
15305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 }
15310
15311 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15312
15313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15317 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 sizeof(halConfigBssRspMsg.configBssRspParams));
15319
15320 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15321 halConfigBssRspMsg.configBssRspParams.status);
15322 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15326 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015327
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015329
15330 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015332
15333 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015335
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015337
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15341 #endif
15342 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15343 halConfigBssRspMsg.configBssRspParams.staMac,
15344 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015345
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 wpalMutexAcquire(&pWDICtx->wptMutex);
15347 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15351 wdiConfigBSSParams.macBSSID,
15352 &pBSSSes);
15353
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 /*-----------------------------------------------------------------------
15355 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 -----------------------------------------------------------------------*/
15358 if ( NULL == pBSSSes )
15359 {
15360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15361 "Association sequence for this BSS does not yet exist "
15362 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015363
15364 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15365
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015369
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 /*Save data for this BSS*/
15371 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15372 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015381 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15383 pBSSSes->bcastStaIdx =
15384 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015385
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015387
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 /*-------------------------------------------------------------------------
15389 Add Peer STA
15390 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15393 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015394
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 wdiAddSTAParam.ucHTCapable =
15399 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15400 wdiAddSTAParam.ucStaType =
15401 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15402
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15405 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015407
15408 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15409 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15410 WDI_MAC_ADDR_LEN);
15411
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015421 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015423 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015425
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15427 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015428
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15430 /*-------------------------------------------------------------------------
15431 Add Broadcast STA only in AP mode
15432 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015434 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 {
15436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15437 "Add BCAST STA to table for index: %d",
15438 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015439
15440 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015442
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15444 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15445 }
15446 wpalMutexRelease(&pWDICtx->wptMutex);
15447 }
15448 else
15449 {
15450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15451 "Config BSS RSP failed with status : %s(%d)",
15452 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 halConfigBssRspMsg.configBssRspParams.status);
15455
Jeff Johnsone7245742012-09-05 17:12:55 -070015456
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 /*Association was failed by HAL - remove session*/
15458 WDI_DeleteSession(pWDICtx, pBSSSes);
15459
15460 /*Association no longer in progress */
15461 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15462
15463 /*Association no longer in progress - prepare pending assoc for processing*/
15464 WDI_DequeueAssocRequest(pWDICtx);
15465
15466 }
15467
15468 /*Notify UMAC*/
15469 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15470
Jeff Johnsone7245742012-09-05 17:12:55 -070015471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015472}/*WDI_ProcessConfigBSSRsp*/
15473
15474
15475/**
15476 @brief Process Del BSS Response function (called when a response
15477 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015478
15479 @param pWDICtx: pointer to the WLAN DAL context
15480 pEventData: pointer to the event information structure
15481
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 @see
15483 @return Result of the function call
15484*/
15485WDI_Status
15486WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015487(
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 WDI_ControlBlockType* pWDICtx,
15489 WDI_EventInfoType* pEventData
15490)
15491{
15492 WDI_DelBSSRspParamsType wdiDelBSSParams;
15493 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 WDI_BSSSessionType* pBSSSes = NULL;
15496
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15499
15500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 -------------------------------------------------------------------------*/
15503 if (( NULL == pEventData ) ||
15504 ( NULL == pEventData->pEventData))
15505 {
15506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 }
15511
15512 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15513
15514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015517 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15518 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 sizeof(halDelBssRspMsg.deleteBssRspParams));
15520
15521
15522 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015524
15525 wpalMutexAcquire(&pWDICtx->wptMutex);
15526
15527 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015529 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15531 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15532 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015533
15534 /*-----------------------------------------------------------------------
15535 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 -----------------------------------------------------------------------*/
15538 if ( NULL == pBSSSes )
15539 {
15540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15541 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015542 "association no longer in progress - mysterious HAL response");
15543
15544 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15545
15546 wpalMutexRelease(&pWDICtx->wptMutex);
15547 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015549
15550 /*Extract BSSID for the response to UMAC*/
15551 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15552 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15553
15554 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15555
15556 /*-----------------------------------------------------------------------
15557 The current session will be deleted
15558 -----------------------------------------------------------------------*/
15559 WDI_DeleteSession(pWDICtx, pBSSSes);
15560
15561
15562 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15563 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015565 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015566 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015567
15568 /* Delete the STA's in this BSS */
15569 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15570
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 wpalMutexRelease(&pWDICtx->wptMutex);
15572
15573 /*Notify UMAC*/
15574 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15575
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577}/*WDI_ProcessDelBSSRsp*/
15578
15579/**
15580 @brief Process Post Assoc Rsp function (called when a response
15581 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015582
15583 @param pWDICtx: pointer to the WLAN DAL context
15584 pEventData: pointer to the event information structure
15585
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 @see
15587 @return Result of the function call
15588*/
15589WDI_Status
15590WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015591(
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 WDI_ControlBlockType* pWDICtx,
15593 WDI_EventInfoType* pEventData
15594)
15595{
15596 WDI_PostAssocRspParamsType wdiPostAssocParams;
15597 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15602
15603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 -------------------------------------------------------------------------*/
15606 if (( NULL == pEventData ) ||
15607 ( NULL == pEventData->pEventData))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 }
15614
15615 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15616
15617 /*-------------------------------------------------------------------------
15618 Extract response and send it to UMAC
15619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15621 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 sizeof(halPostAssocRspMsg.postAssocRspParams));
15623
15624 /*Extract the Post Assoc STA Params */
15625
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015630 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15632
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 wdiPostAssocParams.wdiStatus =
15634 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015635
15636 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15637 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15639 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 WDI_MAC_ADDR_LEN);
15641
15642 /* Extract Post Assoc BSS Params */
15643
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15645 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15646 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015647
15648 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15649 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15652 .macSTA, WDI_MAC_ADDR_LEN);
15653
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15656
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15659
15660 wdiPostAssocParams.bssParams.ucBSSIdx =
15661 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15662
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15665
15666 wpalMutexAcquire(&pWDICtx->wptMutex);
15667
15668 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015674
15675 /*-----------------------------------------------------------------------
15676 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 -----------------------------------------------------------------------*/
15679 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15682 {
15683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15684 "Association sequence for this BSS does not yet exist or "
15685 "association no longer in progress - mysterious HAL response");
15686
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15688
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015690 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 }
15692
15693 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 -----------------------------------------------------------------------*/
15696 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15697 {
15698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15699 "Post Assoc not allowed before JOIN - failing request "
15700 "strange HAL response");
15701
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15703
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 }
15707
15708 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -----------------------------------------------------------------------*/
15711 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15712 {
15713 /*Association was failed by HAL - remove session*/
15714 WDI_DeleteSession(pWDICtx, pBSSSes);
15715 }
15716 else
15717 {
15718 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015720
15721 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15730
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15733 }
15734
15735 /*Association no longer in progress */
15736 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15737
15738 /*Association no longer in progress - prepare pending assoc for processing*/
15739 WDI_DequeueAssocRequest(pWDICtx);
15740
15741 wpalMutexRelease(&pWDICtx->wptMutex);
15742
15743 /*Notify UMAC*/
15744 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15745
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015747}/*WDI_ProcessPostAssocRsp*/
15748
15749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015752
15753 @param pWDICtx: pointer to the WLAN DAL context
15754 pEventData: pointer to the event information structure
15755
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 @see
15757 @return Result of the function call
15758*/
15759WDI_Status
15760WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015761(
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 WDI_ControlBlockType* pWDICtx,
15763 WDI_EventInfoType* pEventData
15764)
15765{
15766 WDI_DelSTARspParamsType wdiDelSTARsp;
15767 WDI_DelSTARspCb wdiDelSTARspCb;
15768 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15771
15772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 -------------------------------------------------------------------------*/
15775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15776 ( NULL == pEventData->pEventData))
15777 {
15778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 }
15783
15784 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15785
15786 /*-------------------------------------------------------------------------
15787 Extract response and send it to UMAC
15788 -------------------------------------------------------------------------*/
15789 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 sizeof(halDelStaRspMsg.delStaRspParams));
15792
15793 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015794 wdiDelSTARsp.wdiStatus =
15795 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015796
15797 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15798
15799 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15800 if(staType == WDI_STA_ENTRY_SELF)
15801 {
15802 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15803
15804 /* At this point add the self-STA */
15805
15806 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15807 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15808 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15809
15810#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15811#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15812
15813 //all DPU indices are the same for self STA
15814 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15815 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15816 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15817 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15818 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15819 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015820
15821 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 }
15823 else
15824 {
15825 //Delete the station in the table
15826 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15827 }
15828
15829 /*Notify UMAC*/
15830 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15831
Jeff Johnsone7245742012-09-05 17:12:55 -070015832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015833}/*WDI_ProcessDelSTARsp*/
15834
15835
15836/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015838==========================================================================*/
15839
15840/**
15841 @brief Process Set BSS Key Rsp function (called when a response
15842 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015843
15844 @param pWDICtx: pointer to the WLAN DAL context
15845 pEventData: pointer to the event information structure
15846
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 @see
15848 @return Result of the function call
15849*/
15850WDI_Status
15851WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015852(
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 WDI_ControlBlockType* pWDICtx,
15854 WDI_EventInfoType* pEventData
15855)
15856{
15857 WDI_Status wdiStatus;
15858 eHalStatus halStatus;
15859 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15861
15862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 -------------------------------------------------------------------------*/
15865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15866 ( NULL == pEventData->pEventData))
15867 {
15868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 }
15873
15874 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15875
15876 /*-------------------------------------------------------------------------
15877 Extract response and send it to UMAC
15878 -------------------------------------------------------------------------*/
15879 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015881
15882 if ( eHAL_STATUS_SUCCESS != halStatus )
15883 {
15884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15885 "Set BSS Key failed with status %s (%d)",
15886 WDI_getHALStatusMsgString(halStatus),
15887 halStatus);
15888 /* send the status to UMAC, don't return from here*/
15889 }
15890
15891 /*Notify UMAC*/
15892 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15893
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015895}/*WDI_ProcessSetBssKeyRsp*/
15896
15897/**
15898 @brief Process Remove BSS Key Rsp function (called when a response
15899 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015900
15901 @param pWDICtx: pointer to the WLAN DAL context
15902 pEventData: pointer to the event information structure
15903
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 @see
15905 @return Result of the function call
15906*/
15907WDI_Status
15908WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015909(
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 WDI_ControlBlockType* pWDICtx,
15911 WDI_EventInfoType* pEventData
15912)
15913{
15914 WDI_Status wdiStatus;
15915 eHalStatus halStatus;
15916 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15918
15919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 -------------------------------------------------------------------------*/
15922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15923 ( NULL == pEventData->pEventData))
15924 {
15925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 }
15930
15931 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15932
15933 /*-------------------------------------------------------------------------
15934 Extract response and send it to UMAC
15935 -------------------------------------------------------------------------*/
15936 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015938
15939 if ( eHAL_STATUS_SUCCESS != halStatus )
15940 {
15941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15942 "Remove BSS Key failed with status %s (%d )",
15943 WDI_getHALStatusMsgString(halStatus),
15944 halStatus);
15945 /* send the status to UMAC, don't return from here*/
15946 }
15947
15948 /*Notify UMAC*/
15949 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15950
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015952}/*WDI_ProcessSetBssKeyRsp*/
15953
15954
15955/**
15956 @brief Process Set STA Key Rsp function (called when a response
15957 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015958
15959 @param pWDICtx: pointer to the WLAN DAL context
15960 pEventData: pointer to the event information structure
15961
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 @see
15963 @return Result of the function call
15964*/
15965WDI_Status
15966WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015967(
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 WDI_ControlBlockType* pWDICtx,
15969 WDI_EventInfoType* pEventData
15970)
15971{
15972 WDI_Status wdiStatus;
15973 eHalStatus halStatus;
15974 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15976
15977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 -------------------------------------------------------------------------*/
15980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15981 ( NULL == pEventData->pEventData))
15982 {
15983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 }
15988
15989 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15990
15991 /*-------------------------------------------------------------------------
15992 Extract response and send it to UMAC
15993 -------------------------------------------------------------------------*/
15994 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015996
15997 if ( eHAL_STATUS_SUCCESS != halStatus )
15998 {
15999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16000 "Set STA Key failed with status %s (%d)",
16001 WDI_getHALStatusMsgString(halStatus),
16002 halStatus);
16003 /* send the status to UMAC, don't return from here*/
16004 }
16005
16006 /*Notify UMAC*/
16007 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16008
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010}/*WDI_ProcessSetSTAKeyRsp*/
16011
16012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016015
16016 @param pWDICtx: pointer to the WLAN DAL context
16017 pEventData: pointer to the event information structure
16018
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 @see
16020 @return Result of the function call
16021*/
16022WDI_Status
16023WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016024(
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 WDI_ControlBlockType* pWDICtx,
16026 WDI_EventInfoType* pEventData
16027)
16028{
16029 WDI_Status wdiStatus;
16030 eHalStatus halStatus;
16031 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16033
16034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 -------------------------------------------------------------------------*/
16037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16038 ( NULL == pEventData->pEventData))
16039 {
16040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 }
16045
16046 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16047
16048 /*-------------------------------------------------------------------------
16049 Extract response and send it to UMAC
16050 -------------------------------------------------------------------------*/
16051 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016053
16054 if ( eHAL_STATUS_SUCCESS != halStatus )
16055 {
16056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16057 "Remove STA Key failed with status %s (%d)",
16058 WDI_getHALStatusMsgString(halStatus),
16059 halStatus);
16060 /* send the status to UMAC, don't return from here*/
16061 }
16062
16063 /*Notify UMAC*/
16064 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16065
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016067}/*WDI_ProcessRemoveStaKeyRsp*/
16068
16069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016072
16073 @param pWDICtx: pointer to the WLAN DAL context
16074 pEventData: pointer to the event information structure
16075
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 @see
16077 @return Result of the function call
16078*/
16079WDI_Status
16080WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016081(
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 WDI_ControlBlockType* pWDICtx,
16083 WDI_EventInfoType* pEventData
16084)
16085{
16086 WDI_Status wdiStatus;
16087 eHalStatus halStatus;
16088 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16090
16091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 -------------------------------------------------------------------------*/
16094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16095 ( NULL == pEventData->pEventData))
16096 {
16097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 }
16102
16103 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16104
16105 /*-------------------------------------------------------------------------
16106 Extract response and send it to UMAC
16107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 wpalMemoryCopy( &halStatus,
16109 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 sizeof(halStatus));
16111
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016113
16114 if ( eHAL_STATUS_SUCCESS != halStatus )
16115 {
16116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16117 "Set STA Key failed with status %s (%d)",
16118 WDI_getHALStatusMsgString(halStatus),
16119 halStatus);
16120 /* send the status to UMAC, don't return from here*/
16121 }
16122
16123 /*Notify UMAC*/
16124 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16125
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016127}/*WDI_ProcessSetSTABcastKeyRsp*/
16128
16129/**
16130 @brief Process Remove STA Bcast Key Rsp function (called when a
16131 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016132
16133 @param pWDICtx: pointer to the WLAN DAL context
16134 pEventData: pointer to the event information structure
16135
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 @see
16137 @return Result of the function call
16138*/
16139WDI_Status
16140WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016141(
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 WDI_ControlBlockType* pWDICtx,
16143 WDI_EventInfoType* pEventData
16144)
16145{
16146 WDI_Status wdiStatus;
16147 eHalStatus halStatus;
16148 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16150
16151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 -------------------------------------------------------------------------*/
16154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16155 ( NULL == pEventData->pEventData))
16156 {
16157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 }
16162
16163 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16164
16165 /*-------------------------------------------------------------------------
16166 Extract response and send it to UMAC
16167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016168 wpalMemoryCopy( &halStatus,
16169 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 sizeof(halStatus));
16171
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016173
16174 if ( eHAL_STATUS_SUCCESS != halStatus )
16175 {
16176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16177 "Remove STA Key failed with status %s (%d)",
16178 WDI_getHALStatusMsgString(halStatus),
16179 halStatus);
16180 /* send the status to UMAC, don't return from here*/
16181 }
16182
16183 /*Notify UMAC*/
16184 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16185
Jeff Johnsone7245742012-09-05 17:12:55 -070016186 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016187}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16188
16189
16190/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016192==========================================================================*/
16193
16194/**
16195 @brief Process Add TSpec Rsp function (called when a response
16196 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016197
16198 @param pWDICtx: pointer to the WLAN DAL context
16199 pEventData: pointer to the event information structure
16200
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 @see
16202 @return Result of the function call
16203*/
16204WDI_Status
16205WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016206(
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 WDI_ControlBlockType* pWDICtx,
16208 WDI_EventInfoType* pEventData
16209)
16210{
16211 WDI_Status wdiStatus;
16212 eHalStatus halStatus;
16213 WDI_AddTsRspCb wdiAddTsRspCb;
16214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16215
16216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 -------------------------------------------------------------------------*/
16219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16220 ( NULL == pEventData->pEventData))
16221 {
16222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 }
16227
16228 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16229
16230 /*-------------------------------------------------------------------------
16231 Extract response and send it to UMAC
16232 -------------------------------------------------------------------------*/
16233 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016235
16236 /*Notify UMAC*/
16237 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16238
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016240}/*WDI_ProcessAddTSpecRsp*/
16241
16242
16243/**
16244 @brief Process Del TSpec Rsp function (called when a response
16245 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016246
16247 @param pWDICtx: pointer to the WLAN DAL context
16248 pEventData: pointer to the event information structure
16249
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 @see
16251 @return Result of the function call
16252*/
16253WDI_Status
16254WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016255(
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 WDI_ControlBlockType* pWDICtx,
16257 WDI_EventInfoType* pEventData
16258)
16259{
16260 WDI_Status wdiStatus;
16261 eHalStatus halStatus;
16262 WDI_DelTsRspCb wdiDelTsRspCb;
16263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16264
16265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 -------------------------------------------------------------------------*/
16268 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16269 ( NULL == pEventData->pEventData))
16270 {
16271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 }
16276
16277 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16278
16279 /*-------------------------------------------------------------------------
16280 Extract response and send it to UMAC
16281 -------------------------------------------------------------------------*/
16282 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016283 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016284
16285 /*Notify UMAC*/
16286 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16287
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016289}/*WDI_ProcessDelTSpecRsp*/
16290
16291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016294
16295 @param pWDICtx: pointer to the WLAN DAL context
16296 pEventData: pointer to the event information structure
16297
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 @see
16299 @return Result of the function call
16300*/
16301WDI_Status
16302WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016303(
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 WDI_ControlBlockType* pWDICtx,
16305 WDI_EventInfoType* pEventData
16306)
16307{
16308 WDI_Status wdiStatus;
16309 eHalStatus halStatus;
16310 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16312
16313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 -------------------------------------------------------------------------*/
16316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16317 ( NULL == pEventData->pEventData))
16318 {
16319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 }
16324
16325 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16326
16327 /*-------------------------------------------------------------------------
16328 Extract response and send it to UMAC
16329 -------------------------------------------------------------------------*/
16330 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016331 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016332
16333 /*Notify UMAC*/
16334 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16335
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016337}/*WDI_ProcessUpdateEDCAParamsRsp*/
16338
16339
16340/**
16341 @brief Process Add BA Rsp function (called when a response
16342 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016343
16344 @param pWDICtx: pointer to the WLAN DAL context
16345 pEventData: pointer to the event information structure
16346
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 @see
16348 @return Result of the function call
16349*/
16350WDI_Status
16351WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016352(
Jeff Johnson295189b2012-06-20 16:38:30 -070016353 WDI_ControlBlockType* pWDICtx,
16354 WDI_EventInfoType* pEventData
16355)
16356{
16357 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16358
16359 tAddBASessionRspParams halBASessionRsp;
16360 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16361
Jeff Johnsone7245742012-09-05 17:12:55 -070016362
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16364
16365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016367 -------------------------------------------------------------------------*/
16368 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16369 ( NULL == pEventData->pEventData))
16370 {
16371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 }
16376
16377 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16378
16379 /*-------------------------------------------------------------------------
16380 Extract response and send it to UMAC
16381 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 wpalMemoryCopy( &halBASessionRsp,
16383 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 sizeof(halBASessionRsp));
16385
16386 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16387
Jeff Johnson43971f52012-07-17 12:26:56 -070016388 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016389 {
16390 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16391 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16392 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16393 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16394 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16395 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16396 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16397 }
16398
16399 /*Notify UMAC*/
16400 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16401
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016403}/*WDI_ProcessAddSessionBARsp*/
16404
16405
16406/**
16407 @brief Process Del BA Rsp function (called when a response
16408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016409
16410 @param pWDICtx: pointer to the WLAN DAL context
16411 pEventData: pointer to the event information structure
16412
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 @see
16414 @return Result of the function call
16415*/
16416WDI_Status
16417WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016418(
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 WDI_ControlBlockType* pWDICtx,
16420 WDI_EventInfoType* pEventData
16421)
16422{
16423 WDI_Status wdiStatus;
16424 eHalStatus halStatus;
16425 WDI_DelBARspCb wdiDelBARspCb;
16426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16427
16428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 -------------------------------------------------------------------------*/
16431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16432 ( NULL == pEventData->pEventData))
16433 {
16434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 }
16439
16440 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16441
16442 /*-------------------------------------------------------------------------
16443 Extract response and send it to UMAC
16444 -------------------------------------------------------------------------*/
16445 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016447
16448 if ( eHAL_STATUS_SUCCESS == halStatus )
16449 {
16450 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16451 }
16452
16453 /*Notify UMAC*/
16454 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16455
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016457}/*WDI_ProcessDelBARsp*/
16458
16459#ifdef FEATURE_WLAN_CCX
16460/**
16461 @brief Process TSM Stats Rsp function (called when a response
16462 is being received over the bus from HAL)
16463
16464 @param pWDICtx: pointer to the WLAN DAL context
16465 pEventData: pointer to the event information structure
16466
16467 @see
16468 @return Result of the function call
16469*/
16470WDI_Status
16471WDI_ProcessTsmStatsRsp
16472(
16473 WDI_ControlBlockType* pWDICtx,
16474 WDI_EventInfoType* pEventData
16475)
16476{
16477 WDI_TsmRspCb wdiTsmStatsRspCb;
16478 tTsmStatsRspMsg halTsmStatsRspMsg;
16479 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16481
16482 /*-------------------------------------------------------------------------
16483 Sanity check
16484 -------------------------------------------------------------------------*/
16485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16486 ( NULL == pEventData->pEventData))
16487 {
16488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 WDI_ASSERT(0);
16491 return WDI_STATUS_E_FAILURE;
16492 }
16493
16494 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16495
16496 /*-------------------------------------------------------------------------
16497 Unpack HAL Response Message - the header was already extracted by the
16498 main Response Handling procedure
16499 -------------------------------------------------------------------------*/
16500 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16501 pEventData->pEventData,
16502 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16503
16504 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16505 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16506 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16507 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16508 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16509 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16510 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16511 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16512 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16513 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16514 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16515 halTsmStatsRspMsg.tsmStatsRspParams.status);
16516
16517 /*Notify UMAC*/
16518 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16519
16520 return WDI_STATUS_SUCCESS;
16521}/*WDI_ProcessTsmStatsRsp*/
16522
16523#endif
16524
16525
16526
16527/**
16528 @brief Process Flush AC Rsp function (called when a response
16529 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016530
16531 @param pWDICtx: pointer to the WLAN DAL context
16532 pEventData: pointer to the event information structure
16533
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 @see
16535 @return Result of the function call
16536*/
16537WDI_Status
16538WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016539(
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 WDI_ControlBlockType* pWDICtx,
16541 WDI_EventInfoType* pEventData
16542)
16543{
16544 WDI_Status wdiStatus;
16545 eHalStatus halStatus;
16546 WDI_FlushAcRspCb wdiFlushAcRspCb;
16547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16548
16549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 -------------------------------------------------------------------------*/
16552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16553 ( NULL == pEventData->pEventData))
16554 {
16555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 }
16560
16561 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16562
16563 /*-------------------------------------------------------------------------
16564 Extract response and send it to UMAC
16565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 wpalMemoryCopy( &halStatus,
16567 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 sizeof(halStatus));
16569
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016571
16572 /*Notify UMAC*/
16573 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16574
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016576}/*WDI_ProcessFlushAcRsp*/
16577
16578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016581
16582 @param pWDICtx: pointer to the WLAN DAL context
16583 pEventData: pointer to the event information structure
16584
Jeff Johnson295189b2012-06-20 16:38:30 -070016585 @see
16586 @return Result of the function call
16587*/
16588WDI_Status
16589WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016590(
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 WDI_ControlBlockType* pWDICtx,
16592 WDI_EventInfoType* pEventData
16593)
16594{
16595 WDI_Status wdiStatus;
16596 eHalStatus halStatus;
16597 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16599
16600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 -------------------------------------------------------------------------*/
16603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16604 ( NULL == pEventData->pEventData))
16605 {
16606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 }
16611
16612 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16613
16614 /*-------------------------------------------------------------------------
16615 Extract response and send it to UMAC
16616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 wpalMemoryCopy( &halStatus,
16618 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 sizeof(halStatus));
16620
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016622
16623 /*Notify UMAC*/
16624 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16625
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016627}/*WDI_ProcessBtAmpEventRsp*/
16628
16629
16630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016633
16634 @param pWDICtx: pointer to the WLAN DAL context
16635 pEventData: pointer to the event information structure
16636
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 @see
16638 @return Result of the function call
16639*/
16640WDI_Status
16641WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016642(
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 WDI_ControlBlockType* pWDICtx,
16644 WDI_EventInfoType* pEventData
16645)
16646{
16647 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16648 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16649 tAddStaSelfRspMsg halAddStaSelfRsp;
16650 WDI_AddStaParams wdiAddSTAParam = {0};
16651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16652
16653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 -------------------------------------------------------------------------*/
16656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16657 ( NULL == pEventData->pEventData))
16658 {
16659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 }
16664
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16667
16668 /*-------------------------------------------------------------------------
16669 Extract response and send it to UMAC
16670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16672 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16674
16675
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 wdiAddSTASelfParams.wdiStatus =
16677 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016678
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016684 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16685
16686 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16687 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16688 WDI_MAC_ADDR_LEN);
16689
16690
16691#ifdef HAL_SELF_STA_PER_BSS
16692
16693 /* At this point add the self-STA */
16694
16695 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16696 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16697 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16698
16699 //all DPU indices are the same for self STA
16700
16701 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16704 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16705 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16706 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16707 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16708
16709 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16710 WDI_MAC_ADDR_LEN);
16711
16712 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16713 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16714
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16717 {
16718 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16719 }
16720#endif
16721
16722 /*Notify UMAC*/
16723 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16724
Jeff Johnsone7245742012-09-05 17:12:55 -070016725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016726}/*WDI_ProcessAddSTASelfRsp*/
16727
16728
16729
16730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016733
16734 @param pWDICtx: pointer to the WLAN DAL context
16735 pEventData: pointer to the event information structure
16736
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 @see
16738 @return Result of the function call
16739*/
16740WDI_Status
16741WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016742(
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 WDI_ControlBlockType* pWDICtx,
16744 WDI_EventInfoType* pEventData
16745)
16746{
16747 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16748 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16749 tDelStaSelfRspParams delStaSelfRspParams;
16750 wpt_uint8 ucStaIdx;
16751
16752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16753
16754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 -------------------------------------------------------------------------*/
16757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16758 ( NULL == pEventData->pEventData))
16759 {
16760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 }
16765
16766 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16767
16768 /*-------------------------------------------------------------------------
16769 Extract response and send it to UMAC
16770 -------------------------------------------------------------------------*/
16771
Jeff Johnsone7245742012-09-05 17:12:55 -070016772 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 (wpt_uint8*)pEventData->pEventData,
16774 sizeof(tDelStaSelfRspParams));
16775
Jeff Johnsone7245742012-09-05 17:12:55 -070016776 wdiDelStaSelfRspParams.wdiStatus =
16777 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016778
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16781 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16782 {
16783 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 delStaSelfRspParams.selfMacAddr,
16786 &ucStaIdx);
16787 if(WDI_STATUS_E_FAILURE == wdiStatus)
16788 {
16789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016790 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 }
16794 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16795 }
16796
16797 /*Notify UMAC*/
16798 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16799
16800 return WDI_STATUS_SUCCESS;
16801}
16802
Jeff Johnsone7245742012-09-05 17:12:55 -070016803#ifdef FEATURE_OEM_DATA_SUPPORT
16804/**
16805 @brief Start Oem Data Rsp function (called when a
16806 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016807
Jeff Johnsone7245742012-09-05 17:12:55 -070016808 @param pWDICtx: pointer to the WLAN DAL context
16809 pEventData: pointer to the event information structure
16810
16811 @see
16812 @return Result of the function call
16813*/
16814#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16815
16816WDI_Status
16817WDI_ProcessStartOemDataRsp
16818(
16819 WDI_ControlBlockType* pWDICtx,
16820 WDI_EventInfoType* pEventData
16821)
16822{
16823 WDI_oemDataRspCb wdiOemDataRspCb;
16824 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16825 tStartOemDataRspParams* halStartOemDataRspParams;
16826
16827 /*-------------------------------------------------------------------------
16828 Sanity check
16829 -------------------------------------------------------------------------*/
16830 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16831 ( NULL == pEventData->pEventData))
16832 {
16833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016834 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 WDI_ASSERT(0);
16836 return WDI_STATUS_E_FAILURE;
16837 }
16838
16839 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16840
16841 /*-------------------------------------------------------------------------
16842 Extract response and send it to UMAC
16843 -------------------------------------------------------------------------*/
16844 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16845
16846
16847 //It is the responsibility of the application code to check for failure
16848 //conditions!
16849
16850 //Allocate memory for WDI OEM DATA RSP structure
16851 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16852
16853 if(NULL == wdiOemDataRspParams)
16854 {
16855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16856 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16857 pWDICtx, pEventData, pEventData->pEventData);
16858 WDI_ASSERT(0);
16859 return WDI_STATUS_E_FAILURE;
16860 }
16861
16862 /* Populate WDI structure members */
16863 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16864
16865 /*Notify UMAC*/
16866 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16867
16868 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16869 wpalMemoryFree(wdiOemDataRspParams);
16870
16871 return WDI_STATUS_SUCCESS;
16872}/*WDI_PrcoessStartOemDataRsp*/
16873#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016874
16875/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016877===========================================================================*/
16878
16879/**
16880 @brief Process Channel Switch Rsp function (called when a response
16881 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016882
16883 @param pWDICtx: pointer to the WLAN DAL context
16884 pEventData: pointer to the event information structure
16885
Jeff Johnson295189b2012-06-20 16:38:30 -070016886 @see
16887 @return Result of the function call
16888*/
16889WDI_Status
16890WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016891(
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 WDI_ControlBlockType* pWDICtx,
16893 WDI_EventInfoType* pEventData
16894)
16895{
16896 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16897 WDI_SwitchChRspCb wdiChSwitchRspCb;
16898 tSwitchChannelRspParams halSwitchChannelRsp;
16899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16900
16901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 -------------------------------------------------------------------------*/
16904 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16905 ( NULL == pEventData->pEventData))
16906 {
16907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 }
16912
16913 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16914
16915 /*-------------------------------------------------------------------------
16916 Extract response and send it to UMAC
16917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016918 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016919 (wpt_uint8*)pEventData->pEventData,
16920 sizeof(halSwitchChannelRsp));
16921
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 wdiSwitchChRsp.wdiStatus =
16923 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16925
16926#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016928#endif
16929
16930 /*Notify UMAC*/
16931 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16932
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016934}/*WDI_ProcessChannelSwitchRsp*/
16935
16936
16937/**
16938 @brief Process Config STA Rsp function (called when a response
16939 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016940
16941 @param pWDICtx: pointer to the WLAN DAL context
16942 pEventData: pointer to the event information structure
16943
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 @see
16945 @return Result of the function call
16946*/
16947WDI_Status
16948WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016949(
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 WDI_ControlBlockType* pWDICtx,
16951 WDI_EventInfoType* pEventData
16952)
16953{
16954 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16955 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16956 WDI_AddStaParams wdiAddSTAParam;
16957
16958 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016960
Jeff Johnsone7245742012-09-05 17:12:55 -070016961 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16963
16964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 -------------------------------------------------------------------------*/
16967 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16968 ( NULL == pEventData->pEventData))
16969 {
16970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 }
16975
16976 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16977
16978 /*-------------------------------------------------------------------------
16979 Extract response and send it to UMAC
16980 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16982 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016983 sizeof(halConfigStaRsp.configStaRspParams));
16984
16985
16986 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16987 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16988 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16989 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16990 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16991
16992 /* MAC Address of STA - take from cache as it does not come back in the
16993 response*/
16994 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016995 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016996 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016997
16998 wdiCfgSTAParams.wdiStatus =
16999 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017000
17001 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17002 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17003 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17004
17005 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17006 {
17007 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17008 {
17009 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17012 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017013
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017015 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017017 wdiAddSTAParam.ucHTCapable =
17018 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17019 wdiAddSTAParam.ucStaType =
17020 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017021 wdiAddSTAParam.ucRmfEnabled =
17022 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017023
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17026 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017028
17029 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17030 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17031 WDI_MAC_ADDR_LEN);
17032
17033 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17034 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17035 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017036
17037 if ( NULL == pBSSSes )
17038 {
17039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17040 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017041
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 }
17045
17046 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017056
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17058 }
17059 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17060 {
17061 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17062
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017075 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017076 halConfigStaRsp.configStaRspParams.ucUcastSig;
17077 }
17078 }
17079
17080 /*Notify UMAC*/
17081 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17082
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017084}/*WDI_ProcessConfigStaRsp*/
17085
17086
17087/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017090
17091 @param pWDICtx: pointer to the WLAN DAL context
17092 pEventData: pointer to the event information structure
17093
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 @see
17095 @return Result of the function call
17096*/
17097WDI_Status
17098WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017099(
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 WDI_ControlBlockType* pWDICtx,
17101 WDI_EventInfoType* pEventData
17102)
17103{
17104 WDI_Status wdiStatus;
17105 eHalStatus halStatus;
17106 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17107
17108 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17111
17112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 -------------------------------------------------------------------------*/
17115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17116 ( NULL == pEventData->pEventData))
17117 {
17118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 }
17123
17124 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17125
17126 wpalMutexAcquire(&pWDICtx->wptMutex);
17127
17128 /*If the link is being transitioned to idle - the BSS is to be deleted
17129 - this type of ending a session is possible when UMAC has failed an
17130 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17133 {
17134 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017136 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17138 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17139 &pBSSSes);
17140
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 /*-----------------------------------------------------------------------
17142 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 -----------------------------------------------------------------------*/
17145 if ( NULL == pBSSSes )
17146 {
17147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17148 "Set link response received outside association session");
17149 }
17150 else
17151 {
17152 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17153 will be del BSS coming after this to stop the beaconing & cleaning up the
17154 sessions*/
17155 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17156 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17157 {
17158 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 -----------------------------------------------------------------------*/
17161 WDI_DeleteSession(pWDICtx, pBSSSes);
17162
17163 /*-----------------------------------------------------------------------
17164 Check to see if this association is in progress - if so disable the
17165 flag as this has ended
17166 -----------------------------------------------------------------------*/
17167 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 /*Association no longer in progress */
17170 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17171 /*Association no longer in progress - prepare pending assoc for processing*/
17172 WDI_DequeueAssocRequest(pWDICtx);
17173 }
17174 }
17175 }
17176 }
17177 /* If the link state has been set to POST ASSOC, reset the "association in
17178 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17181 {
17182 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17183 WDI_DequeueAssocRequest(pWDICtx);
17184 }
17185
17186 wpalMutexRelease(&pWDICtx->wptMutex);
17187
17188 /*-------------------------------------------------------------------------
17189 Extract response and send it to UMAC
17190 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017191 wpalMemoryCopy( &halStatus,
17192 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017193 sizeof(halStatus));
17194
Jeff Johnsone7245742012-09-05 17:12:55 -070017195 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017196
17197 /*Notify UMAC*/
17198 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17199
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017201}/*WDI_ProcessSetLinkStateRsp*/
17202
17203/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017204 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017205 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017206
17207 @param pWDICtx: pointer to the WLAN DAL context
17208 pEventData: pointer to the event information structure
17209
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 @see
17211 @return Result of the function call
17212*/
17213WDI_Status
17214WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017215(
Jeff Johnson295189b2012-06-20 16:38:30 -070017216 WDI_ControlBlockType* pWDICtx,
17217 WDI_EventInfoType* pEventData
17218)
17219{
17220 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17221 WDI_GetStatsRspCb wdiGetStatsRspCb;
17222 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017223
Jeff Johnson295189b2012-06-20 16:38:30 -070017224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17225
17226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 -------------------------------------------------------------------------*/
17229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17230 ( NULL == pEventData->pEventData))
17231 {
17232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 }
17237
17238 /*-------------------------------------------------------------------------
17239 Extract response and send it to UMAC
17240 -------------------------------------------------------------------------*/
17241 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17242
17243 /*allocate the stats response buffer */
17244 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17245 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17246 + sizeof(WDI_GetStatsRspParamsType));
17247
17248 if(NULL == wdiGetStatsRsp)
17249 {
17250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17251 "Failed to allocate memory in Get Stats Response %x %x %x ",
17252 pWDICtx, pEventData, pEventData->pEventData);
17253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 }
17256
17257 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17258
17259 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17260 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17261 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17262 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17263 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17264 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17265
17266 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17267 wpalMemoryCopy(wdiGetStatsRsp + 1,
17268 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17269 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17270
17271 /*Notify UMAC*/
17272 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17273
17274 wpalMemoryFree(wdiGetStatsRsp);
17275
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017277}/*WDI_ProcessGetStatsRsp*/
17278
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017279#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17280/**
17281 @brief Process Get Roam Rssi Rsp function (called when a response is
17282 being received over the bus from HAL)
17283
17284 @param pWDICtx: pointer to the WLAN DAL context
17285 pEventData: pointer to the event information structure
17286
17287 @see
17288 @return Result of the function call
17289*/
17290WDI_Status
17291WDI_ProcessGetRoamRssiRsp
17292(
17293 WDI_ControlBlockType* pWDICtx,
17294 WDI_EventInfoType* pEventData
17295)
17296{
17297 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17298 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17299 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17301
17302 /*-------------------------------------------------------------------------
17303 Sanity check
17304 -------------------------------------------------------------------------*/
17305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17306 ( NULL == pEventData->pEventData))
17307 {
17308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17309 "%s: Invalid parameters", __func__);
17310 WDI_ASSERT(0);
17311 return WDI_STATUS_E_FAILURE;
17312 }
17313
17314 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17315 if(NULL == wdiGetRoamRssiRspCb)
17316 {
17317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17318 "%s: call back function is NULL", __func__);
17319 WDI_ASSERT(0);
17320 return WDI_STATUS_E_FAILURE;
17321 }
17322
17323 /*-------------------------------------------------------------------------
17324 Extract response and send it to UMAC
17325 -------------------------------------------------------------------------*/
17326 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17327 pEventData->pEventData,
17328 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17329
17330 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17331 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17332 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17333
17334 /*Notify UMAC*/
17335 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17336
17337 return WDI_STATUS_SUCCESS;
17338}/*WDI_ProcessGetRoamRssiRsp*/
17339#endif
17340
Jeff Johnson295189b2012-06-20 16:38:30 -070017341
17342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017345
17346 @param pWDICtx: pointer to the WLAN DAL context
17347 pEventData: pointer to the event information structure
17348
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 @see
17350 @return Result of the function call
17351*/
17352WDI_Status
17353WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017354(
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 WDI_ControlBlockType* pWDICtx,
17356 WDI_EventInfoType* pEventData
17357)
17358{
17359 WDI_Status wdiStatus;
17360 eHalStatus halStatus;
17361 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17363
17364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017366 -------------------------------------------------------------------------*/
17367 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17368 ( NULL == pEventData->pEventData))
17369 {
17370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 }
17375
17376 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17377
17378 /*-------------------------------------------------------------------------
17379 Extract response and send it to UMAC
17380 -------------------------------------------------------------------------*/
17381 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017383
17384 /*Notify UMAC*/
17385 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17386
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017388}/*WDI_ProcessUpdateCfgRsp*/
17389
17390
17391
17392/**
17393 @brief Process Add BA Rsp function (called when a response
17394 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017395
17396 @param pWDICtx: pointer to the WLAN DAL context
17397 pEventData: pointer to the event information structure
17398
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 @see
17400 @return Result of the function call
17401*/
17402WDI_Status
17403WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017404(
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 WDI_ControlBlockType* pWDICtx,
17406 WDI_EventInfoType* pEventData
17407)
17408{
17409 WDI_AddBARspCb wdiAddBARspCb;
17410
17411 tAddBARspParams halAddBARsp;
17412 WDI_AddBARspinfoType wdiAddBARsp;
17413
17414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17415
17416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 -------------------------------------------------------------------------*/
17419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17420 ( NULL == pEventData->pEventData))
17421 {
17422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017426 }
17427
17428 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17429
17430 /*-------------------------------------------------------------------------
17431 Extract response and send it to UMAC
17432 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017433 wpalMemoryCopy( &halAddBARsp,
17434 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 sizeof(halAddBARsp));
17436
17437 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17438
Jeff Johnson43971f52012-07-17 12:26:56 -070017439 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 {
17441 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17442 }
17443
17444 /*Notify UMAC*/
17445 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17446
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017448}/*WDI_ProcessAddSessionBARsp*/
17449
17450/**
17451 @brief Process Add BA Rsp function (called when a response
17452 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017453
17454 @param pWDICtx: pointer to the WLAN DAL context
17455 pEventData: pointer to the event information structure
17456
Jeff Johnson295189b2012-06-20 16:38:30 -070017457 @see
17458 @return Result of the function call
17459*/
17460WDI_Status
17461WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017462(
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 WDI_ControlBlockType* pWDICtx,
17464 WDI_EventInfoType* pEventData
17465)
17466{
17467 WDI_TriggerBARspCb wdiTriggerBARspCb;
17468
17469 tTriggerBARspParams* halTriggerBARsp;
17470 tTriggerBaRspCandidate* halBaCandidate;
17471 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17472 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17473 wpt_uint16 index;
17474 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017475 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17477
17478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 -------------------------------------------------------------------------*/
17481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17482 ( NULL == pEventData->pEventData))
17483 {
17484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017488 }
17489
17490 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17491
17492 /*-------------------------------------------------------------------------
17493 Extract response and send it to UMAC
17494 -------------------------------------------------------------------------*/
17495 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17496
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017497 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17498
17499 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17500 {
17501 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017504
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017505 if(NULL == wdiTriggerBARsp)
17506 {
17507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17508 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17509 pWDICtx, pEventData, pEventData->pEventData);
17510 WDI_ASSERT(0);
17511 return WDI_STATUS_E_FAILURE;
17512 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017513
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017514 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17515
Jeff Johnson295189b2012-06-20 16:38:30 -070017516 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017517 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17519
17520 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17521 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17522
17523 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17524 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17527 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17528 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17533 }
17534 wdiTriggerBARspCandidate++;
17535 halBaCandidate++;
17536 }
17537 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017538 else
17539 {
17540 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17541
17542 if(NULL == wdiTriggerBARsp)
17543 {
17544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17545 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17546 pWDICtx, pEventData, pEventData->pEventData);
17547 WDI_ASSERT(0);
17548 return WDI_STATUS_E_FAILURE;
17549 }
17550
17551 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17552
17553 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017554
17555 /*Notify UMAC*/
17556 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17557
17558 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017560}/*WDI_ProcessAddSessionBARsp*/
17561
17562/**
17563 @brief Process Update Beacon Params Rsp function (called when a response
17564 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017565
17566 @param pWDICtx: pointer to the WLAN DAL context
17567 pEventData: pointer to the event information structure
17568
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 @see
17570 @return Result of the function call
17571*/
17572WDI_Status
17573WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017574(
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 WDI_ControlBlockType* pWDICtx,
17576 WDI_EventInfoType* pEventData
17577)
17578{
17579 WDI_Status wdiStatus;
17580 eHalStatus halStatus;
17581 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17583
17584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017586 -------------------------------------------------------------------------*/
17587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17588 ( NULL == pEventData->pEventData))
17589 {
17590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 }
17595
17596 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17597
17598 /*-------------------------------------------------------------------------
17599 Extract response and send it to UMAC
17600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 wpalMemoryCopy( &halStatus,
17602 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 sizeof(halStatus));
17604
Jeff Johnsone7245742012-09-05 17:12:55 -070017605 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017606
17607 /*Notify UMAC*/
17608 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17609
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017611}/*WDI_ProcessUpdateBeaconParamsRsp*/
17612
17613/**
17614 @brief Process Send Beacon template Rsp function (called when a response
17615 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017616
17617 @param pWDICtx: pointer to the WLAN DAL context
17618 pEventData: pointer to the event information structure
17619
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 @see
17621 @return Result of the function call
17622*/
17623WDI_Status
17624WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017625(
Jeff Johnson295189b2012-06-20 16:38:30 -070017626 WDI_ControlBlockType* pWDICtx,
17627 WDI_EventInfoType* pEventData
17628)
17629{
17630 WDI_Status wdiStatus;
17631 eHalStatus halStatus;
17632 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17634
17635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 -------------------------------------------------------------------------*/
17638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17639 ( NULL == pEventData->pEventData))
17640 {
17641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 }
17646
17647 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17648
17649 /*-------------------------------------------------------------------------
17650 Extract response and send it to UMAC
17651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017652 wpalMemoryCopy( &halStatus,
17653 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 sizeof(halStatus));
17655
Jeff Johnsone7245742012-09-05 17:12:55 -070017656 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017657
17658 /*Notify UMAC*/
17659 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17660
Jeff Johnsone7245742012-09-05 17:12:55 -070017661 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017662}/*WDI_ProcessSendBeaconParamsRsp*/
17663
Jeff Johnsone7245742012-09-05 17:12:55 -070017664
Jeff Johnson295189b2012-06-20 16:38:30 -070017665/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017668
17669 @param pWDICtx: pointer to the WLAN DAL context
17670 pEventData: pointer to the event information structure
17671
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 @see
17673 @return Result of the function call
17674*/
17675WDI_Status
17676WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017677(
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 WDI_ControlBlockType* pWDICtx,
17679 WDI_EventInfoType* pEventData
17680)
17681{
17682 WDI_Status wdiStatus;
17683 eHalStatus halStatus;
17684 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17686
17687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 -------------------------------------------------------------------------*/
17690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17691 ( NULL == pEventData->pEventData))
17692 {
17693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 }
17698
17699 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17700
17701 /*-------------------------------------------------------------------------
17702 Extract response and send it to UMAC
17703 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 wpalMemoryCopy( &halStatus,
17705 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 sizeof(halStatus));
17707
Jeff Johnsone7245742012-09-05 17:12:55 -070017708 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017709
17710 /*Notify UMAC*/
17711 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17712
Jeff Johnsone7245742012-09-05 17:12:55 -070017713 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017714}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17715
17716 /**
17717 @brief Process Set Max Tx Power Rsp function (called when a response
17718 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017719
17720 @param pWDICtx: pointer to the WLAN DAL context
17721 pEventData: pointer to the event information structure
17722
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 @see
17724 @return Result of the function call
17725*/
17726WDI_Status
17727WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017728(
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 WDI_ControlBlockType* pWDICtx,
17730 WDI_EventInfoType* pEventData
17731)
17732{
17733 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017734
Jeff Johnson295189b2012-06-20 16:38:30 -070017735 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017736
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17739
17740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017742 -------------------------------------------------------------------------*/
17743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17744 ( NULL == pEventData->pEventData))
17745 {
17746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017750 }
17751
17752 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17753
17754 /*-------------------------------------------------------------------------
17755 Extract response and send it to UMAC
17756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017757 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17758 pEventData->pEventData,
17759 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017760
17761 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17762 {
17763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17764 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 }
17768
Jeff Johnsone7245742012-09-05 17:12:55 -070017769 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017771 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017772
17773 /*Notify UMAC*/
17774 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17775
Jeff Johnsone7245742012-09-05 17:12:55 -070017776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017777}
17778
schangd82195a2013-03-13 18:41:24 -070017779 /**
17780 @brief Process Set Tx Power Rsp function (called when a response
17781 is being received over the bus from HAL)
17782
17783 @param pWDICtx: pointer to the WLAN DAL context
17784 pEventData: pointer to the event information structure
17785
17786 @see
17787 @return Result of the function call
17788*/
17789WDI_Status
17790WDI_ProcessSetTxPowerRsp
17791(
17792 WDI_ControlBlockType* pWDICtx,
17793 WDI_EventInfoType* pEventData
17794)
17795{
17796 tSetTxPwrRspMsg halTxpowerrsp;
17797 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17798 WDA_SetTxPowerRspCb wdiReqStatusCb;
17799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17800
17801 /*-------------------------------------------------------------------------
17802 Sanity check
17803 -------------------------------------------------------------------------*/
17804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17805 ( NULL == pEventData->pEventData))
17806 {
17807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17808 "%s: Invalid parameters", __func__);
17809 WDI_ASSERT(0);
17810 return WDI_STATUS_E_FAILURE;
17811 }
17812
17813 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17814
17815 /*-------------------------------------------------------------------------
17816 Extract response and send it to UMAC
17817 -------------------------------------------------------------------------*/
17818 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17819 pEventData->pEventData,
17820 sizeof(halTxpowerrsp.setTxPwrRspParams));
17821
17822 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17823 {
17824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17825 "Error status returned in Set Tx Power Response ");
17826 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17827 return WDI_STATUS_E_FAILURE;
17828 }
17829
17830 wdiSetTxPowerRspMsg.wdiStatus =
17831 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17832
17833 /*Notify UMAC*/
17834 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17835
17836 return WDI_STATUS_SUCCESS;
17837}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017838#ifdef FEATURE_WLAN_TDLS
17839/**
17840 @brief Process TDLS Link Establish Rsp function (called
17841 when a response is being received over the bus from HAL)
17842
17843 @param pWDICtx: pointer to the WLAN DAL context
17844 pEventData: pointer to the event information structure
17845
17846 @see
17847 @return Result of the function call
17848*/
17849WDI_Status
17850WDI_ProcessLinkEstablishReqRsp
17851(
17852 WDI_ControlBlockType* pWDICtx,
17853 WDI_EventInfoType* pEventData
17854)
17855{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017856 eHalStatus halStatus;
17857 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017858 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
17859 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
17860
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17862
17863 /*-------------------------------------------------------------------------
17864 Sanity check
17865 -------------------------------------------------------------------------*/
17866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17867 ( NULL == pEventData->pEventData))
17868 {
17869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17870 "%s: Invalid parameters", __func__);
17871 WDI_ASSERT(0);
17872 return WDI_STATUS_E_FAILURE;
17873 }
17874
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017875 /*-------------------------------------------------------------------------
17876 Extract indication and send it to UMAC
17877 -------------------------------------------------------------------------*/
17878 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
17879 pEventData->pEventData,
17880 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
17881
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017882 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17883
17884 /*-------------------------------------------------------------------------
17885 Extract response and send it to UMAC
17886 -------------------------------------------------------------------------*/
17887 wpalMemoryCopy( &halStatus,
17888 pEventData->pEventData,
17889 sizeof(halStatus));
17890
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017891 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17892 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017893
17894 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017895 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017896
17897 return WDI_STATUS_SUCCESS;
17898}/*WDI_ProcessLinkEstablishReqRsp*/
17899#endif
schangd82195a2013-03-13 18:41:24 -070017900
Jeff Johnson295189b2012-06-20 16:38:30 -070017901/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017904
17905 @param pWDICtx: pointer to the WLAN DAL context
17906 pEventData: pointer to the event information structure
17907
Jeff Johnson295189b2012-06-20 16:38:30 -070017908 @see
17909 @return Result of the function call
17910*/
17911WDI_Status
17912WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017913(
Jeff Johnson295189b2012-06-20 16:38:30 -070017914 WDI_ControlBlockType* pWDICtx,
17915 WDI_EventInfoType* pEventData
17916)
17917{
17918 WDI_Status wdiStatus;
17919 eHalStatus halStatus;
17920 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17922
17923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 -------------------------------------------------------------------------*/
17926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17927 ( NULL == pEventData->pEventData))
17928 {
17929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 }
17934
17935 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17936
17937 /*-------------------------------------------------------------------------
17938 Extract response and send it to UMAC
17939 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017940 wpalMemoryCopy( &halStatus,
17941 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 sizeof(halStatus));
17943
Jeff Johnsone7245742012-09-05 17:12:55 -070017944 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017945
17946 /*Notify UMAC*/
17947 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17948
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017950}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017952 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017954
17955 @param pWDICtx: pointer to the WLAN DAL context
17956 pEventData: pointer to the event information structure
17957
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 @see
17959 @return Result of the function call
17960*/
17961WDI_Status
17962WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017963(
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 WDI_ControlBlockType* pWDICtx,
17965 WDI_EventInfoType* pEventData
17966)
17967{
17968 WDI_Status wdiStatus;
17969 eHalStatus halStatus;
17970 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017971 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17973
17974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 -------------------------------------------------------------------------*/
17977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17978 ( NULL == pEventData->pEventData))
17979 {
17980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017984 }
17985
17986 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17987
17988 /*-------------------------------------------------------------------------
17989 Extract response and send it to UMAC
17990 -------------------------------------------------------------------------*/
17991 halStatus = *((eHalStatus*)pEventData->pEventData);
17992
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017994
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017995 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17996 * Other module states are taken care by PMC.
17997 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17998 */
17999 if (wdiStatus != WDI_STATUS_SUCCESS) {
18000
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18002 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18003 halStatus);
18004 /* Call Back is not required as we are putting the DXE in FULL
18005 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018006 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18007
18008 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18010 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18011 WDI_ASSERT(0);
18012 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018013 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 /*Notify UMAC*/
18015 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18016
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018018}/*WDI_ProcessEnterImpsRsp*/
18019
18020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018021 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018022 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018023
18024 @param pWDICtx: pointer to the WLAN DAL context
18025 pEventData: pointer to the event information structure
18026
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 @see
18028 @return Result of the function call
18029*/
18030WDI_Status
18031WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018032(
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 WDI_ControlBlockType* pWDICtx,
18034 WDI_EventInfoType* pEventData
18035)
18036{
18037 WDI_Status wdiStatus;
18038 eHalStatus halStatus;
18039 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018040 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18042
18043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 -------------------------------------------------------------------------*/
18046 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18047 ( NULL == pEventData->pEventData))
18048 {
18049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 }
18054
18055 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18056
18057 /*-------------------------------------------------------------------------
18058 Extract response and send it to UMAC
18059 -------------------------------------------------------------------------*/
18060 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018061 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018062
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018063 if (halStatus != eHAL_STATUS_SUCCESS)
18064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18065 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18066
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018068 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18069 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18070 {
18071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18072 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18073 WDI_ASSERT(0);
18074 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018075 /*Notify UMAC*/
18076 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18077
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018079}/*WDI_ProcessExitImpsRsp*/
18080
18081/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018083 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018084
18085 @param pWDICtx: pointer to the WLAN DAL context
18086 pEventData: pointer to the event information structure
18087
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 @see
18089 @return Result of the function call
18090*/
18091WDI_Status
18092WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018093(
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 WDI_ControlBlockType* pWDICtx,
18095 WDI_EventInfoType* pEventData
18096)
18097{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018098 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18099 tHalEnterBmpsRspParams halEnterBmpsRsp;
18100 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18101 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018102 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18104
18105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 -------------------------------------------------------------------------*/
18108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18109 ( NULL == pEventData->pEventData))
18110 {
18111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 }
18116
Jeff Johnson295189b2012-06-20 16:38:30 -070018117 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018118 Extract response and send it to UMAC
18119 -------------------------------------------------------------------------*/
18120 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18121 {
18122 wpalMemoryCopy( &halEnterBmpsRsp,
18123 pEventData->pEventData,
18124 sizeof(halEnterBmpsRsp));
18125
18126 //Used to print debug message
18127 halStatus = halEnterBmpsRsp.status;
18128 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18129 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18130 }
18131 else
18132 {
18133 halStatus = *((eHalStatus*)pEventData->pEventData);
18134 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18135 }
18136
18137 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018138
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018139 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18140 * Other module states are taken care by PMC.
18141 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18142 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018143 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18144 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018145
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018147 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18148 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018149 /* Call Back is not required as we are putting the DXE in FULL
18150 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018151 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18152 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18153 {
18154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18155 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18156 WDI_ASSERT(0);
18157 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018158 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018159 }
18160
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018162 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018163
Jeff Johnsone7245742012-09-05 17:12:55 -070018164 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018165}/*WDI_ProcessEnterBmpsRsp*/
18166
18167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018170
18171 @param pWDICtx: pointer to the WLAN DAL context
18172 pEventData: pointer to the event information structure
18173
Jeff Johnson295189b2012-06-20 16:38:30 -070018174 @see
18175 @return Result of the function call
18176*/
18177WDI_Status
18178WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018179(
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 WDI_ControlBlockType* pWDICtx,
18181 WDI_EventInfoType* pEventData
18182)
18183{
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 eHalStatus halStatus;
18185 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018186 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018187 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18188 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18204
18205 /*-------------------------------------------------------------------------
18206 Extract response and send it to UMAC
18207 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018208
18209 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18210 {
18211 wpalMemoryCopy( &halExitBmpsRsp,
18212 pEventData->pEventData,
18213 sizeof(halExitBmpsRsp));
18214
18215 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18216 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18217 }
18218 else
18219 {
18220 halStatus = *((eHalStatus*)pEventData->pEventData);
18221 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18222 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018223
18224 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018225 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18226 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18227 {
18228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18229 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18230 WDI_ASSERT(0);
18231 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18233
18234 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018235 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018236
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018238}/*WDI_ProcessExitBmpsRsp*/
18239
18240/**
18241 @brief Process Enter UAPSD Rsp function (called when a response
18242 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018243
18244 @param pWDICtx: pointer to the WLAN DAL context
18245 pEventData: pointer to the event information structure
18246
Jeff Johnson295189b2012-06-20 16:38:30 -070018247 @see
18248 @return Result of the function call
18249*/
18250WDI_Status
18251WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018252(
Jeff Johnson295189b2012-06-20 16:38:30 -070018253 WDI_ControlBlockType* pWDICtx,
18254 WDI_EventInfoType* pEventData
18255)
18256{
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018258 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018260 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18261
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18263
18264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018266 -------------------------------------------------------------------------*/
18267 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18268 ( NULL == pEventData->pEventData))
18269 {
18270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018274 }
18275
18276 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18277
18278 /*-------------------------------------------------------------------------
18279 Extract response and send it to UMAC
18280 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018281 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18282 {
18283 wpalMemoryCopy( &halEnterUapsdRsp,
18284 pEventData->pEventData,
18285 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018286
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018287 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18288 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18289 }
18290 else
18291 {
18292 halStatus = *((eHalStatus*)pEventData->pEventData);
18293 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18294 }
18295
18296 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018297 {
18298 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18299 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18300 // the traffic to decide when to suspend the trigger frames when there is no traffic
18301 // activity on the trigger enabled ACs
18302 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18303
18304#ifdef WLAN_PERF
18305 // Increment the BD signature to refresh the fast path BD utilization
18306 pWDICtx->uBdSigSerialNum++;
18307#endif
18308 }
18309
18310 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018311 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018312
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018314}/*WDI_ProcessEnterUapsdRsp*/
18315
18316/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018317 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018319
18320 @param pWDICtx: pointer to the WLAN DAL context
18321 pEventData: pointer to the event information structure
18322
Jeff Johnson295189b2012-06-20 16:38:30 -070018323 @see
18324 @return Result of the function call
18325*/
18326WDI_Status
18327WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018328(
Jeff Johnson295189b2012-06-20 16:38:30 -070018329 WDI_ControlBlockType* pWDICtx,
18330 WDI_EventInfoType* pEventData
18331)
18332{
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 eHalStatus halStatus;
18334 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018335 tHalExitUapsdRspParams halExitUapsdRsp;
18336 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18338
18339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 -------------------------------------------------------------------------*/
18342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18343 ( NULL == pEventData->pEventData))
18344 {
18345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 }
18350
18351 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18352
18353 /*-------------------------------------------------------------------------
18354 Extract response and send it to UMAC
18355 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018356 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18357 {
18358 wpalMemoryCopy( &halExitUapsdRsp,
18359 pEventData->pEventData,
18360 sizeof(halExitUapsdRsp));
18361
18362 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18363 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18364 }
18365 else
18366 {
18367 halStatus = *((eHalStatus*)pEventData->pEventData);
18368 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18369 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018370 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18371 // directly instead of the FW WQ.
18372 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18373
18374#ifdef WLAN_PERF
18375 // Increment the BD signature to refresh the fast path BD utilization
18376 pWDICtx->uBdSigSerialNum++;
18377#endif
18378
18379 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018380 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018381
Jeff Johnsone7245742012-09-05 17:12:55 -070018382 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018383}/*WDI_ProcessExitUapsdRsp*/
18384
18385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018388
18389 @param pWDICtx: pointer to the WLAN DAL context
18390 pEventData: pointer to the event information structure
18391
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 @see
18393 @return Result of the function call
18394*/
18395WDI_Status
18396WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018397(
Jeff Johnson295189b2012-06-20 16:38:30 -070018398 WDI_ControlBlockType* pWDICtx,
18399 WDI_EventInfoType* pEventData
18400)
18401{
18402 WDI_Status wdiStatus;
18403 eHalStatus halStatus;
18404 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18406
18407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 -------------------------------------------------------------------------*/
18410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18411 ( NULL == pEventData->pEventData))
18412 {
18413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 }
18418
18419 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18420
18421 /*-------------------------------------------------------------------------
18422 Extract response and send it to UMAC
18423 -------------------------------------------------------------------------*/
18424 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018425 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018426
18427 /*Notify UMAC*/
18428 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18429
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018431}/*WDI_ProcessSetUapsdAcParamsRsp*/
18432
18433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018436
18437 @param pWDICtx: pointer to the WLAN DAL context
18438 pEventData: pointer to the event information structure
18439
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 @see
18441 @return Result of the function call
18442*/
18443WDI_Status
18444WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018445(
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 WDI_ControlBlockType* pWDICtx,
18447 WDI_EventInfoType* pEventData
18448)
18449{
18450 WDI_Status wdiStatus;
18451 eHalStatus halStatus;
18452 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18454
18455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 -------------------------------------------------------------------------*/
18458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18459 ( NULL == pEventData->pEventData))
18460 {
18461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 }
18466
18467 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18468
18469 /*-------------------------------------------------------------------------
18470 Extract response and send it to UMAC
18471 -------------------------------------------------------------------------*/
18472 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018474
18475 /*Notify UMAC*/
18476 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18477
Jeff Johnsone7245742012-09-05 17:12:55 -070018478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018479}/*WDI_ProcessUpdateUapsdParamsRsp*/
18480
18481/**
18482 @brief Process Configure RXP filter Rsp function (called when a
18483 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018484
18485 @param pWDICtx: pointer to the WLAN DAL context
18486 pEventData: pointer to the event information structure
18487
Jeff Johnson295189b2012-06-20 16:38:30 -070018488 @see
18489 @return Result of the function call
18490*/
18491WDI_Status
18492WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018493(
Jeff Johnson295189b2012-06-20 16:38:30 -070018494 WDI_ControlBlockType* pWDICtx,
18495 WDI_EventInfoType* pEventData
18496)
18497{
18498 WDI_Status wdiStatus;
18499 eHalStatus halStatus;
18500 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18502
18503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 -------------------------------------------------------------------------*/
18506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18507 ( NULL == pEventData->pEventData))
18508 {
18509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 }
18514
18515 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18516
18517 /*-------------------------------------------------------------------------
18518 Extract response and send it to UMAC
18519 -------------------------------------------------------------------------*/
18520 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018521 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018522
18523 /*Notify UMAC*/
18524 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18525
Jeff Johnsone7245742012-09-05 17:12:55 -070018526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018527}/*WDI_ProcessConfigureRxpFilterRsp*/
18528
18529/**
18530 @brief Process Set beacon filter Rsp function (called when a
18531 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018532
18533 @param pWDICtx: pointer to the WLAN DAL context
18534 pEventData: pointer to the event information structure
18535
Jeff Johnson295189b2012-06-20 16:38:30 -070018536 @see
18537 @return Result of the function call
18538*/
18539WDI_Status
18540WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018541(
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 WDI_ControlBlockType* pWDICtx,
18543 WDI_EventInfoType* pEventData
18544)
18545{
18546 WDI_Status wdiStatus;
18547 eHalStatus halStatus;
18548 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18550
18551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 -------------------------------------------------------------------------*/
18554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18555 ( NULL == pEventData->pEventData))
18556 {
18557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 }
18562
18563 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18564
18565 /*-------------------------------------------------------------------------
18566 Extract response and send it to UMAC
18567 -------------------------------------------------------------------------*/
18568 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018570
18571 /*Notify UMAC*/
18572 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18573
Jeff Johnsone7245742012-09-05 17:12:55 -070018574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018575}/*WDI_ProcessSetBeaconFilterRsp*/
18576
18577/**
18578 @brief Process remove beacon filter Rsp function (called when a
18579 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
18581 @param pWDICtx: pointer to the WLAN DAL context
18582 pEventData: pointer to the event information structure
18583
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 @see
18585 @return Result of the function call
18586*/
18587WDI_Status
18588WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018589(
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 WDI_ControlBlockType* pWDICtx,
18591 WDI_EventInfoType* pEventData
18592)
18593{
18594 WDI_Status wdiStatus;
18595 eHalStatus halStatus;
18596 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18598
18599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 -------------------------------------------------------------------------*/
18602 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18603 ( NULL == pEventData->pEventData))
18604 {
18605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018606 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 }
18610
18611 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18612
18613 /*-------------------------------------------------------------------------
18614 Extract response and send it to UMAC
18615 -------------------------------------------------------------------------*/
18616 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018618
18619 /*Notify UMAC*/
18620 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18621
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018623}/*WDI_ProcessRemBeaconFilterRsp*/
18624
18625/**
18626 @brief Process set RSSI thresholds Rsp function (called when a
18627 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018628
18629 @param pWDICtx: pointer to the WLAN DAL context
18630 pEventData: pointer to the event information structure
18631
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 @see
18633 @return Result of the function call
18634*/
18635WDI_Status
18636WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018637(
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 WDI_ControlBlockType* pWDICtx,
18639 WDI_EventInfoType* pEventData
18640)
18641{
18642 WDI_Status wdiStatus;
18643 eHalStatus halStatus;
18644 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18646
18647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 -------------------------------------------------------------------------*/
18650 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18651 ( NULL == pEventData->pEventData))
18652 {
18653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 }
18658
18659 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18660
18661 /*-------------------------------------------------------------------------
18662 Extract response and send it to UMAC
18663 -------------------------------------------------------------------------*/
18664 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018666
18667 /*Notify UMAC*/
18668 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18669
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018671}/*WDI_ProcessSetRSSIThresoldsRsp*/
18672
18673/**
18674 @brief Process host offload Rsp function (called when a
18675 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018676
18677 @param pWDICtx: pointer to the WLAN DAL context
18678 pEventData: pointer to the event information structure
18679
Jeff Johnson295189b2012-06-20 16:38:30 -070018680 @see
18681 @return Result of the function call
18682*/
18683WDI_Status
18684WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018685(
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 WDI_ControlBlockType* pWDICtx,
18687 WDI_EventInfoType* pEventData
18688)
18689{
18690 WDI_Status wdiStatus;
18691 eHalStatus halStatus;
18692 WDI_HostOffloadCb wdiHostOffloadCb;
18693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18694
18695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 -------------------------------------------------------------------------*/
18698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18699 ( NULL == pEventData->pEventData))
18700 {
18701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 }
18706
18707 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18708
18709 /*-------------------------------------------------------------------------
18710 Extract response and send it to UMAC
18711 -------------------------------------------------------------------------*/
18712 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018713 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018714
18715 /*Notify UMAC*/
18716 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18717
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018719}/*WDI_ProcessHostOffloadRsp*/
18720
18721/**
18722 @brief Process keep alive Rsp function (called when a
18723 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018724
18725 @param pWDICtx: pointer to the WLAN DAL context
18726 pEventData: pointer to the event information structure
18727
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 @see
18729 @return Result of the function call
18730*/
18731WDI_Status
18732WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018733(
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 WDI_ControlBlockType* pWDICtx,
18735 WDI_EventInfoType* pEventData
18736)
18737{
18738 WDI_Status wdiStatus;
18739 eHalStatus halStatus;
18740 WDI_KeepAliveCb wdiKeepAliveCb;
18741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18743 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18744
18745
18746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 -------------------------------------------------------------------------*/
18749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18750 ( NULL == pEventData->pEventData))
18751 {
18752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 }
18757
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18759
Jeff Johnson295189b2012-06-20 16:38:30 -070018760 /*-------------------------------------------------------------------------
18761 Extract response and send it to UMAC
18762 -------------------------------------------------------------------------*/
18763 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018765
18766 /*Notify UMAC*/
18767 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18768
Jeff Johnsone7245742012-09-05 17:12:55 -070018769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018770}/*WDI_ProcessKeepAliveRsp*/
18771
18772/**
18773 @brief Process wowl add ptrn Rsp function (called when a
18774 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018775
18776 @param pWDICtx: pointer to the WLAN DAL context
18777 pEventData: pointer to the event information structure
18778
Jeff Johnson295189b2012-06-20 16:38:30 -070018779 @see
18780 @return Result of the function call
18781*/
18782WDI_Status
18783WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018784(
Jeff Johnson295189b2012-06-20 16:38:30 -070018785 WDI_ControlBlockType* pWDICtx,
18786 WDI_EventInfoType* pEventData
18787)
18788{
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 eHalStatus halStatus;
18790 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018791 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18792 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18793
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18795
18796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 -------------------------------------------------------------------------*/
18799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18800 ( NULL == pEventData->pEventData))
18801 {
18802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 }
18807
18808 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18809
18810 /*-------------------------------------------------------------------------
18811 Extract response and send it to UMAC
18812 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018813 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18814 {
18815 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18816 pEventData->pEventData,
18817 sizeof(halAddWowlBcastPtrRsp));
18818
18819 wdiWowlAddBcPtrRsp.wdiStatus =
18820 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18821 }
18822 else
18823 {
18824 halStatus = *((eHalStatus*)pEventData->pEventData);
18825 wdiWowlAddBcPtrRsp.wdiStatus =
18826 WDI_HAL_2_WDI_STATUS(halStatus);
18827 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018828
18829 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018830 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018831
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833}/*WDI_ProcessWowlAddBcPtrnRsp*/
18834
18835/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018836 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018838
18839 @param pWDICtx: pointer to the WLAN DAL context
18840 pEventData: pointer to the event information structure
18841
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 @see
18843 @return Result of the function call
18844*/
18845WDI_Status
18846WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018847(
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 WDI_ControlBlockType* pWDICtx,
18849 WDI_EventInfoType* pEventData
18850)
18851{
Jeff Johnson295189b2012-06-20 16:38:30 -070018852 eHalStatus halStatus;
18853 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018854 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18855 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18857
18858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 -------------------------------------------------------------------------*/
18861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18862 ( NULL == pEventData->pEventData))
18863 {
18864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 }
18869
18870 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18871
18872 /*-------------------------------------------------------------------------
18873 Extract response and send it to UMAC
18874 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018875 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18876 {
18877 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18878 pEventData->pEventData,
18879 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018880
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018881 wdiWowlDelBcstPtrRsp.wdiStatus =
18882 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18883 }
18884 else
18885 {
18886 halStatus = *((eHalStatus*)pEventData->pEventData);
18887 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18888 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018890 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018891
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018893}/*WDI_ProcessWowlDelBcPtrnRsp*/
18894
18895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018896 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018898
18899 @param pWDICtx: pointer to the WLAN DAL context
18900 pEventData: pointer to the event information structure
18901
Jeff Johnson295189b2012-06-20 16:38:30 -070018902 @see
18903 @return Result of the function call
18904*/
18905WDI_Status
18906WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018907(
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 WDI_ControlBlockType* pWDICtx,
18909 WDI_EventInfoType* pEventData
18910)
18911{
Jeff Johnson295189b2012-06-20 16:38:30 -070018912 eHalStatus halStatus;
18913 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018914 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18915 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18917
18918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 -------------------------------------------------------------------------*/
18921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18922 ( NULL == pEventData->pEventData))
18923 {
18924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 }
18929
18930 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18931
18932 /*-------------------------------------------------------------------------
18933 Extract response and send it to UMAC
18934 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018935 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18936 {
18937 wpalMemoryCopy( &halEnterWowlRspParams,
18938 (wpt_uint8*)pEventData->pEventData,
18939 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018940
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018941 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18942 wdiwowlEnterRsp.status =
18943 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18944 }
18945 else
18946 {
18947 halStatus = *((eHalStatus*)pEventData->pEventData);
18948 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18949 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018951 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018952
Jeff Johnsone7245742012-09-05 17:12:55 -070018953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018954}/*WDI_ProcessWowlEnterRsp*/
18955
18956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018959
18960 @param pWDICtx: pointer to the WLAN DAL context
18961 pEventData: pointer to the event information structure
18962
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 @see
18964 @return Result of the function call
18965*/
18966WDI_Status
18967WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018968(
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 WDI_ControlBlockType* pWDICtx,
18970 WDI_EventInfoType* pEventData
18971)
18972{
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 eHalStatus halStatus;
18974 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018975 tHalExitWowlRspParams halExitWowlRspParams;
18976 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18977
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18979
18980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 -------------------------------------------------------------------------*/
18983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18984 ( NULL == pEventData->pEventData))
18985 {
18986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 }
18991
18992 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18993
18994 /*-------------------------------------------------------------------------
18995 Extract response and send it to UMAC
18996 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018997 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18998 {
18999 wpalMemoryCopy( &halExitWowlRspParams,
19000 pEventData->pEventData,
19001 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019003 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19004 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19005
19006 }
19007 else
19008 {
19009 halStatus = *((eHalStatus*)pEventData->pEventData);
19010 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19011 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019013 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019014
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019016}/*WDI_ProcessWowlExitRsp*/
19017
19018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019019 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019020 (called when a response is being received over the bus
19021 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019022
19023 @param pWDICtx: pointer to the WLAN DAL context
19024 pEventData: pointer to the event information structure
19025
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 @see
19027 @return Result of the function call
19028*/
19029WDI_Status
19030WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019031(
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 WDI_ControlBlockType* pWDICtx,
19033 WDI_EventInfoType* pEventData
19034)
19035{
19036 WDI_Status wdiStatus;
19037 eHalStatus halStatus;
19038 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19040
19041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 -------------------------------------------------------------------------*/
19044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19045 ( NULL == pEventData->pEventData))
19046 {
19047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 }
19052
19053 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19054
19055 /*-------------------------------------------------------------------------
19056 Extract response and send it to UMAC
19057 -------------------------------------------------------------------------*/
19058 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019059 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019060
19061 /*Notify UMAC*/
19062 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19063
Jeff Johnsone7245742012-09-05 17:12:55 -070019064 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019065}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19066
19067
19068/**
19069 @brief Process Nv download(called when a response
19070 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019071
19072 @param pWDICtx: pointer to the WLAN DAL context
19073 pEventData: pointer to the event information structure
19074
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 @see
19076 @return Result of the function call
19077*/
19078WDI_Status
19079WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019080(
Jeff Johnson295189b2012-06-20 16:38:30 -070019081 WDI_ControlBlockType* pWDICtx,
19082 WDI_EventInfoType* pEventData
19083)
19084{
19085
19086 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19087 tHalNvImgDownloadRspParams halNvDownloadRsp;
19088 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19089
19090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019092 -------------------------------------------------------------------------*/
19093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19094 ( NULL == pEventData->pEventData))
19095 {
19096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 }
19101
19102 /*-------------------------------------------------------------------------
19103 Extract response and send it to UMAC
19104 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 wpalMemoryCopy( &halNvDownloadRsp,
19106 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 sizeof(halNvDownloadRsp));
19108
19109 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19110
19111 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019112 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19113 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 {
19115 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019116 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 }
19118 else
19119 {
19120 /*Reset the Nv related global information in WDI context information */
19121 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19122 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19123 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19124 /*call WDA callback function for last fragment */
19125 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19126 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19127 }
19128
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019130}
19131#ifdef WLAN_FEATURE_VOWIFI_11R
19132/**
19133 @brief Process Add TSpec Rsp function (called when a response
19134 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019135
19136 @param pWDICtx: pointer to the WLAN DAL context
19137 pEventData: pointer to the event information structure
19138
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 @see
19140 @return Result of the function call
19141*/
19142WDI_Status
19143WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019144(
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 WDI_ControlBlockType* pWDICtx,
19146 WDI_EventInfoType* pEventData
19147)
19148{
19149 WDI_Status wdiStatus;
19150 tAggrAddTsRspParams aggrAddTsRsp;
19151 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19153
19154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019156 -------------------------------------------------------------------------*/
19157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19158 ( NULL == pEventData->pEventData))
19159 {
19160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 }
19165
19166 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19167
19168 /*-------------------------------------------------------------------------
19169 Extract response and send it to UMAC
19170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019171 wpalMemoryCopy( &aggrAddTsRsp,
19172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 sizeof(aggrAddTsRsp));
19174
19175 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019176 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019177
19178 /*Notify UMAC*/
19179 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19180
Jeff Johnsone7245742012-09-05 17:12:55 -070019181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019182}/*WDI_ProcessAddTSpecRsp*/
19183#endif /* WLAN_FEATURE_VOWIFI_11R */
19184
19185/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019188
19189 @param pWDICtx: pointer to the WLAN DAL context
19190 pEventData: pointer to the event information structure
19191
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 @see
19193 @return Result of the function call
19194*/
19195WDI_Status
19196WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019197(
Jeff Johnson295189b2012-06-20 16:38:30 -070019198 WDI_ControlBlockType* pWDICtx,
19199 WDI_EventInfoType* pEventData
19200)
19201{
19202 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19203 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19204 tHalHostResumeRspParams hostResumeRspMsg;
19205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19206
19207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 -------------------------------------------------------------------------*/
19210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19211 ( NULL == pEventData->pEventData))
19212 {
19213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 }
19218
19219 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19220
19221 /*-------------------------------------------------------------------------
19222 Extract response and send it to UMAC
19223 -------------------------------------------------------------------------*/
19224
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 (wpt_uint8*)pEventData->pEventData,
19227 sizeof(hostResumeRspMsg));
19228
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 wdiResumeRspParams.wdiStatus =
19230 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019231
19232 /*Notify UMAC*/
19233 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19234
19235 return WDI_STATUS_SUCCESS;
19236}
19237
19238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019240 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019241
19242 @param pWDICtx: pointer to the WLAN DAL context
19243 pEventData: pointer to the event information structure
19244
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 @see
19246 @return Result of the function call
19247*/
19248WDI_Status
19249WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019250(
Jeff Johnson295189b2012-06-20 16:38:30 -070019251 WDI_ControlBlockType* pWDICtx,
19252 WDI_EventInfoType* pEventData
19253)
19254{
19255 WDI_Status wdiStatus;
19256 eHalStatus halStatus;
19257 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19259
19260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 -------------------------------------------------------------------------*/
19263 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19264 ( NULL == pEventData->pEventData))
19265 {
19266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019271
19272 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019273
19274 /*-------------------------------------------------------------------------
19275 Extract response and send it to UMAC
19276 -------------------------------------------------------------------------*/
19277 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019279
19280 /*Notify UMAC*/
19281 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19282
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019284}/*WDI_ProcessSetTxPerTrackingRsp*/
19285
19286/*==========================================================================
19287 Indications from HAL
19288 ==========================================================================*/
19289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019290 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 indication of this kind is being received over the bus
19292 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019293
19294 @param pWDICtx: pointer to the WLAN DAL context
19295 pEventData: pointer to the event information structure
19296
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 @see
19298 @return Result of the function call
19299*/
19300WDI_Status
19301WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019302(
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 WDI_ControlBlockType* pWDICtx,
19304 WDI_EventInfoType* pEventData
19305)
19306{
19307 WDI_LowLevelIndType wdiInd;
19308 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19310
19311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 -------------------------------------------------------------------------*/
19314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19315 ( NULL == pEventData->pEventData))
19316 {
19317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 }
19322
19323 /*-------------------------------------------------------------------------
19324 Extract indication and send it to UMAC
19325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19327 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 sizeof(tHalRSSINotification));
19329
19330 /*Fill in the indication parameters*/
19331 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19332 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19333 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19334 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19335 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19336 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19337 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19338 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19339 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19340 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19341 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19342 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19343 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019344 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19345 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019346
ltimariu034f7d62013-01-24 18:54:33 -080019347 if ( pWDICtx->wdiLowLevelIndCB )
19348 {
19349 /*Notify UMAC of indication*/
19350 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19351 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019352
19353 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019354}/*WDI_ProcessLowRSSIInd*/
19355
19356
19357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019358 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019359 an indication of this kind is being received over the
19360 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019361
19362 @param pWDICtx: pointer to the WLAN DAL context
19363 pEventData: pointer to the event information structure
19364
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 @see
19366 @return Result of the function call
19367*/
19368WDI_Status
19369WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019370(
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 WDI_ControlBlockType* pWDICtx,
19372 WDI_EventInfoType* pEventData
19373)
19374{
19375 WDI_Status wdiStatus;
19376 eHalStatus halStatus;
19377 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019378 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19380
19381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019383 -------------------------------------------------------------------------*/
19384 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19385 ( NULL == pEventData->pEventData))
19386 {
19387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019392 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019393 /*-------------------------------------------------------------------------
19394 Extract indication and send it to UMAC
19395 -------------------------------------------------------------------------*/
19396 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19397 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019399
19400 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019401 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019402 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19403 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019404 if ( pWDICtx->wdiLowLevelIndCB )
19405 {
19406 /*Notify UMAC*/
19407 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19408 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019409
19410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019411}/*WDI_ProcessMissedBeaconInd*/
19412
19413
19414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019416 an indication of this kind is being received over the
19417 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019418
19419 @param pWDICtx: pointer to the WLAN DAL context
19420 pEventData: pointer to the event information structure
19421
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 @see
19423 @return Result of the function call
19424*/
19425WDI_Status
19426WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019427(
Jeff Johnson295189b2012-06-20 16:38:30 -070019428 WDI_ControlBlockType* pWDICtx,
19429 WDI_EventInfoType* pEventData
19430)
19431{
19432 WDI_Status wdiStatus;
19433 eHalStatus halStatus;
19434 WDI_LowLevelIndType wdiInd;
19435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19436
19437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 -------------------------------------------------------------------------*/
19440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19441 ( NULL == pEventData->pEventData))
19442 {
19443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 }
19448
19449 /*-------------------------------------------------------------------------
19450 Extract indication and send it to UMAC
19451 -------------------------------------------------------------------------*/
19452 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19453 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019454 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019455
19456 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 /* ! TO DO - fill in from HAL struct:
19459 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19460
ltimariu034f7d62013-01-24 18:54:33 -080019461 if ( pWDICtx->wdiLowLevelIndCB )
19462 {
19463 /*Notify UMAC*/
19464 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19465 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019466
19467 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019468}/*WDI_ProcessUnkAddrFrameInd*/
19469
19470
19471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019472 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019473 indication of this kind is being received over the bus
19474 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019475
19476 @param pWDICtx: pointer to the WLAN DAL context
19477 pEventData: pointer to the event information structure
19478
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 @see
19480 @return Result of the function call
19481*/
19482WDI_Status
19483WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019484(
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 WDI_ControlBlockType* pWDICtx,
19486 WDI_EventInfoType* pEventData
19487)
19488{
19489 WDI_LowLevelIndType wdiInd;
19490 tpSirMicFailureInd pHalMicFailureInd;
19491
19492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19493
19494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019496 -------------------------------------------------------------------------*/
19497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19498 ( NULL == pEventData->pEventData))
19499 {
19500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019505
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19507 /*-------------------------------------------------------------------------
19508 Extract indication and send it to UMAC
19509 -------------------------------------------------------------------------*/
19510
19511 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19514 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19515 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19516 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19517 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19518 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19519 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19520 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019523 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019525 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 pHalMicFailureInd->info.keyId;
19527 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19528 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19529 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19530 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019531
19532 if ( pWDICtx->wdiLowLevelIndCB )
19533 {
19534 /*Notify UMAC*/
19535 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019537
19538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019539}/*WDI_ProcessMicFailureInd*/
19540
19541
19542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 an indication of this kind is being received over the
19545 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019546
19547 @param pWDICtx: pointer to the WLAN DAL context
19548 pEventData: pointer to the event information structure
19549
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 @see
19551 @return Result of the function call
19552*/
19553WDI_Status
19554WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019555(
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 WDI_ControlBlockType* pWDICtx,
19557 WDI_EventInfoType* pEventData
19558)
19559{
19560 WDI_Status wdiStatus;
19561 eHalStatus halStatus;
19562 WDI_LowLevelIndType wdiInd;
19563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19564
19565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 -------------------------------------------------------------------------*/
19568 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19569 ( NULL == pEventData->pEventData))
19570 {
19571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 }
19576
19577 /*-------------------------------------------------------------------------
19578 Extract indication and send it to UMAC
19579 -------------------------------------------------------------------------*/
19580
19581 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19582 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019583 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019584
19585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19586 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019587
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19590 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019591
ltimariu034f7d62013-01-24 18:54:33 -080019592 if ( pWDICtx->wdiLowLevelIndCB )
19593 {
19594 /*Notify UMAC*/
19595 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19596 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019597
19598 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019599}/*WDI_ProcessFatalErrorInd*/
19600
19601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019602 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019603 an indication of this kind is being received over the
19604 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019605
19606 @param pWDICtx: pointer to the WLAN DAL context
19607 pEventData: pointer to the event information structure
19608
Jeff Johnson295189b2012-06-20 16:38:30 -070019609 @see
19610 @return Result of the function call
19611*/
19612WDI_Status
19613WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019614(
Jeff Johnson295189b2012-06-20 16:38:30 -070019615 WDI_ControlBlockType* pWDICtx,
19616 WDI_EventInfoType* pEventData
19617)
19618{
19619 tDeleteStaContextParams halDelSTACtx;
19620 WDI_LowLevelIndType wdiInd;
19621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19622
19623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019624 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019625 -------------------------------------------------------------------------*/
19626 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19627 ( NULL == pEventData->pEventData))
19628 {
19629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019633 }
19634
19635 /*-------------------------------------------------------------------------
19636 Extract indication and send it to UMAC
19637 -------------------------------------------------------------------------*/
19638
19639 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019640 wpalMemoryCopy( &halDelSTACtx,
19641 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 sizeof(halDelSTACtx));
19643
19644 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019645 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019646
19647 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19648 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19649 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19650 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19651
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019656 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19657 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019658
ltimariu034f7d62013-01-24 18:54:33 -080019659 if ( pWDICtx->wdiLowLevelIndCB )
19660 {
19661 /*Notify UMAC*/
19662 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19663 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019664
19665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019666}/*WDI_ProcessDelSTAInd*/
19667
19668/**
19669*@brief Process Coex Indication function (called when
19670 an indication of this kind is being received over the
19671 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019672
19673 @param pWDICtx: pointer to the WLAN DAL context
19674 pEventData: pointer to the event information structure
19675
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 @see
19677 @return Result of the function call
19678*/
19679WDI_Status
19680WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019681(
Jeff Johnson295189b2012-06-20 16:38:30 -070019682 WDI_ControlBlockType* pWDICtx,
19683 WDI_EventInfoType* pEventData
19684)
19685{
19686 WDI_LowLevelIndType wdiInd;
19687 tCoexIndMsg halCoexIndMsg;
19688 wpt_uint32 index;
19689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19690
19691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 -------------------------------------------------------------------------*/
19694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19695 ( NULL == pEventData->pEventData ))
19696 {
19697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 }
19702
19703 /*-------------------------------------------------------------------------
19704 Extract indication and send it to UMAC
19705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19707 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 sizeof(halCoexIndMsg.coexIndParams) );
19709
19710 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019711 wdiInd.wdiIndicationType = WDI_COEX_IND;
19712 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19714 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 }
19717
19718 // DEBUG
19719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19720 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19722 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19723 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19724 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19725 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019726
ltimariu034f7d62013-01-24 18:54:33 -080019727 if ( pWDICtx->wdiLowLevelIndCB )
19728 {
19729 /*Notify UMAC*/
19730 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19731 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019732
19733 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019734}/*WDI_ProcessCoexInd*/
19735
19736/**
19737*@brief Process Tx Complete Indication function (called when
19738 an indication of this kind is being received over the
19739 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019740
19741 @param pWDICtx: pointer to the WLAN DAL context
19742 pEventData: pointer to the event information structure
19743
Jeff Johnson295189b2012-06-20 16:38:30 -070019744 @see
19745 @return Result of the function call
19746*/
19747WDI_Status
19748WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019749(
Jeff Johnson295189b2012-06-20 16:38:30 -070019750 WDI_ControlBlockType* pWDICtx,
19751 WDI_EventInfoType* pEventData
19752)
19753{
19754 WDI_LowLevelIndType wdiInd;
19755 tTxComplIndMsg halTxComplIndMsg;
19756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19757
19758 /*-------------------------------------------------------------------------
19759 Sanity check
19760 -------------------------------------------------------------------------*/
19761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19762 ( NULL == pEventData->pEventData ))
19763 {
19764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019766 WDI_ASSERT( 0 );
19767 return WDI_STATUS_E_FAILURE;
19768 }
19769
19770 /*-------------------------------------------------------------------------
19771 Extract indication and send it to UMAC
19772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019773 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19774 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 sizeof(halTxComplIndMsg.txComplParams) );
19776
19777 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19779 wdiInd.wdiIndicationData.tx_complete_status
19780 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019781
ltimariu034f7d62013-01-24 18:54:33 -080019782 if ( pWDICtx->wdiLowLevelIndCB )
19783 {
19784 /*Notify UMAC*/
19785 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19786 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019787
19788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019790#ifdef FEATURE_WLAN_TDLS
19791/**
19792*@brief Process TDLS Indication function (called when
19793 an indication of this kind is being received over the
19794 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019795
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019796 @param pWDICtx: pointer to the WLAN DAL context
19797 pEventData: pointer to the event information structure
19798
19799 @see
19800 @return Result of the function call
19801*/
19802WDI_Status
19803WDI_ProcessTdlsInd
19804(
19805 WDI_ControlBlockType* pWDICtx,
19806 WDI_EventInfoType* pEventData
19807)
19808{
19809 WDI_LowLevelIndType wdiInd;
19810 tTdlsIndMsg halTdlsIndMsg;
19811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19812
19813 /*-------------------------------------------------------------------------
19814 Sanity check
19815 -------------------------------------------------------------------------*/
19816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19817 ( NULL == pEventData->pEventData ))
19818 {
19819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19820 "%s: Invalid parameters", __func__);
19821 WDI_ASSERT( 0 );
19822 return WDI_STATUS_E_FAILURE;
19823 }
19824
19825 /*-------------------------------------------------------------------------
19826 Extract indication and send it to UMAC
19827 -------------------------------------------------------------------------*/
19828 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19829 pEventData->pEventData,
19830 sizeof(halTdlsIndMsg.tdlsIndParams) );
19831
19832 /*Fill in the indication parameters*/
19833 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19834
19835 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19836 = halTdlsIndMsg.tdlsIndParams.status;
19837
19838 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19839 = halTdlsIndMsg.tdlsIndParams.staIdx;
19840
19841 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19842 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19843
19844 /*Notify UMAC*/
19845 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19846
19847 return WDI_STATUS_SUCCESS;
19848}/*WDI_ProcessTdlsInd*/
19849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019850/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019851*@brief Process Noa Start Indication function (called when
19852 an indication of this kind is being received over the
19853 bus from HAL)
19854
19855 @param pWDICtx: pointer to the WLAN DAL context
19856 pEventData: pointer to the event information structure
19857
19858 @see
19859 @return Result of the function call
19860*/
19861WDI_Status
19862WDI_ProcessP2pNoaStartInd
19863(
19864 WDI_ControlBlockType* pWDICtx,
19865 WDI_EventInfoType* pEventData
19866)
19867{
19868 WDI_LowLevelIndType wdiInd;
19869 tNoaStartIndMsg halNoaStartIndMsg;
19870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19871
19872 /*-------------------------------------------------------------------------
19873 Sanity check
19874 -------------------------------------------------------------------------*/
19875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19876 ( NULL == pEventData->pEventData ))
19877 {
19878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19879 "%s: Invalid parameters", __func__);
19880 WDI_ASSERT( 0 );
19881 return WDI_STATUS_E_FAILURE;
19882 }
19883
19884 /*-------------------------------------------------------------------------
19885 Extract indication and send it to UMAC
19886 -------------------------------------------------------------------------*/
19887 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19888 pEventData->pEventData,
19889 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19890
19891 /*Fill in the indication parameters*/
19892 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19893
19894 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19895 = halNoaStartIndMsg.noaStartIndParams.status;
19896
19897 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19898 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19899
19900 /*Notify UMAC*/
19901 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19902
19903 return WDI_STATUS_SUCCESS;
19904}/*WDI_ProcessNoaAttrInd*/
19905
19906/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019907*@brief Process Noa Attr Indication function (called when
19908 an indication of this kind is being received over the
19909 bus from HAL)
19910
19911 @param pWDICtx: pointer to the WLAN DAL context
19912 pEventData: pointer to the event information structure
19913
19914 @see
19915 @return Result of the function call
19916*/
19917WDI_Status
19918WDI_ProcessP2pNoaAttrInd
19919(
19920 WDI_ControlBlockType* pWDICtx,
19921 WDI_EventInfoType* pEventData
19922)
19923{
19924 WDI_LowLevelIndType wdiInd;
19925 tNoaAttrIndMsg halNoaAttrIndMsg;
19926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19927
19928 /*-------------------------------------------------------------------------
19929 Sanity check
19930 -------------------------------------------------------------------------*/
19931 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19932 ( NULL == pEventData->pEventData ))
19933 {
19934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 WDI_ASSERT( 0 );
19937 return WDI_STATUS_E_FAILURE;
19938 }
19939
19940 /*-------------------------------------------------------------------------
19941 Extract indication and send it to UMAC
19942 -------------------------------------------------------------------------*/
19943 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19944 pEventData->pEventData,
19945 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19946
19947 /*Fill in the indication parameters*/
19948 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019949
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19951 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019952
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19954 = halNoaAttrIndMsg.noaAttrIndParams.index;
19955 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19956 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19957 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19958 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019959
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19961 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19962 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19963 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19964 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19965 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19966 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19967 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019968
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19970 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19971 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19972 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19973 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19974 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19975 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19976 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19977
ltimariu034f7d62013-01-24 18:54:33 -080019978 if ( pWDICtx->wdiLowLevelIndCB )
19979 {
19980 /*Notify UMAC*/
19981 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019983
19984 return WDI_STATUS_SUCCESS;
19985}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019986
19987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019988 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 an indication of this kind is being received over the
19990 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019991
19992 @param pWDICtx: pointer to the WLAN DAL context
19993 pEventData: pointer to the event information structure
19994
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 @see
19996 @return Result of the function call
19997*/
19998WDI_Status
19999WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020000(
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 WDI_ControlBlockType* pWDICtx,
20002 WDI_EventInfoType* pEventData
20003)
20004{
20005 WDI_LowLevelIndType wdiInd;
20006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020007
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 /*-------------------------------------------------------------------------
20009 Extract indication and send it to UMAC
20010 -------------------------------------------------------------------------*/
20011 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20013
ltimariu034f7d62013-01-24 18:54:33 -080020014 if ( pWDICtx->wdiLowLevelIndCB )
20015 {
20016 /*Notify UMAC*/
20017 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20018 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020019
Jeff Johnsone7245742012-09-05 17:12:55 -070020020 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020021}/*WDI_ProcessTxPerHitInd*/
20022
Jeff Johnson295189b2012-06-20 16:38:30 -070020023/**
20024 @brief WDI_ProcessFTMCommandReq
20025 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020026
20027 @param pWDICtx: pointer to the WLAN DAL context
20028 pEventData: pointer to the event information structure
20029
Jeff Johnson295189b2012-06-20 16:38:30 -070020030 @see
20031 @return Result of the function call
20032*/
20033WDI_Status
20034WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020035(
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 WDI_ControlBlockType* pWDICtx,
20037 WDI_EventInfoType* pEventData
20038)
20039{
20040 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20041 wpt_uint8 *ftmCommandBuffer = NULL;
20042 wpt_uint16 dataOffset;
20043 wpt_uint16 bufferSize;
20044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 -------------------------------------------------------------------------*/
20047 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20048 ( NULL == pEventData->pEventData))
20049
20050 {
20051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 }
20056
20057 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20058
20059 /* Get MSG Buffer */
20060 WDI_GetMessageBuffer(pWDICtx,
20061 WDI_FTM_CMD_REQ,
20062 ftmCommandReq->bodyLength,
20063 &ftmCommandBuffer,
20064 &dataOffset,
20065 &bufferSize);
20066
20067 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20068 ftmCommandReq->FTMCommandBody,
20069 ftmCommandReq->bodyLength);
20070
20071 /* Send MSG */
20072 return WDI_SendMsg(pWDICtx,
20073 ftmCommandBuffer,
20074 bufferSize,
20075 pEventData->pCBfnc,
20076 pEventData->pUserData,
20077 WDI_FTM_CMD_RESP);
20078}
20079
20080/**
20081 @brief WDI_ProcessFTMCommandRsp
20082 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020083
20084 @param pWDICtx: pointer to the WLAN DAL context
20085 pEventData: pointer to the event information structure
20086
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 @see
20088 @return Result of the function call
20089*/
20090WDI_Status
20091WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020092(
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 WDI_ControlBlockType* pWDICtx,
20094 WDI_EventInfoType* pEventData
20095)
20096{
20097 WDI_FTMCommandRspCb ftmCMDRspCb;
20098 tProcessPttRspParams *ftmCMDRspData = NULL;
20099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20100
20101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 -------------------------------------------------------------------------*/
20104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20105 ( NULL == pEventData->pEventData))
20106 {
20107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 }
20112
20113 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20114
20115 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20116
Jeff Johnsone7245742012-09-05 17:12:55 -070020117 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20118 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20120
20121 /*Notify UMAC*/
20122 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20123
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020125}
Jeff Johnson295189b2012-06-20 16:38:30 -070020126/**
20127 @brief WDI_ProcessHalDumpCmdReq
20128 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020129
20130 @param pWDICtx: pointer to the WLAN DAL context
20131 pEventData: pointer to the event information structure
20132
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 @see
20134 @return Result of the function call
20135*/
20136WDI_Status
20137WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020138(
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 WDI_ControlBlockType* pWDICtx,
20140 WDI_EventInfoType* pEventData
20141)
20142{
20143 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20144 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20145 wpt_uint16 usDataOffset = 0;
20146 wpt_uint16 usSendSize = 0;
20147 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020149
20150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 -------------------------------------------------------------------------*/
20153 if (( NULL == pEventData ) ||
20154 ( NULL == pEventData->pEventData) ||
20155 ( NULL == pEventData->pCBfnc ))
20156 {
20157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 }
20162
20163 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20164 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20165
20166 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020174 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020177
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 /*-----------------------------------------------------------------------
20179 Get message buffer
20180 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20183 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020184 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20186 {
20187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20188 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20189 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020192 }
20193
Jeff Johnsone7245742012-09-05 17:12:55 -070020194 wpalMemoryCopy( pSendBuffer+usDataOffset,
20195 &halDumpCmdReqMsg.dumpCmdReqParams,
20196 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020197
20198 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020199 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020200
20201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20205 wdiHALDumpCmdRspCb, pEventData->pUserData,
20206 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020207}
20208
20209/**
20210 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 Process hal Dump Command Response from HAL, simply route to HDD
20212
20213 @param pWDICtx: pointer to the WLAN DAL context
20214 pEventData: pointer to the event information structure
20215
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 @see
20217 @return Result of the function call
20218*/
20219WDI_Status
20220WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020221(
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 WDI_ControlBlockType* pWDICtx,
20223 WDI_EventInfoType* pEventData
20224)
20225{
20226 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020227 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20229
20230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 -------------------------------------------------------------------------*/
20233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20234 ( NULL == pEventData->pEventData))
20235 {
20236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020243
20244 /*Initialize the WDI Response structure */
20245 wdiHALDumpCmdRsp.usBufferLen = 0;
20246 wdiHALDumpCmdRsp.pBuffer = NULL;
20247
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020248 wpalMemoryCopy( &halDumpCmdRspParams,
20249 pEventData->pEventData,
20250 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020251
20252 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020253 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020254
20255 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020256 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 {
20258 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020259 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20260 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20261
20262 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20263 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020264 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020265 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020266
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 /*Notify UMAC*/
20268 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20269
20270 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20271 {
20272 /* Free the allocated buffer */
20273 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20274 }
20275 return WDI_STATUS_SUCCESS;
20276}
20277
20278/*==========================================================================
20279 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020280
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020282 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020283==========================================================================*/
20284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020285 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 when it wishes to send up a notification like the ones
20287 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020288
Jeff Johnson295189b2012-06-20 16:38:30 -070020289 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020290
20291 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020292 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020293 wctsNotifyCBData: the callback data of the user
20294
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020296
20297 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020298*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020299void
Jeff Johnson295189b2012-06-20 16:38:30 -070020300WDI_NotifyMsgCTSCB
20301(
Jeff Johnsone7245742012-09-05 17:12:55 -070020302 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020303 WCTS_NotifyEventType wctsEvent,
20304 void* wctsNotifyCBData
20305)
20306{
Jeff Johnsone7245742012-09-05 17:12:55 -070020307 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20309
20310 if (NULL == pWDICtx )
20311 {
20312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020315 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 }
20317
20318 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20319 {
20320 /* callback presumably occurred after close */
20321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020322 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020323 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 }
20325
20326 if ( WCTS_EVENT_OPEN == wctsEvent )
20327 {
20328 /*Flag must be set atomically as it is checked from incoming request
20329 functions*/
20330 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020331 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020332
20333 /*Nothing to do - so try to dequeue any pending request that may have
20334 occurred while we were trying to establish this*/
20335 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 {
20340 /*Flag must be set atomically as it is checked from incoming request
20341 functions*/
20342 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020344
20345 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020346 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 wpalMutexRelease(&pWDICtx->wptMutex);
20348
20349 /*Notify that the Control Channel is closed */
20350 wpalEventSet(&pWDICtx->wctsActionEvent);
20351 }
20352
20353}/*WDI_NotifyMsgCTSCB*/
20354
20355
20356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 when it wishes to send up a packet received over the
20359 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020360
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020362
20363 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 pMsg: the packet
20365 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 wctsRxMsgCBData: the callback data of the user
20367
Jeff Johnson295189b2012-06-20 16:38:30 -070020368 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020369
20370 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020371*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020372void
20373WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020374(
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 void* pMsg,
20377 wpt_uint32 uLen,
20378 void* wctsRxMsgCBData
20379)
20380{
Jeff Johnsone7245742012-09-05 17:12:55 -070020381 tHalMsgHeader *pHalMsgHeader;
20382 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20385
20386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020389 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 ( uLen < sizeof(tHalMsgHeader)))
20391 {
20392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 }
20397
20398 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20399 {
20400 /* callback presumably occurred after close */
20401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020402 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 }
20405
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 context - so no serialization is necessary here
20408 ! - revisit this assumption */
20409
20410 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20411
20412 if ( uLen != pHalMsgHeader->msgLen )
20413 {
20414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20415 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20417 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 }
20419
20420 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20421
20422 /*The message itself starts after the header*/
20423 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20424 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20425 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20426 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20427
20428
20429 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20430 {
20431 /*Stop the timer as the response was received */
20432 /*!UT - check for potential race conditions between stop and response */
20433 wpalTimerStop(&pWDICtx->wptResponseTimer);
20434 }
20435 /* Check if we receive a response message which is not expected */
20436 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20437 {
20438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20439 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20440 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020441 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20443 pWDICtx->wdiExpectedResponse);
20444 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20445 return;
20446 }
20447
20448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20449 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20450
20451 /*Post response event to the state machine*/
20452 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20453
20454}/*WDI_RXMsgCTSCB*/
20455
20456
20457/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020459========================================================================*/
20460
20461/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020462 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020464
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 @param pWDICtx - pointer to the control block
20466
20467 @return Result of the function call
20468*/
20469WPT_INLINE WDI_Status
20470WDI_CleanCB
20471(
20472 WDI_ControlBlockType* pWDICtx
20473)
20474{
20475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20476
20477 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020478 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020479
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20482 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20483
20484 WDI_ResetAssocSessions( pWDICtx );
20485
20486 return WDI_STATUS_SUCCESS;
20487}/*WDI_CleanCB*/
20488
20489
20490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020492
Jeff Johnsone7245742012-09-05 17:12:55 -070020493
20494 @param pWDICtx: pointer to the WLAN DAL context
20495 pEventData: pointer to the event information structure
20496
Jeff Johnson295189b2012-06-20 16:38:30 -070020497 @see
20498 @return Result of the function call
20499*/
20500WPT_INLINE WDI_Status
20501WDI_ProcessRequest
20502(
20503 WDI_ControlBlockType* pWDICtx,
20504 WDI_EventInfoType* pEventData
20505)
20506{
20507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20508
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 already checked these pointers*/
20511
20512 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20513 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20516 "Calling request processing function for req %s (%d) %x",
20517 WDI_getReqMsgString(pEventData->wdiRequest),
20518 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20519 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20520 }
20521 else
20522 {
20523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020524 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 pEventData->wdiRequest);
20526 return WDI_STATUS_E_NOT_IMPLEMENT;
20527 }
20528}/*WDI_ProcessRequest*/
20529
20530
20531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 prefixes it with a send message header
20535
20536 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 wdiReqType: type of the request being sent
20538 uBufferLen: message buffer len
20539 pMsgBuffer: resulting allocated buffer
20540 pusDataOffset: offset in the buffer where the caller
20541 can start copying its message data
20542 puBufferSize: the resulting buffer size (offset+buff
20543 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020544
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 @see
20546 @return Result of the function call
20547*/
20548WDI_Status
20549WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020550(
20551 WDI_ControlBlockType* pWDICtx,
20552 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 wpt_uint8** pMsgBuffer,
20555 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 wpt_uint16* pusBufferSize
20557)
20558{
20559 tHalMsgHeader halMsgHeader;
20560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20561
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 again*/
20564
20565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020568 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20570 if ( NULL == *pMsgBuffer )
20571 {
20572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20573 "Unable to allocate message buffer for req %s (%d)",
20574 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 }
20579
20580 /*-------------------------------------------------------------------------
20581 Fill in the message header
20582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020583 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20584 /* Fill msgVersion */
20585#ifdef WLAN_FEATURE_11AC
20586 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020587 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 else
20589#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020590 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020591
Jeff Johnsone7245742012-09-05 17:12:55 -070020592 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20593 *pusDataOffset = sizeof(halMsgHeader);
20594 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20595
20596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020597}/*WDI_GetMessageBuffer*/
20598
20599
20600/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020603 the CB
20604
20605 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020607
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 usSendSize size of the buffer to be sent
20609 pRspCb: response callback - save in the WDI
20610 CB
20611 pUserData: user data associated with the
20612 callback
20613 wdiExpectedResponse: the code of the response that is
20614 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020615
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 @see
20617 @return Result of the function call
20618*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020619WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020620WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020621(
20622 WDI_ControlBlockType* pWDICtx,
20623 wpt_uint8* pSendBuffer,
20624 wpt_uint32 usSendSize,
20625 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 void* pUserData,
20627 WDI_ResponseEnumType wdiExpectedResponse
20628)
20629{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020630 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020631 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20633
20634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 ------------------------------------------------------------------------*/
20637 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 pWDICtx->pfncRspCB = pRspCb;
20639 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020640
20641 /*-----------------------------------------------------------------------
20642 Call the CTS to send this message over - free message afterwards
20643 - notify transport failure
20644 Note: CTS is reponsible for freeing the message buffer.
20645 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020646 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20647 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20648 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 "Failed to send message over the bus - catastrophic failure");
20652
Jeff Johnsond13512a2012-07-17 11:42:19 -070020653 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020655 else
20656 {
20657 /* even when message was placed in CTS deferred Q, we will treat it
20658 success but log this info
20659 */
20660 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20661 {
20662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20663 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20664 "response %s (%d)",
20665 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20666 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020667 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020668 }
20669 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020670
Jeff Johnsond13512a2012-07-17 11:42:19 -070020671 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020672 if ( NULL != pWDICtx->wdiReqStatusCB )
20673 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020674 /*Inform originator whether request went through or not*/
20675 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20676 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 pWDICtx->wdiReqStatusCB = NULL;
20678 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020679 callback(wdiStatus, callbackContext);
20680
20681 /*For WDI requests which have registered a request callback,
20682 inform the WDA caller of the same via setting the return value
20683 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20684 end up repeating the functonality in the req callback for the
20685 WDI_STATUS_E_FAILURE case*/
20686 if (wdiStatus == WDI_STATUS_E_FAILURE)
20687 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 }
20689
Jeff Johnsond13512a2012-07-17 11:42:19 -070020690 if ( wdiStatus == WDI_STATUS_SUCCESS )
20691 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 /*Start timer for the expected response */
20693 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020694
20695 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020696 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020697 }
20698 else
20699 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020700 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020701 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20702 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020703
Jeff Johnsond13512a2012-07-17 11:42:19 -070020704 return wdiStatus;
20705
Jeff Johnson295189b2012-06-20 16:38:30 -070020706}/*WDI_SendMsg*/
20707
20708
20709
20710/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020711 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 the bus using the control transport and saves some info
20713 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020714
20715 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 pSendBuffer: buffer to be sent
20717 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020718
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 @see
20720 @return Result of the function call
20721*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020722WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020723WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020724(
20725 WDI_ControlBlockType* pWDICtx,
20726 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 wpt_uint32 usSendSize
20728)
20729{
20730 wpt_uint32 uStatus ;
20731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20732
20733 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 Note: CTS is reponsible for freeing the message buffer.
20736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 (void*)pSendBuffer, usSendSize );
20739
20740 /*Inform Upper MAC about the outcome of the request*/
20741 if ( NULL != pWDICtx->wdiReqStatusCB )
20742 {
20743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20744 "Send indication status : %d", uStatus);
20745
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020746 /* even if CTS placed indication into its deferred Q, we treat it
20747 * as success and let CTS drain its queue as per smd interrupt to CTS
20748 */
20749 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 -070020750 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 }
20752
20753 /*If sending of the message failed - it is considered catastrophic and
20754 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020755 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20756 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20757
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 {
20759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020761
20762 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20763 return WDI_STATUS_E_FAILURE;
20764 }
20765
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020767}/*WDI_SendIndication*/
20768
20769
20770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020771 @brief WDI_DetectedDeviceError - called internally by DAL when
20772 it has detected a failure in the device
20773
20774 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 usErrorCode: error code detected by WDI or received
20776 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020777
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020780*/
20781void
20782WDI_DetectedDeviceError
20783(
20784 WDI_ControlBlockType* pWDICtx,
20785 wpt_uint16 usErrorCode
20786)
20787{
20788 WDI_LowLevelIndType wdiInd;
20789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20790
20791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20792 "Device Error detected code: %d - transitioning to stopped state",
20793 usErrorCode);
20794
20795 wpalMutexAcquire(&pWDICtx->wptMutex);
20796
20797 WDI_STATableStop(pWDICtx);
20798
20799 WDI_ResetAssocSessions(pWDICtx);
20800
20801 /*Set the expected state transition to stopped - because the device
20802 experienced a failure*/
20803 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20804
20805 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020807
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020809
20810 /*TO DO: - there should be an attempt to reset the device here*/
20811
20812 wpalMutexRelease(&pWDICtx->wptMutex);
20813
20814 /*------------------------------------------------------------------------
20815 Notify UMAC if a handler is registered
20816 ------------------------------------------------------------------------*/
20817 if (pWDICtx->wdiLowLevelIndCB)
20818 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20820 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020821
20822 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20823 }
20824}/*WDI_DetectedDeviceError*/
20825
20826/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020827 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 we started on send message has expire - this should
20829 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 reply - trigger catastrophic failure
20831 @param
20832
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020834
20835 @see
20836 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020837*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020838void
Jeff Johnson295189b2012-06-20 16:38:30 -070020839WDI_ResponseTimerCB
20840(
20841 void *pUserData
20842)
20843{
20844 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20846
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020847 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 }
20854
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020855 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020856 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020857
20858 /* If response timer is running at this time that means this timer
20859 * event is not for the last request but rather last-to-last request and
20860 * this timer event has come after we recevied respone for last-to-last
20861 * message
20862 */
20863 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20864 {
20865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20866 "WDI_ResponseTimerCB: timer in running state on timer event, "
20867 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20868 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20869 return;
20870 }
20871
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020872 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 {
20874
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020877 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020879 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20880 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020881
20882 /* WDI timeout means Riva is not responding or SMD communication to Riva
20883 * is not happening. The only possible way to recover from this error
20884 * is to initiate SSR from APPS.
20885 * There is also an option to re-enable wifi, which will eventually
20886 * trigger SSR
20887 */
20888 if (gWDICb.bEnableSSR == false)
20889 {
20890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20891 "SSR is not enabled on WDI timeout");
20892 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20893 return;
20894 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020895#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020896 wpalWcnssResetIntr();
20897 /* if this timer fires, it means Riva did not receive the FIQ */
20898 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020899#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020900 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20901 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020902#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020903 }
20904 else
20905 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020907 "Timeout occurred but not waiting for any response %d "
20908 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20909 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20910 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 }
20912
20913 return;
20914
20915}/*WDI_ResponseTimerCB*/
20916
20917
20918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020920
Jeff Johnsone7245742012-09-05 17:12:55 -070020921
20922 @param pWDICtx: pointer to the WLAN DAL context
20923 pEventData: pointer to the event information structure
20924
Jeff Johnson295189b2012-06-20 16:38:30 -070020925 @see
20926 @return Result of the function call
20927*/
20928WPT_INLINE WDI_Status
20929WDI_ProcessResponse
20930(
20931 WDI_ControlBlockType* pWDICtx,
20932 WDI_EventInfoType* pEventData
20933)
20934{
20935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20936
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 already checked these pointers
20939 ! - revisit this assumption */
20940 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20941 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020944 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 WDI_getRespMsgString(pEventData->wdiResponse),
20946 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20947 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20948 }
20949 else
20950 {
20951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 pEventData->wdiResponse);
20954 return WDI_STATUS_E_NOT_IMPLEMENT;
20955 }
20956}/*WDI_ProcessResponse*/
20957
20958
20959/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020961=========================================================================*/
20962
20963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020964 @brief Utility function used by the DAL Core to help queue a
20965 request that cannot be processed right away.
20966 @param
20967
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 pWDICtx: - pointer to the WDI control block
20969 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 queued
20971
20972 @see
20973 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020974*/
20975WDI_Status
20976WDI_QueuePendingReq
20977(
20978 WDI_ControlBlockType* pWDICtx,
20979 WDI_EventInfoType* pEventData
20980)
20981{
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020984 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20986
20987 if ( NULL == pEventDataQueue )
20988 {
20989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 WDI_ASSERT(0);
20992 return WDI_STATUS_MEM_FAILURE;
20993 }
20994
20995 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20996 pEventDataQueue->pUserData = pEventData->pUserData;
20997 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20998 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000
21001 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21002 {
21003 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021004
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 if ( NULL == pEventInfo )
21006 {
21007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 WDI_ASSERT(0);
21010 wpalMemoryFree(pEventDataQueue);
21011 return WDI_STATUS_MEM_FAILURE;
21012 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021013
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21015
21016 }
21017 pEventDataQueue->pEventData = pEventInfo;
21018
21019 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021020 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021021
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021023
21024 return WDI_STATUS_SUCCESS;
21025}/*WDI_QueuePendingReq*/
21026
21027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 @param
21031
21032 pMsg - pointer to the message
21033
21034 @see
21035 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021036*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021037void
Jeff Johnson295189b2012-06-20 16:38:30 -070021038WDI_PALCtrlMsgCB
21039(
21040 wpt_msg *pMsg
21041)
21042{
21043 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 WDI_ControlBlockType* pWDICtx = NULL;
21045 WDI_Status wdiStatus;
21046 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 void* pUserData;
21048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21049
21050 if (( NULL == pMsg )||
21051 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21052 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21053 {
21054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 }
21059
21060 /*Transition back to the state that we had before serialization
21061 - serialization transitions us to BUSY to stop any incomming requests
21062 ! TO DO L: possible race condition here if a request comes in between the
21063 state transition and the post function*/
21064
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021066
21067 /*-----------------------------------------------------------------------
21068 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 -----------------------------------------------------------------------*/
21071 switch ( pEventData->wdiRequest )
21072 {
21073
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21076 break;
21077
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 case WDI_NV_DOWNLOAD_REQ:
21079 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21080 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21081 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21082 {
21083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021084 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21086 }
21087 else
21088 {
21089 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21090 }
21091
21092 break;
21093
21094 default:
21095 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21096 break;
21097 }/*switch ( pEventData->wdiRequest )*/
21098
21099 if ( WDI_STATUS_SUCCESS != wdiStatus )
21100 {
21101 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21102
21103 if ( NULL != pfnReqStatusCB )
21104 {
21105 /*Fail the request*/
21106 pfnReqStatusCB( wdiStatus, pUserData);
21107 }
21108 }
21109
21110 /* Free data - that was allocated when queueing*/
21111 if( pEventData != NULL )
21112 {
21113 if( pEventData->pEventData != NULL )
21114 {
21115 wpalMemoryFree(pEventData->pEventData);
21116 }
21117 wpalMemoryFree(pEventData);
21118 }
21119
21120 if( pMsg != NULL )
21121 {
21122 wpalMemoryFree(pMsg);
21123 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021124
Jeff Johnson295189b2012-06-20 16:38:30 -070021125}/*WDI_PALCtrlMsgCB*/
21126
21127/**
21128 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 and schedule for execution a pending request
21130 @param
21131
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 pWDICtx: - pointer to the WDI control block
21133 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021134 queued
21135
21136 @see
21137 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021138*/
21139WDI_Status
21140WDI_DequeuePendingReq
21141(
21142 WDI_ControlBlockType* pWDICtx
21143)
21144{
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021146 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021147 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21149
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021151
21152 if ( NULL == pNode )
21153 {
21154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 return WDI_STATUS_SUCCESS;
21157 }
21158
21159 /*The node actually points to the 1st element inside the Event Data struct -
21160 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021161 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021162
21163 /*Serialize processing in the control thread
21164 !TO DO: - check to see if these are all the messages params that need
21165 to be filled in*/
21166 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21167
21168 if ( NULL == palMsg )
21169 {
21170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021175 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 palMsg->callback = WDI_PALCtrlMsgCB;
21177 palMsg->ptr = pEventData;
21178
21179 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021180 palMsg->val = pWDICtx->uGlobalState;
21181
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 /*Transition back to BUSY as we need to handle a queued request*/
21183 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021184
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21186
21187 return WDI_STATUS_PENDING;
21188}/*WDI_DequeuePendingReq*/
21189
21190
21191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 away.- The assoc requests will be queued by BSSID
21195 @param
21196
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 pWDICtx: - pointer to the WDI control block
21198 pEventData: pointer to the evnt info that needs to be queued
21199 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021200
21201 @see
21202 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021203*/
21204WDI_Status
21205WDI_QueueNewAssocRequest
21206(
21207 WDI_ControlBlockType* pWDICtx,
21208 WDI_EventInfoType* pEventData,
21209 wpt_macAddr macBSSID
21210)
21211{
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 wpt_uint8 i;
21213 WDI_BSSSessionType* pSession = NULL;
21214 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021216 void* pEventInfo;
21217 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021219
Jeff Johnsone7245742012-09-05 17:12:55 -070021220
21221 /*------------------------------------------------------------------------
21222 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 ------------------------------------------------------------------------*/
21224 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21225 {
21226 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21227 {
21228 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021229 pSession = &pWDICtx->aBSSSessions[i];
21230 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 }
21232 }
21233
21234 if ( i >= WDI_MAX_BSS_SESSIONS )
21235 {
21236 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021239
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 /*------------------------------------------------------------------------
21241 Fill in the BSSID for this session and set the usage flag
21242 ------------------------------------------------------------------------*/
21243 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021245
21246 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021247 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 ------------------------------------------------------------------------*/
21249 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21250 if ( NULL == pEventDataQueue )
21251 {
21252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021253 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 WDI_ASSERT(0);
21255 return WDI_STATUS_MEM_FAILURE;
21256 }
21257
21258 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21259 if ( NULL == pSessionIdElement )
21260 {
21261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021262 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 WDI_ASSERT(0);
21264 wpalMemoryFree(pEventDataQueue);
21265 return WDI_STATUS_MEM_FAILURE;
21266 }
21267
21268 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21269 if ( NULL == pEventInfo )
21270 {
21271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021272 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 WDI_ASSERT(0);
21274 wpalMemoryFree(pSessionIdElement);
21275 wpalMemoryFree(pEventDataQueue);
21276 return WDI_STATUS_MEM_FAILURE;
21277 }
21278
21279 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21280 pEventDataQueue->pUserData = pEventData->pUserData;
21281 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21282 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021283 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021284
21285 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21286 pEventDataQueue->pEventData = pEventInfo;
21287
21288 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021289 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021290
21291 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021295
21296 /*We need to maintain a separate list that keeps track of the order in which
21297 the new assoc requests are being queued such that we can start processing
21298 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 pSessionIdElement->ucIndex = i;
21300 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301
21302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21303 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021305
21306 /*Return pending as this is what the status of the request is since it has
21307 been queued*/
21308 return WDI_STATUS_PENDING;
21309}/*WDI_QueueNewAssocRequest*/
21310
21311/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 away.- The assoc requests will be queued by BSSID
21315 @param
21316
Jeff Johnson295189b2012-06-20 16:38:30 -070021317 pWDICtx: - pointer to the WDI control block
21318 pSession: - session in which to queue
21319 pEventData: pointer to the event info that needs to be
21320 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021321
21322 @see
21323 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021324*/
21325WDI_Status
21326WDI_QueueAssocRequest
21327(
21328 WDI_ControlBlockType* pWDICtx,
21329 WDI_BSSSessionType* pSession,
21330 WDI_EventInfoType* pEventData
21331)
21332{
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021337
21338 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 Sanity check
21340 ------------------------------------------------------------------------*/
21341 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21342 {
21343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021345
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 }
21348
21349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 ------------------------------------------------------------------------*/
21352 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21353 if ( NULL == pEventDataQueue )
21354 {
21355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021356 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 WDI_ASSERT(0);
21358 return WDI_STATUS_MEM_FAILURE;
21359 }
21360
21361 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21362 if ( NULL == pEventInfo )
21363 {
21364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21365 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021366 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 WDI_ASSERT(0);
21368 wpalMemoryFree(pEventDataQueue);
21369 return WDI_STATUS_MEM_FAILURE;
21370 }
21371
21372 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21373 pEventDataQueue->pUserData = pEventData->pUserData;
21374 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21375 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021377 pEventDataQueue->pEventData = pEventInfo;
21378
21379 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21380
21381 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021383
21384 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021386
Jeff Johnsone7245742012-09-05 17:12:55 -070021387 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021388
21389 /*The result of this operation is pending because the request has been
21390 queued and it will be processed at a later moment in time */
21391 return WDI_STATUS_PENDING;
21392}/*WDI_QueueAssocRequest*/
21393
21394/**
21395 @brief Utility function used by the DAL Core to help dequeue
21396 an association request that was pending
21397 The request will be queued up in front of the main
21398 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 @param
21400
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021402
21403
21404 @see
21405 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021406*/
21407WDI_Status
21408WDI_DequeueAssocRequest
21409(
21410 WDI_ControlBlockType* pWDICtx
21411)
21412{
Jeff Johnsone7245742012-09-05 17:12:55 -070021413 wpt_list_node* pNode = NULL;
21414 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 WDI_BSSSessionType* pSession;
21416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021417
21418 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 Sanity check
21420 ------------------------------------------------------------------------*/
21421 if ( NULL == pWDICtx )
21422 {
21423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021425
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 }
21428
21429 /*------------------------------------------------------------------------
21430 An association has been completed => a new association can occur
21431 Check to see if there are any pending associations ->
21432 If so , transfer all the pending requests into the busy queue for
21433 processing
21434 These requests have arrived prior to the requests in the busy queue
21435 (bc they needed to be processed in order to be placed in this queue)
21436 => they will be placed at the front of the busy queue
21437 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021439
21440 if ( NULL == pNode )
21441 {
21442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 return WDI_STATUS_SUCCESS;
21445 }
21446
21447 /*The node actually points to the 1st element inside the Session Id struct -
21448 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021450
21451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21452 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21453
21454 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21455 {
21456 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021457
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 the front of the main waiting queue for subsequent execution*/
21460 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 while ( NULL != pNode )
21462 {
21463 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021464 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21465 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 }
21469 else
21470 {
21471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 WPAL_ASSERT(0);
21474 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021477
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21479 wpalMemoryFree(pSessionIdElement);
21480 return WDI_STATUS_SUCCESS;
21481}/*WDI_DequeueAssocRequest*/
21482
21483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021484 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 pending requests - all req cb will be called with
21486 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 @param
21488
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021490
21491 @see
21492 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021493*/
21494WDI_Status
21495WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021496(
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 WDI_ControlBlockType* pWDICtx
21498)
21499{
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 void* pUserData;
21504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21505
Jeff Johnsone7245742012-09-05 17:12:55 -070021506 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021507
21508 /*------------------------------------------------------------------------
21509 Go through all the requests and fail them - this will only be called
21510 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 ------------------------------------------------------------------------*/
21513 while( pNode )
21514 {
21515 /*The node actually points to the 1st element inside the Event Data struct -
21516 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021517 pEventDataQueue = (WDI_EventInfoType*)pNode;
21518
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21520 if ( NULL != pfnReqStatusCB )
21521 {
21522 /*Fail the request*/
21523 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21524 }
21525 /* Free data - that was allocated when queueing */
21526 if ( pEventDataQueue->pEventData != NULL )
21527 {
21528 wpalMemoryFree(pEventDataQueue->pEventData);
21529 }
21530 wpalMemoryFree(pEventDataQueue);
21531
21532 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21533 {
21534 break;
21535 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 }
21537
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 return WDI_STATUS_SUCCESS;
21539}/*WDI_ClearPendingRequests*/
21540
21541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 @brief Helper routine used to init the BSS Sessions in the WDI control block
21543
21544
21545 @param pWDICtx: pointer to the WLAN DAL context
21546
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 @see
21548*/
21549void
21550WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021551(
Jeff Johnson295189b2012-06-20 16:38:30 -070021552 WDI_ControlBlockType* pWDICtx
21553)
21554{
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21557
21558 /*-------------------------------------------------------------------------
21559 No Sanity check
21560 -------------------------------------------------------------------------*/
21561 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21562 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021563 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021564 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21565 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21566 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21567 }
21568}/*WDI_ResetAssocSessions*/
21569
21570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 @brief Helper routine used to find a session based on the BSSID
21572
21573
21574 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021576 pSession: pointer to the session (if found)
21577
Jeff Johnson295189b2012-06-20 16:38:30 -070021578 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021580*/
21581wpt_uint8
21582WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021583(
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 WDI_ControlBlockType* pWDICtx,
21585 wpt_macAddr macBSSID,
21586 WDI_BSSSessionType** ppSession
21587)
21588{
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21591
21592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 -------------------------------------------------------------------------*/
21595 if ( NULL == ppSession )
21596 {
21597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021598 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 }
21601
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021603
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 /*------------------------------------------------------------------------
21605 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 ------------------------------------------------------------------------*/
21607 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21608 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021609 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21610 (eWLAN_PAL_TRUE ==
21611 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21612 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 {
21614 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 return i;
21617 }
21618 }
21619
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021621}/*WDI_FindAssocSession*/
21622
21623/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 @brief Helper routine used to find a session based on the BSSID
21625
21626
21627 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021628 ucBSSIdx: BSS Index of the session
21629 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021630
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021632 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021633*/
21634wpt_uint8
21635WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021636(
Jeff Johnson295189b2012-06-20 16:38:30 -070021637 WDI_ControlBlockType* pWDICtx,
21638 wpt_uint16 ucBSSIdx,
21639 WDI_BSSSessionType** ppSession
21640)
21641{
Jeff Johnsone7245742012-09-05 17:12:55 -070021642 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21644
21645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 -------------------------------------------------------------------------*/
21648 if ( NULL == ppSession )
21649 {
21650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021651 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 }
21654
Jeff Johnsone7245742012-09-05 17:12:55 -070021655 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021656
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 /*------------------------------------------------------------------------
21658 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 ------------------------------------------------------------------------*/
21660 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21661 {
21662 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21663 {
21664 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 return i;
21667 }
21668 }
21669
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671}/*WDI_FindAssocSessionByBSSIdx*/
21672
21673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 @brief Helper routine used to find a session based on the BSSID
21675
21676
21677 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 ucBSSIdx: BSS Index of the session
21679 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021680
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021683*/
21684wpt_uint8
21685WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021686(
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 WDI_ControlBlockType* pWDICtx,
21688 wpt_uint16 usIdx,
21689 WDI_BSSSessionType** ppSession
21690)
21691{
21692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21693
21694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 -------------------------------------------------------------------------*/
21697 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21698 {
21699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021700 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 }
21703
21704 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021706
21707 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021708
Jeff Johnson295189b2012-06-20 16:38:30 -070021709}/*WDI_FindAssocSessionByBSSIdx*/
21710
21711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021714
21715
21716 @param pWDICtx: pointer to the WLAN DAL context
21717 pSession: pointer to the session (if found)
21718
Jeff Johnson295189b2012-06-20 16:38:30 -070021719 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021720 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021721*/
21722wpt_uint8
21723WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021724(
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 WDI_ControlBlockType* pWDICtx,
21726 WDI_BSSSessionType** ppSession
21727)
21728{
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 -------------------------------------------------------------------------*/
21734 if ( NULL == ppSession )
21735 {
21736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021737 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 }
21740
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021742
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 /*------------------------------------------------------------------------
21744 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 ------------------------------------------------------------------------*/
21746 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21747 {
21748 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21749 {
21750 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 return i;
21753 }
21754 }
21755
Jeff Johnsone7245742012-09-05 17:12:55 -070021756 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021757}/*WDI_FindEmptySession*/
21758
21759
21760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021763
21764
21765 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021766 macBSSID: pointer to BSSID. If NULL, get all the session.
21767 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21768 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21769 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 @see
21771 @return Number of sessions in use
21772*/
21773wpt_uint8
21774WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021775(
Hoonki Lee26599972013-04-24 01:21:58 -070021776 WDI_ControlBlockType* pWDICtx,
21777 wpt_macAddr macBSSID,
21778 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021779)
21780{
Jeff Johnsone7245742012-09-05 17:12:55 -070021781 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021783
21784 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 Count all sessions in use
21786 ------------------------------------------------------------------------*/
21787 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21788 {
Hoonki Lee26599972013-04-24 01:21:58 -070021789 if ( macBSSID && skipBSSID &&
21790 (eWLAN_PAL_TRUE ==
21791 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21792 WDI_MAC_ADDR_LEN)))
21793 {
21794 continue;
21795 }
21796 else if ( pWDICtx->aBSSSessions[i].bInUse )
21797 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021799 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021800 }
21801
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021803}/*WDI_GetActiveSessionsCount*/
21804
21805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021806 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021807 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021808
21809
21810 @param pWDICtx: pointer to the WLAN DAL context
21811 pSession: pointer to the session (if found)
21812
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021814 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021815*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021816void
Jeff Johnson295189b2012-06-20 16:38:30 -070021817WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021818(
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 WDI_ControlBlockType* pWDICtx,
21820 WDI_BSSSessionType* ppSession
21821)
21822{
21823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021825 -------------------------------------------------------------------------*/
21826 if ( NULL == ppSession )
21827 {
21828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021829 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021830 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 }
21832
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 /*------------------------------------------------------------------------
21834 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021835 ------------------------------------------------------------------------*/
21836 wpal_list_destroy(&ppSession->wptPendingQueue);
21837 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21839 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21841 wpal_list_init(&ppSession->wptPendingQueue);
21842
21843}/*WDI_DeleteSession*/
21844
21845/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021847 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 @param
21849
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 WDI_AddStaParams: - pointer to the WDI Add STA params
21851 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021852
21853 @see
21854 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021855*/
21856void
21857WDI_AddBcastSTAtoSTATable
21858(
21859 WDI_ControlBlockType* pWDICtx,
21860 WDI_AddStaParams * staParams,
21861 wpt_uint16 usBcastStaIdx
21862)
21863{
21864 WDI_AddStaParams wdiAddSTAParam = {0};
21865 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21867
21868 /*---------------------------------------------------------------------
21869 Sanity check
21870 ---------------------------------------------------------------------*/
21871 if ( NULL == staParams )
21872 {
21873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021875
Jeff Johnsone7245742012-09-05 17:12:55 -070021876 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 }
21878
21879 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21880 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21881 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21882 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21883 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21884 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21885 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21886 WDI_MAC_ADDR_LEN );
21887 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21888 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21889 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21890 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21891 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21892 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21893 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021894
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21896}
21897
21898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021899 @brief NV blob will be divided into fragments of size 4kb and
21900 Sent to HAL
21901
21902 @param pWDICtx: pointer to the WLAN DAL context
21903 pEventData: pointer to the event information structure
21904
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 @see
21906 @return Result of the function call
21907 */
21908
21909WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021910(
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 WDI_ControlBlockType* pWDICtx,
21912 WDI_EventInfoType* pEventData
21913)
21914{
21915
21916 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21917 wpt_uint8* pSendBuffer = NULL;
21918 wpt_uint16 usDataOffset = 0;
21919 wpt_uint16 usSendSize = 0;
21920 wpt_uint16 usCurrentFragmentSize =0;
21921 wpt_uint8* pSrcBuffer = NULL;
21922 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21923 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21924
21925 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21926 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21927 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21928
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21931
21932 /* Update the current Fragment Number */
21933 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21934
21935 /*Update the HAL REQ structure */
21936 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21937 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21938 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21939
21940 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021941 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021942 image will be sent to HAL*/
21943
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21950 usCurrentFragmentSize = FRAGMENT_SIZE;
21951
21952 /*Update the HAL REQ structure */
21953 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21954 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21955
21956 }
21957 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 usCurrentFragmentSize = FRAGMENT_SIZE;
21960
21961 /*Update the HAL REQ structure */
21962 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21963 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21964 }
21965
21966 /*-----------------------------------------------------------------------
21967 Get message buffer
21968 -----------------------------------------------------------------------*/
21969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21970 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21971 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21974 {
21975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21976 "Unable to get send buffer in NV Download req %x %x ",
21977 pEventData, pwdiNvDownloadReqParams);
21978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 }
21981
21982 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021983 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21985
21986 /* Appending the NV image fragment */
21987 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21988 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21989 usCurrentFragmentSize);
21990
21991 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021993
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21995 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 WDI_NV_DOWNLOAD_RESP);
21997
21998}
Jeff Johnsone7245742012-09-05 17:12:55 -070021999/*============================================================================
22000 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 ============================================================================*/
22002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 @brief Helper routine used to find a session based on the BSSID
22004 @param pContext: pointer to the WLAN DAL context
22005 @param pDPContext: pointer to the Datapath context
22006
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022009*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022010WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022011WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22012{
22013 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22014
22015 pCB->pDPContext = pDPContext;
22016 return;
22017}
22018
22019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022020 @brief Helper routine used to find a session based on the BSSID
22021
22022
22023 @param pContext: pointer to the WLAN DAL context
22024
Jeff Johnson295189b2012-06-20 16:38:30 -070022025 @see
22026 @return pointer to Datapath context
22027*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022028WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022029WDI_DS_GetDatapathContext (void *pContext)
22030{
22031 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22032 return pCB->pDPContext;
22033}
22034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 @brief Helper routine used to find a session based on the BSSID
22036
22037
22038 @param pContext: pointer to the WLAN DAL context
22039 @param pDTDriverContext: pointer to the Transport Driver context
22040
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 @see
22042 @return void
22043*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022044WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022045WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22046{
22047 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22048
22049 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022051}
22052
22053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 @brief Helper routine used to find a session based on the BSSID
22055
22056
22057 @param pWDICtx: pointer to the WLAN DAL context
22058
Jeff Johnson295189b2012-06-20 16:38:30 -070022059 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022061*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022062WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022063WDT_GetTransportDriverContext (void *pContext)
22064{
22065 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022067}
22068
Jeff Johnsone7245742012-09-05 17:12:55 -070022069/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 Helper inline converters
22071 ============================================================================*/
22072/*Convert WDI driver type into HAL driver type*/
22073WPT_STATIC WPT_INLINE WDI_Status
22074WDI_HAL_2_WDI_STATUS
22075(
22076 eHalStatus halStatus
22077)
22078{
Jeff Johnsone7245742012-09-05 17:12:55 -070022079 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022080 the chances of getting inlined*/
22081 switch( halStatus )
22082 {
22083 case eHAL_STATUS_SUCCESS:
22084 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22085 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22086 return WDI_STATUS_SUCCESS;
22087 case eHAL_STATUS_FAILURE:
22088 return WDI_STATUS_E_FAILURE;
22089 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022090 return WDI_STATUS_MEM_FAILURE;
22091 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 default:
22094 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022096
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022098}/*WDI_HAL_2_WDI_STATUS*/
22099
22100/*Convert WDI request type into HAL request type*/
22101WPT_STATIC WPT_INLINE tHalHostMsgType
22102WDI_2_HAL_REQ_TYPE
22103(
22104 WDI_RequestEnumType wdiReqType
22105)
22106{
Jeff Johnsone7245742012-09-05 17:12:55 -070022107 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 the chances of getting inlined*/
22109 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 return WLAN_HAL_RMV_STAKEY_REQ;
22146 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022151 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 case WDI_DEL_BA_REQ:
22155 return WLAN_HAL_DEL_BA_REQ;
22156#ifdef FEATURE_WLAN_CCX
22157 case WDI_TSM_STATS_REQ:
22158 return WLAN_HAL_TSM_STATS_REQ;
22159#endif
22160 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022169 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 case WDI_ADD_BA_SESSION_REQ:
22171 return WLAN_HAL_ADD_BA_SESSION_REQ;
22172 case WDI_TRIGGER_BA_REQ:
22173 return WLAN_HAL_TRIGGER_BA_REQ;
22174 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22179 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22180 case WDI_SET_MAX_TX_POWER_REQ:
22181 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022182 case WDI_SET_TX_POWER_REQ:
22183 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22185 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022186#ifdef FEATURE_WLAN_TDLS
22187 case WDI_TDLS_LINK_ESTABLISH_REQ:
22188 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22189#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022195 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022206 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 case WDI_REM_BEACON_FILTER_REQ:
22211 return WLAN_HAL_REM_BCN_FILTER_REQ;
22212 case WDI_SET_RSSI_THRESHOLDS_REQ:
22213 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22214 case WDI_HOST_OFFLOAD_REQ:
22215 return WLAN_HAL_HOST_OFFLOAD_REQ;
22216 case WDI_WOWL_ADD_BC_PTRN_REQ:
22217 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22218 case WDI_WOWL_DEL_BC_PTRN_REQ:
22219 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22220 case WDI_WOWL_ENTER_REQ:
22221 return WLAN_HAL_ENTER_WOWL_REQ;
22222 case WDI_WOWL_EXIT_REQ:
22223 return WLAN_HAL_EXIT_WOWL_REQ;
22224 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22225 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22226 case WDI_NV_DOWNLOAD_REQ:
22227 return WLAN_HAL_DOWNLOAD_NV_REQ;
22228 case WDI_FLUSH_AC_REQ:
22229 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22230 case WDI_BTAMP_EVENT_REQ:
22231 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22232#ifdef WLAN_FEATURE_VOWIFI_11R
22233 case WDI_AGGR_ADD_TS_REQ:
22234 return WLAN_HAL_AGGR_ADD_TS_REQ;
22235#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 case WDI_FTM_CMD_REQ:
22237 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 case WDI_ADD_STA_SELF_REQ:
22239 return WLAN_HAL_ADD_STA_SELF_REQ;
22240 case WDI_DEL_STA_SELF_REQ:
22241 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022242#ifdef FEATURE_OEM_DATA_SUPPORT
22243 case WDI_START_OEM_DATA_REQ:
22244 return WLAN_HAL_START_OEM_DATA_REQ;
22245#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 case WDI_HOST_RESUME_REQ:
22247 return WLAN_HAL_HOST_RESUME_REQ;
22248 case WDI_HOST_SUSPEND_IND:
22249 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022250 case WDI_TRAFFIC_STATS_IND:
22251 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022252#ifdef WLAN_FEATURE_11W
22253 case WDI_EXCLUDE_UNENCRYPTED_IND:
22254 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22255#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 case WDI_KEEP_ALIVE_REQ:
22257 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022258#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022259 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22260 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022261#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022262#ifdef FEATURE_WLAN_SCAN_PNO
22263 case WDI_SET_PREF_NETWORK_REQ:
22264 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22265 case WDI_SET_RSSI_FILTER_REQ:
22266 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22267 case WDI_UPDATE_SCAN_PARAMS_REQ:
22268 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22269#endif // FEATURE_WLAN_SCAN_PNO
22270 case WDI_SET_TX_PER_TRACKING_REQ:
22271 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22272#ifdef WLAN_FEATURE_PACKET_FILTERING
22273 case WDI_8023_MULTICAST_LIST_REQ:
22274 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22275 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22278 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22279 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22280 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22281#endif // WLAN_FEATURE_PACKET_FILTERING
22282 case WDI_HAL_DUMP_CMD_REQ:
22283 return WLAN_HAL_DUMP_COMMAND_REQ;
22284#ifdef WLAN_FEATURE_GTK_OFFLOAD
22285 case WDI_GTK_OFFLOAD_REQ:
22286 return WLAN_HAL_GTK_OFFLOAD_REQ;
22287 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22288 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22289#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22290
22291 case WDI_INIT_SCAN_CON_REQ:
22292 return WLAN_HAL_INIT_SCAN_CON_REQ;
22293 case WDI_SET_POWER_PARAMS_REQ:
22294 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22295 case WDI_SET_TM_LEVEL_REQ:
22296 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22297 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22298 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022299#ifdef WLAN_FEATURE_11AC
22300 case WDI_UPDATE_VHT_OP_MODE_REQ:
22301 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22302#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022303 case WDI_GET_ROAM_RSSI_REQ:
22304 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022305 case WDI_DHCP_START_IND:
22306 return WLAN_HAL_DHCP_START_IND;
22307 case WDI_DHCP_STOP_IND:
22308 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022309#ifdef FEATURE_WLAN_LPHB
22310 case WDI_LPHB_CFG_REQ:
22311 return WLAN_HAL_LPHB_CFG_REQ;
22312#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022316
Jeff Johnson295189b2012-06-20 16:38:30 -070022317}/*WDI_2_HAL_REQ_TYPE*/
22318
22319/*Convert WDI response type into HAL response type*/
22320WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22321HAL_2_WDI_RSP_TYPE
22322(
22323 tHalHostMsgType halMsg
22324)
22325{
Jeff Johnsone7245742012-09-05 17:12:55 -070022326 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 the chances of getting inlined*/
22328 switch( halMsg )
22329 {
22330 case WLAN_HAL_START_RSP:
22331 return WDI_START_RESP;
22332 case WLAN_HAL_STOP_RSP:
22333 return WDI_STOP_RESP;
22334 case WLAN_HAL_INIT_SCAN_RSP:
22335 return WDI_INIT_SCAN_RESP;
22336 case WLAN_HAL_START_SCAN_RSP:
22337 return WDI_START_SCAN_RESP;
22338 case WLAN_HAL_END_SCAN_RSP:
22339 return WDI_END_SCAN_RESP;
22340 case WLAN_HAL_FINISH_SCAN_RSP:
22341 return WDI_FINISH_SCAN_RESP;
22342 case WLAN_HAL_CONFIG_STA_RSP:
22343 return WDI_CONFIG_STA_RESP;
22344 case WLAN_HAL_DELETE_STA_RSP:
22345 return WDI_DEL_STA_RESP;
22346 case WLAN_HAL_CONFIG_BSS_RSP:
22347 return WDI_CONFIG_BSS_RESP;
22348 case WLAN_HAL_DELETE_BSS_RSP:
22349 return WDI_DEL_BSS_RESP;
22350 case WLAN_HAL_JOIN_RSP:
22351 return WDI_JOIN_RESP;
22352 case WLAN_HAL_POST_ASSOC_RSP:
22353 return WDI_POST_ASSOC_RESP;
22354 case WLAN_HAL_SET_BSSKEY_RSP:
22355 return WDI_SET_BSS_KEY_RESP;
22356 case WLAN_HAL_SET_STAKEY_RSP:
22357 return WDI_SET_STA_KEY_RESP;
22358 case WLAN_HAL_RMV_BSSKEY_RSP:
22359 return WDI_RMV_BSS_KEY_RESP;
22360 case WLAN_HAL_RMV_STAKEY_RSP:
22361 return WDI_RMV_STA_KEY_RESP;
22362 case WLAN_HAL_SET_BCASTKEY_RSP:
22363 return WDI_SET_STA_BCAST_KEY_RESP;
22364 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22365 // return WDI_RMV_STA_BCAST_KEY_RESP;
22366 case WLAN_HAL_ADD_TS_RSP:
22367 return WDI_ADD_TS_RESP;
22368 case WLAN_HAL_DEL_TS_RSP:
22369 return WDI_DEL_TS_RESP;
22370 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22371 return WDI_UPD_EDCA_PRMS_RESP;
22372 case WLAN_HAL_ADD_BA_RSP:
22373 return WDI_ADD_BA_RESP;
22374 case WLAN_HAL_DEL_BA_RSP:
22375 return WDI_DEL_BA_RESP;
22376#ifdef FEATURE_WLAN_CCX
22377 case WLAN_HAL_TSM_STATS_RSP:
22378 return WDI_TSM_STATS_RESP;
22379#endif
22380 case WLAN_HAL_CH_SWITCH_RSP:
22381 return WDI_CH_SWITCH_RESP;
22382 case WLAN_HAL_SET_LINK_ST_RSP:
22383 return WDI_SET_LINK_ST_RESP;
22384 case WLAN_HAL_GET_STATS_RSP:
22385 return WDI_GET_STATS_RESP;
22386 case WLAN_HAL_UPDATE_CFG_RSP:
22387 return WDI_UPDATE_CFG_RESP;
22388 case WLAN_HAL_ADD_BA_SESSION_RSP:
22389 return WDI_ADD_BA_SESSION_RESP;
22390 case WLAN_HAL_TRIGGER_BA_RSP:
22391 return WDI_TRIGGER_BA_RESP;
22392 case WLAN_HAL_UPDATE_BEACON_RSP:
22393 return WDI_UPD_BCON_PRMS_RESP;
22394 case WLAN_HAL_SEND_BEACON_RSP:
22395 return WDI_SND_BCON_RESP;
22396 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22397 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22398 /*Indications*/
22399 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22400 return WDI_HAL_RSSI_NOTIFICATION_IND;
22401 case WLAN_HAL_MISSED_BEACON_IND:
22402 return WDI_HAL_MISSED_BEACON_IND;
22403 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22404 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22405 case WLAN_HAL_MIC_FAILURE_IND:
22406 return WDI_HAL_MIC_FAILURE_IND;
22407 case WLAN_HAL_FATAL_ERROR_IND:
22408 return WDI_HAL_FATAL_ERROR_IND;
22409 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22410 return WDI_HAL_DEL_STA_IND;
22411 case WLAN_HAL_COEX_IND:
22412 return WDI_HAL_COEX_IND;
22413 case WLAN_HAL_OTA_TX_COMPL_IND:
22414 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 case WLAN_HAL_P2P_NOA_ATTR_IND:
22416 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022417 case WLAN_HAL_P2P_NOA_START_IND:
22418 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 case WLAN_HAL_TX_PER_HIT_IND:
22420 return WDI_HAL_TX_PER_HIT_IND;
22421 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22422 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022423 case WLAN_HAL_SET_TX_POWER_RSP:
22424 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 case WLAN_HAL_SET_P2P_GONOA_RSP:
22426 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022427#ifdef FEATURE_WLAN_TDLS
22428 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22429 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22430 case WLAN_HAL_TDLS_IND:
22431 return WDI_HAL_TDLS_IND;
22432#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22452 return WDI_SET_BEACON_FILTER_RESP;
22453 case WLAN_HAL_REM_BCN_FILTER_RSP:
22454 return WDI_REM_BEACON_FILTER_RESP;
22455 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22456 return WDI_SET_RSSI_THRESHOLDS_RESP;
22457 case WLAN_HAL_HOST_OFFLOAD_RSP:
22458 return WDI_HOST_OFFLOAD_RESP;
22459 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22460 return WDI_WOWL_ADD_BC_PTRN_RESP;
22461 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22462 return WDI_WOWL_DEL_BC_PTRN_RESP;
22463 case WLAN_HAL_ENTER_WOWL_RSP:
22464 return WDI_WOWL_ENTER_RESP;
22465 case WLAN_HAL_EXIT_WOWL_RSP:
22466 return WDI_WOWL_EXIT_RESP;
22467 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22468 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22469 case WLAN_HAL_DOWNLOAD_NV_RSP:
22470 return WDI_NV_DOWNLOAD_RESP;
22471 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22472 return WDI_FLUSH_AC_RESP;
22473 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22474 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 case WLAN_HAL_PROCESS_PTT_RSP:
22476 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 case WLAN_HAL_ADD_STA_SELF_RSP:
22478 return WDI_ADD_STA_SELF_RESP;
22479case WLAN_HAL_DEL_STA_SELF_RSP:
22480 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022481#ifdef FEATURE_OEM_DATA_SUPPORT
22482 case WLAN_HAL_START_OEM_DATA_RSP:
22483 return WDI_START_OEM_DATA_RESP;
22484#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 case WLAN_HAL_HOST_RESUME_RSP:
22486 return WDI_HOST_RESUME_RESP;
22487 case WLAN_HAL_KEEP_ALIVE_RSP:
22488 return WDI_KEEP_ALIVE_RESP;
22489#ifdef FEATURE_WLAN_SCAN_PNO
22490 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22491 return WDI_SET_PREF_NETWORK_RESP;
22492 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22495 return WDI_UPDATE_SCAN_PARAMS_RESP;
22496 case WLAN_HAL_PREF_NETW_FOUND_IND:
22497 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22498#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022499#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022500 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22501 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022502#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22504 return WDI_SET_TX_PER_TRACKING_RESP;
22505#ifdef WLAN_FEATURE_PACKET_FILTERING
22506 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22507 return WDI_8023_MULTICAST_LIST_RESP;
22508 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22509 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22510 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22511 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22512 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22513 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22514#endif // WLAN_FEATURE_PACKET_FILTERING
22515
22516 case WLAN_HAL_DUMP_COMMAND_RSP:
22517 return WDI_HAL_DUMP_CMD_RESP;
22518 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22519 return WDI_SET_POWER_PARAMS_RESP;
22520#ifdef WLAN_FEATURE_VOWIFI_11R
22521 case WLAN_HAL_AGGR_ADD_TS_RSP:
22522 return WDI_AGGR_ADD_TS_RESP;
22523#endif
22524
22525#ifdef WLAN_FEATURE_GTK_OFFLOAD
22526 case WLAN_HAL_GTK_OFFLOAD_RSP:
22527 return WDI_GTK_OFFLOAD_RESP;
22528 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22529 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22530#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22531#ifdef WLAN_WAKEUP_EVENTS
22532 case WLAN_HAL_WAKE_REASON_IND:
22533 return WDI_HAL_WAKE_REASON_IND;
22534#endif // WLAN_WAKEUP_EVENTS
22535
22536 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22537 return WDI_SET_TM_LEVEL_RESP;
22538 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22539 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022540#ifdef WLAN_FEATURE_11AC
22541 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22542 return WDI_UPDATE_VHT_OP_MODE_RESP;
22543#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022544#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22545 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22546 return WDI_GET_ROAM_RSSI_RESP;
22547#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022548
Leo Chang00bc9132013-08-01 19:21:11 -070022549#ifdef FEATURE_WLAN_LPHB
22550 case WLAN_HAL_LPHB_IND:
22551 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22552 case WLAN_HAL_LPHB_CFG_RSP:
22553 return WDI_LPHB_CFG_RESP;
22554#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022555
22556 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22557 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
22558
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 }
22562
22563}/*HAL_2_WDI_RSP_TYPE*/
22564
22565
22566/*Convert WDI driver type into HAL driver type*/
22567WPT_STATIC WPT_INLINE tDriverType
22568WDI_2_HAL_DRV_TYPE
22569(
22570 WDI_DriverType wdiDriverType
22571)
22572{
Jeff Johnsone7245742012-09-05 17:12:55 -070022573 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022574 the chances of getting inlined*/
22575 switch( wdiDriverType )
22576 {
22577 case WDI_DRIVER_TYPE_PRODUCTION:
22578 return eDRIVER_TYPE_PRODUCTION;
22579 case WDI_DRIVER_TYPE_MFG:
22580 return eDRIVER_TYPE_MFG;
22581 case WDI_DRIVER_TYPE_DVT:
22582 return eDRIVER_TYPE_DVT;
22583 }
22584
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022586}/*WDI_2_HAL_DRV_TYPE*/
22587
22588
22589/*Convert WDI stop reason into HAL stop reason*/
22590WPT_STATIC WPT_INLINE tHalStopType
22591WDI_2_HAL_STOP_REASON
22592(
22593 WDI_StopType wdiDriverType
22594)
22595{
Jeff Johnsone7245742012-09-05 17:12:55 -070022596 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 the chances of getting inlined*/
22598 switch( wdiDriverType )
22599 {
22600 case WDI_STOP_TYPE_SYS_RESET:
22601 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022602 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22603 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 case WDI_STOP_TYPE_RF_KILL:
22605 return HAL_STOP_TYPE_RF_KILL;
22606 }
22607
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022609}/*WDI_2_HAL_STOP_REASON*/
22610
22611
22612/*Convert WDI scan mode type into HAL scan mode type*/
22613WPT_STATIC WPT_INLINE eHalSysMode
22614WDI_2_HAL_SCAN_MODE
22615(
22616 WDI_ScanMode wdiScanMode
22617)
22618{
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 the chances of getting inlined*/
22621 switch( wdiScanMode )
22622 {
22623 case WDI_SCAN_MODE_NORMAL:
22624 return eHAL_SYS_MODE_NORMAL;
22625 case WDI_SCAN_MODE_LEARN:
22626 return eHAL_SYS_MODE_LEARN;
22627 case WDI_SCAN_MODE_SCAN:
22628 return eHAL_SYS_MODE_SCAN;
22629 case WDI_SCAN_MODE_PROMISC:
22630 return eHAL_SYS_MODE_PROMISC;
22631 case WDI_SCAN_MODE_SUSPEND_LINK:
22632 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022633 case WDI_SCAN_MODE_ROAM_SCAN:
22634 return eHAL_SYS_MODE_ROAM_SCAN;
22635 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22636 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 }
22638
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022640}/*WDI_2_HAL_SCAN_MODE*/
22641
22642/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022643WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022644WDI_2_HAL_SEC_CH_OFFSET
22645(
22646 WDI_HTSecondaryChannelOffset wdiSecChOffset
22647)
22648{
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 the chances of getting inlined*/
22651 switch( wdiSecChOffset )
22652 {
22653 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022656 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22659#ifdef WLAN_FEATURE_11AC
22660 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22661 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22662 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22663 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22664 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22665 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22666 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22667 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22668 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22669 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22670 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22671 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22672 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22673 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22674#endif
22675 default:
22676 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 }
22678
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680}/*WDI_2_HAL_SEC_CH_OFFSET*/
22681
22682/*Convert WDI BSS type into HAL BSS type*/
22683WPT_STATIC WPT_INLINE tSirBssType
22684WDI_2_HAL_BSS_TYPE
22685(
22686 WDI_BssType wdiBSSType
22687)
22688{
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022690 the chances of getting inlined*/
22691 switch( wdiBSSType )
22692 {
22693 case WDI_INFRASTRUCTURE_MODE:
22694 return eSIR_INFRASTRUCTURE_MODE;
22695 case WDI_INFRA_AP_MODE:
22696 return eSIR_INFRA_AP_MODE;
22697 case WDI_IBSS_MODE:
22698 return eSIR_IBSS_MODE;
22699 case WDI_BTAMP_STA_MODE:
22700 return eSIR_BTAMP_STA_MODE;
22701 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 case WDI_BSS_AUTO_MODE:
22704 return eSIR_AUTO_MODE;
22705 }
22706
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022708}/*WDI_2_HAL_BSS_TYPE*/
22709
22710/*Convert WDI NW type into HAL NW type*/
22711WPT_STATIC WPT_INLINE tSirNwType
22712WDI_2_HAL_NW_TYPE
22713(
22714 WDI_NwType wdiNWType
22715)
22716{
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 the chances of getting inlined*/
22719 switch( wdiNWType )
22720 {
22721 case WDI_11A_NW_TYPE:
22722 return eSIR_11A_NW_TYPE;
22723 case WDI_11B_NW_TYPE:
22724 return eSIR_11B_NW_TYPE;
22725 case WDI_11G_NW_TYPE:
22726 return eSIR_11G_NW_TYPE;
22727 case WDI_11N_NW_TYPE:
22728 return eSIR_11N_NW_TYPE;
22729 }
22730
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022732}/*WDI_2_HAL_NW_TYPE*/
22733
22734/*Convert WDI chanel bonding type into HAL cb type*/
22735WPT_STATIC WPT_INLINE ePhyChanBondState
22736WDI_2_HAL_CB_STATE
22737(
22738 WDI_PhyChanBondState wdiCbState
22739)
22740{
Jeff Johnsone7245742012-09-05 17:12:55 -070022741 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 the chances of getting inlined*/
22743 switch ( wdiCbState )
22744 {
22745 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22746 return PHY_SINGLE_CHANNEL_CENTERED;
22747 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22748 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22749 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22750 return PHY_DOUBLE_CHANNEL_CENTERED;
22751 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22752 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022753#ifdef WLAN_FEATURE_11AC
22754 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22755 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22756 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22757 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22758 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22759 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22760 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22761 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22762 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22763 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22764 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22765 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22766 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22767 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22768#endif
22769 case WDI_MAX_CB_STATE:
22770 default:
22771 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022773
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 return PHY_CHANNEL_BONDING_STATE_MAX;
22775}/*WDI_2_HAL_CB_STATE*/
22776
22777/*Convert WDI chanel bonding type into HAL cb type*/
22778WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22779WDI_2_HAL_HT_OPER_MODE
22780(
22781 WDI_HTOperatingMode wdiHTOperMode
22782)
22783{
Jeff Johnsone7245742012-09-05 17:12:55 -070022784 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 the chances of getting inlined*/
22786 switch ( wdiHTOperMode )
22787 {
22788 case WDI_HT_OP_MODE_PURE:
22789 return eSIR_HT_OP_MODE_PURE;
22790 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22791 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22792 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22793 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22794 case WDI_HT_OP_MODE_MIXED:
22795 return eSIR_HT_OP_MODE_MIXED;
22796 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022797
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 return eSIR_HT_OP_MODE_MAX;
22799}/*WDI_2_HAL_HT_OPER_MODE*/
22800
22801/*Convert WDI mimo PS type into HAL mimo PS type*/
22802WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22803WDI_2_HAL_MIMO_PS
22804(
22805 WDI_HTMIMOPowerSaveState wdiHTOperMode
22806)
22807{
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 the chances of getting inlined*/
22810 switch ( wdiHTOperMode )
22811 {
22812 case WDI_HT_MIMO_PS_STATIC:
22813 return eSIR_HT_MIMO_PS_STATIC;
22814 case WDI_HT_MIMO_PS_DYNAMIC:
22815 return eSIR_HT_MIMO_PS_DYNAMIC;
22816 case WDI_HT_MIMO_PS_NA:
22817 return eSIR_HT_MIMO_PS_NA;
22818 case WDI_HT_MIMO_PS_NO_LIMIT:
22819 return eSIR_HT_MIMO_PS_NO_LIMIT;
22820 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022821
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 return eSIR_HT_MIMO_PS_MAX;
22823}/*WDI_2_HAL_MIMO_PS*/
22824
22825/*Convert WDI ENC type into HAL ENC type*/
22826WPT_STATIC WPT_INLINE tAniEdType
22827WDI_2_HAL_ENC_TYPE
22828(
22829 WDI_EncryptType wdiEncType
22830)
22831{
Jeff Johnsone7245742012-09-05 17:12:55 -070022832 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 the chances of getting inlined*/
22834 switch ( wdiEncType )
22835 {
22836 case WDI_ENCR_NONE:
22837 return eSIR_ED_NONE;
22838
22839 case WDI_ENCR_WEP40:
22840 return eSIR_ED_WEP40;
22841
22842 case WDI_ENCR_WEP104:
22843 return eSIR_ED_WEP104;
22844
22845 case WDI_ENCR_TKIP:
22846 return eSIR_ED_TKIP;
22847
22848 case WDI_ENCR_CCMP:
22849 return eSIR_ED_CCMP;
22850
22851 case WDI_ENCR_AES_128_CMAC:
22852 return eSIR_ED_AES_128_CMAC;
22853#if defined(FEATURE_WLAN_WAPI)
22854 case WDI_ENCR_WPI:
22855 return eSIR_ED_WPI;
22856#endif
22857 default:
22858 return eSIR_ED_NOT_IMPLEMENTED;
22859 }
22860
22861}/*WDI_2_HAL_ENC_TYPE*/
22862
22863/*Convert WDI WEP type into HAL WEP type*/
22864WPT_STATIC WPT_INLINE tAniWepType
22865WDI_2_HAL_WEP_TYPE
22866(
22867 WDI_WepType wdiWEPType
22868)
22869{
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 the chances of getting inlined*/
22872 switch ( wdiWEPType )
22873 {
22874 case WDI_WEP_STATIC:
22875 return eSIR_WEP_STATIC;
22876
22877 case WDI_WEP_DYNAMIC:
22878 return eSIR_WEP_DYNAMIC;
22879 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022880
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 return eSIR_WEP_MAX;
22882}/*WDI_2_HAL_WEP_TYPE*/
22883
22884WPT_STATIC WPT_INLINE tSirLinkState
22885WDI_2_HAL_LINK_STATE
22886(
22887 WDI_LinkStateType wdiLinkState
22888)
22889{
Jeff Johnsone7245742012-09-05 17:12:55 -070022890 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022891 the chances of getting inlined*/
22892 switch ( wdiLinkState )
22893 {
22894 case WDI_LINK_IDLE_STATE:
22895 return eSIR_LINK_IDLE_STATE;
22896
22897 case WDI_LINK_PREASSOC_STATE:
22898 return eSIR_LINK_PREASSOC_STATE;
22899
22900 case WDI_LINK_POSTASSOC_STATE:
22901 return eSIR_LINK_POSTASSOC_STATE;
22902
22903 case WDI_LINK_AP_STATE:
22904 return eSIR_LINK_AP_STATE;
22905
22906 case WDI_LINK_IBSS_STATE:
22907 return eSIR_LINK_IBSS_STATE;
22908
22909 case WDI_LINK_BTAMP_PREASSOC_STATE:
22910 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22911
22912 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22913 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22914
22915 case WDI_LINK_BTAMP_AP_STATE:
22916 return eSIR_LINK_BTAMP_AP_STATE;
22917
22918 case WDI_LINK_BTAMP_STA_STATE:
22919 return eSIR_LINK_BTAMP_STA_STATE;
22920
22921 case WDI_LINK_LEARN_STATE:
22922 return eSIR_LINK_LEARN_STATE;
22923
22924 case WDI_LINK_SCAN_STATE:
22925 return eSIR_LINK_SCAN_STATE;
22926
22927 case WDI_LINK_FINISH_SCAN_STATE:
22928 return eSIR_LINK_FINISH_SCAN_STATE;
22929
22930 case WDI_LINK_INIT_CAL_STATE:
22931 return eSIR_LINK_INIT_CAL_STATE;
22932
22933 case WDI_LINK_FINISH_CAL_STATE:
22934 return eSIR_LINK_FINISH_CAL_STATE;
22935
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 case WDI_LINK_LISTEN_STATE:
22937 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022939 case WDI_LINK_SEND_ACTION_STATE:
22940 return eSIR_LINK_SEND_ACTION_STATE;
22941
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 default:
22943 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022945}
22946
Jeff Johnsone7245742012-09-05 17:12:55 -070022947/*Translate a STA Context from WDI into HAL*/
22948WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022949void
22950WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022951(
Jeff Johnson295189b2012-06-20 16:38:30 -070022952 tConfigStaParams* phalConfigSta,
22953 WDI_ConfigStaReqInfoType* pwdiConfigSta
22954)
22955{
22956 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022957#ifdef WLAN_FEATURE_11AC
22958 /* Get the Version 1 Handler */
22959 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22960 if (WDI_getFwWlanFeatCaps(DOT11AC))
22961 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022962 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022963 }
22964#endif
22965 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 the chances of getting inlined*/
22967
Jeff Johnsone7245742012-09-05 17:12:55 -070022968 wpalMemoryCopy(phalConfigSta->bssId,
22969 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22970
22971 wpalMemoryCopy(phalConfigSta->staMac,
22972 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022973
22974 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22975 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22976 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22977 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22978 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22979 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22980 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22981 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22982 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22983 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22984 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22985 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22986 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22987 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22988 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22989 phalConfigSta->action = pwdiConfigSta->wdiAction;
22990 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22991 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22992 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22993 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22994 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22995 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22996 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022997
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22999
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 pwdiConfigSta->wdiSupportedRates.opRateMode;
23002 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23003 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23006 }
23007 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23008 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23011 }
23012 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23013 {
23014 phalConfigSta->supportedRates.aniLegacyRates[i] =
23015 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23016 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23019 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23020 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023021 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23023 }
23024 phalConfigSta->supportedRates.rxHighestDataRate =
23025 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23026
Jeff Johnsone7245742012-09-05 17:12:55 -070023027#ifdef WLAN_FEATURE_11AC
23028 if(phalConfigSta_V1 != NULL)
23029 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023030 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23031 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23032 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23033 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 }
23035#endif
23036
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023038
Jeff Johnsone7245742012-09-05 17:12:55 -070023039#ifdef WLAN_FEATURE_11AC
23040 if(phalConfigSta_V1 != NULL)
23041 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023042 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23043 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023044 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023045 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23046 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23047
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 }
23049#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023050}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023051
23052/*Translate a Rate set info from WDI into HAL*/
23053WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023054WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023055(
Jeff Johnson295189b2012-06-20 16:38:30 -070023056 tSirMacRateSet* pHalRateSet,
23057 WDI_RateSet* pwdiRateSet
23058)
23059{
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23062
23063 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23064 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23065
23066 for ( i = 0; i < pHalRateSet->numRates; i++ )
23067 {
23068 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23069 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023070
Jeff Johnson295189b2012-06-20 16:38:30 -070023071}/*WDI_CopyWDIRateSetToHALRateSet*/
23072
23073
23074/*Translate an EDCA Parameter Record from WDI into HAL*/
23075WPT_STATIC WPT_INLINE void
23076WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023077(
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 tSirMacEdcaParamRecord* phalEdcaParam,
23079 WDI_EdcaParamRecord* pWDIEdcaParam
23080)
23081{
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 the chances of getting inlined*/
23084
23085 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23086 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23087 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23088 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23089
23090 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23091 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23092 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23093}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23094
23095
23096/*Copy a management frame header from WDI fmt into HAL fmt*/
23097WPT_STATIC WPT_INLINE void
23098WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23099(
23100 tSirMacMgmtHdr* pmacMgmtHdr,
23101 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23102)
23103{
23104 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23105 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23106 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23107 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23108 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23109 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23110 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23111 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23112 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23113 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23114 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23115
23116 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23117 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23118
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 pwdiMacMgmtHdr->bssId, 6);
23125
23126 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23127 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23128 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23129
23130}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23131
23132
23133/*Copy config bss parameters from WDI fmt into HAL fmt*/
23134WPT_STATIC WPT_INLINE void
23135WDI_CopyWDIConfigBSSToHALConfigBSS
23136(
23137 tConfigBssParams* phalConfigBSS,
23138 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23139)
23140{
23141
23142 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023143#ifdef WLAN_FEATURE_11AC
23144 /* Get the Version 1 Handler */
23145 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23146 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023147 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023148#endif
23149
Jeff Johnson295189b2012-06-20 16:38:30 -070023150 wpalMemoryCopy( phalConfigBSS->bssId,
23151 pwdiConfigBSS->macBSSID,
23152 WDI_MAC_ADDR_LEN);
23153
23154#ifdef HAL_SELF_STA_PER_BSS
23155 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23156 pwdiConfigBSS->macSelfAddr,
23157 WDI_MAC_ADDR_LEN);
23158#endif
23159
23160 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23161
23162 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23163 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23164
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 pwdiConfigBSS->ucShortSlotTimeSupported;
23167 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23168 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23169 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23170 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23171 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023172 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023173 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23174 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23175 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23176 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23177 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23178 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23179 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23180 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23181 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23182 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23183 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23184
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 phalConfigBSS->htOperMode =
23186 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023187
23188 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23189 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23190 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23191 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23192
23193#ifdef WLAN_FEATURE_VOWIFI
23194 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23195#endif
23196
23197 /*! Used 32 as magic number because that is how the ssid is declared inside the
23198 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023199 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023200 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23201 pwdiConfigBSS->wdiSSID.ucLength : 32;
23202 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 pwdiConfigBSS->wdiSSID.sSSID,
23204 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023205
23206 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23207 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023208
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23210 &pwdiConfigBSS->wdiRateSet);
23211
23212 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23213
23214 if(phalConfigBSS->edcaParamsValid)
23215 {
23216 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23217 &pwdiConfigBSS->wdiBEEDCAParams);
23218 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23219 &pwdiConfigBSS->wdiBKEDCAParams);
23220 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23221 &pwdiConfigBSS->wdiVIEDCAParams);
23222 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23223 &pwdiConfigBSS->wdiVOEDCAParams);
23224 }
23225
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023227
23228 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23229
23230#ifdef WLAN_FEATURE_VOWIFI_11R
23231
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023234
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 if( phalConfigBSS->extSetStaKeyParamValid )
23236 {
23237 /*-----------------------------------------------------------------------
23238 Copy the STA Key parameters into the HAL message
23239 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23242
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23245
23246 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23247
23248 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23249
23250 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23251
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23253 keyIndex++)
23254 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23257 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23258 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23259 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23260 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23261 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23268 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 WDI_MAX_KEY_LENGTH);
23271 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 }
23273 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23274 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023276 sizeof(phalConfigBSS->extSetStaKeyParam) );
23277 }
23278
23279#endif /*WLAN_FEATURE_VOWIFI_11R*/
23280
Jeff Johnsone7245742012-09-05 17:12:55 -070023281#ifdef WLAN_FEATURE_11AC
23282 if(phalConfigBSS_V1 != NULL)
23283 {
23284 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23285 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23286 }
23287#endif
23288
Jeff Johnson295189b2012-06-20 16:38:30 -070023289}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23290
23291
Jeff Johnsone7245742012-09-05 17:12:55 -070023292/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 pointed to by user data */
23294WPT_STATIC WPT_INLINE void
23295WDI_ExtractRequestCBFromEvent
23296(
23297 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 void** ppUserData
23300)
23301{
23302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23303 switch ( pEvent->wdiRequest )
23304 {
23305 case WDI_START_REQ:
23306 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23307 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23308 break;
23309 case WDI_STOP_REQ:
23310 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23311 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23312 break;
23313 case WDI_INIT_SCAN_REQ:
23314 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23315 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23316 break;
23317 case WDI_START_SCAN_REQ:
23318 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23319 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23320 break;
23321 case WDI_END_SCAN_REQ:
23322 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23323 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23324 break;
23325 case WDI_FINISH_SCAN_REQ:
23326 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23327 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23328 break;
23329 case WDI_JOIN_REQ:
23330 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23331 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23332 break;
23333 case WDI_CONFIG_BSS_REQ:
23334 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23335 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23336 break;
23337 case WDI_DEL_BSS_REQ:
23338 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23339 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23340 break;
23341 case WDI_POST_ASSOC_REQ:
23342 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23343 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23344 break;
23345 case WDI_DEL_STA_REQ:
23346 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23347 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23348 break;
23349 case WDI_DEL_STA_SELF_REQ:
23350 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23351 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23352 break;
23353
23354 case WDI_SET_BSS_KEY_REQ:
23355 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23356 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23357 break;
23358 case WDI_RMV_BSS_KEY_REQ:
23359 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23360 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23361 break;
23362 case WDI_SET_STA_KEY_REQ:
23363 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23364 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23365 break;
23366 case WDI_RMV_STA_KEY_REQ:
23367 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23368 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23369 break;
23370 case WDI_ADD_TS_REQ:
23371 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23372 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23373 break;
23374 case WDI_DEL_TS_REQ:
23375 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23376 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23377 break;
23378 case WDI_UPD_EDCA_PRMS_REQ:
23379 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23380 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23381 break;
23382 case WDI_ADD_BA_SESSION_REQ:
23383 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23384 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23385 break;
23386 case WDI_DEL_BA_REQ:
23387 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23388 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23389 break;
23390#ifdef FEATURE_WLAN_CCX
23391 case WDI_TSM_STATS_REQ:
23392 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23393 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23394 break;
23395#endif
23396 case WDI_CH_SWITCH_REQ:
23397 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23398 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23399 break;
23400 case WDI_CONFIG_STA_REQ:
23401 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23402 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23403 break;
23404 case WDI_SET_LINK_ST_REQ:
23405 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23406 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23407 break;
23408 case WDI_GET_STATS_REQ:
23409 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23410 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23411 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023412#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23413 case WDI_GET_ROAM_RSSI_REQ:
23414 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23415 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23416 break;
23417#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 case WDI_UPDATE_CFG_REQ:
23419 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23420 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23421 break;
23422 case WDI_ADD_BA_REQ:
23423 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23424 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23425 break;
23426 case WDI_TRIGGER_BA_REQ:
23427 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23428 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23429 break;
23430 case WDI_UPD_BCON_PRMS_REQ:
23431 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23432 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23433 break;
23434 case WDI_SND_BCON_REQ:
23435 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23436 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23437 break;
23438 case WDI_ENTER_BMPS_REQ:
23439 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23440 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23441 break;
23442 case WDI_EXIT_BMPS_REQ:
23443 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23444 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23445 break;
23446 case WDI_ENTER_UAPSD_REQ:
23447 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23448 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23449 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023450 case WDI_EXIT_UAPSD_REQ:
23451 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23452 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23453 break;
23454 case WDI_SET_UAPSD_PARAM_REQ:
23455 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23456 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23457 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 case WDI_UPDATE_UAPSD_PARAM_REQ:
23459 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23460 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23461 break;
23462 case WDI_CONFIGURE_RXP_FILTER_REQ:
23463 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23464 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23465 break;
23466 case WDI_SET_BEACON_FILTER_REQ:
23467 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23468 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23469 break;
23470 case WDI_REM_BEACON_FILTER_REQ:
23471 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23472 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 case WDI_SET_RSSI_THRESHOLDS_REQ:
23475 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23476 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23477 break;
23478 case WDI_HOST_OFFLOAD_REQ:
23479 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23480 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23481 break;
23482 case WDI_WOWL_ADD_BC_PTRN_REQ:
23483 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23484 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23485 break;
23486 case WDI_WOWL_DEL_BC_PTRN_REQ:
23487 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23488 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23489 break;
23490 case WDI_WOWL_ENTER_REQ:
23491 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23492 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23493 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023494 case WDI_WOWL_EXIT_REQ:
23495 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23496 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23497 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23499 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23500 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23501 break;
23502 case WDI_FLUSH_AC_REQ:
23503 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23504 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23505 break;
23506 case WDI_BTAMP_EVENT_REQ:
23507 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23508 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23509 break;
23510 case WDI_KEEP_ALIVE_REQ:
23511 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23512 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23513 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023514#if defined FEATURE_WLAN_SCAN_PNO
23515 case WDI_SET_PREF_NETWORK_REQ:
23516 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23517 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23518 break;
23519 case WDI_SET_RSSI_FILTER_REQ:
23520 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23521 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23522 break;
23523 case WDI_UPDATE_SCAN_PARAMS_REQ:
23524 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23525 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23526 break;
23527#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 case WDI_SET_TX_PER_TRACKING_REQ:
23529 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23530 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023531 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023532#if defined WLAN_FEATURE_PACKET_FILTERING
23533 case WDI_8023_MULTICAST_LIST_REQ:
23534 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23535 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23536 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023537 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23538 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23539 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23540 break;
23541 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23542 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23543 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23544 break;
23545 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23546 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23547 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23548 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023549#endif
23550 case WDI_SET_POWER_PARAMS_REQ:
23551 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23552 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23553 break;
23554#if defined WLAN_FEATURE_GTK_OFFLOAD
23555 case WDI_GTK_OFFLOAD_REQ:
23556 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23557 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23558 break;
23559 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23560 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23561 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23562 break;
23563#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023564
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 default:
23566 *ppfnReqCB = NULL;
23567 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 }
23570}/*WDI_ExtractRequestCBFromEvent*/
23571
23572
23573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 frame xtl is enabled for a particular STA.
23576
23577 WDI_PostAssocReq must have been called.
23578
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 @param uSTAIdx: STA index
23580
Jeff Johnson295189b2012-06-20 16:38:30 -070023581 @see WDI_PostAssocReq
23582 @return Result of the function call
23583*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023584wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023585WDI_IsHwFrameTxTranslationCapable
23586(
23587 wpt_uint8 uSTAIdx
23588)
23589{
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 uma value*/
23592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023593 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 ------------------------------------------------------------------------*/
23595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23596 {
23597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23598 "WDI API call before module is initialized - Fail request");
23599
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023601 }
23602
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023603#ifdef WLAN_SOFTAP_VSTA_FEATURE
23604 if (IS_VSTA_IDX(uSTAIdx))
23605 {
23606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23607 "STA %d is a Virtual STA, "
23608 "HW frame translation disabled", uSTAIdx);
23609 return eWLAN_PAL_FALSE;
23610 }
23611#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023612
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 return gWDICb.bFrameTransEnabled;
23614}/*WDI_IsHwFrameTxTranslationCapable*/
23615
23616#ifdef FEATURE_WLAN_SCAN_PNO
23617/**
23618 @brief WDI_SetPreferredNetworkList
23619
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023622
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 wdiPNOScanCb: callback for passing back the response
23624 of the Set PNO operation received from the
23625 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023626
Jeff Johnson295189b2012-06-20 16:38:30 -070023627 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023628 callback
23629
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 @return Result of the function call
23631*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023632WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023633WDI_SetPreferredNetworkReq
23634(
23635 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23636 WDI_PNOScanCb wdiPNOScanCb,
23637 void* pUserData
23638)
23639{
23640 WDI_EventInfoType wdiEventData = {{0}};
23641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23642
23643 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 ------------------------------------------------------------------------*/
23646 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23647 {
23648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23649 "WDI API call before module is initialized - Fail request");
23650
Jeff Johnsone7245742012-09-05 17:12:55 -070023651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 }
23653
23654 /*------------------------------------------------------------------------
23655 Fill in Event data and post to the Main FSM
23656 ------------------------------------------------------------------------*/
23657 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023660 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 wdiEventData.pUserData = pUserData;
23662
23663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23664}
23665
23666
23667/**
23668 @brief WDI_SetRssiFilterReq
23669
Jeff Johnsone7245742012-09-05 17:12:55 -070023670 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023672
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 wdiRssiFilterCb: callback for passing back the response
23674 of the Set RSSI Filter operation received from the
23675 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023676
Jeff Johnson295189b2012-06-20 16:38:30 -070023677 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 callback
23679
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 @return Result of the function call
23681*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023682WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023683WDI_SetRssiFilterReq
23684(
23685 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23686 WDI_RssiFilterCb wdiRssiFilterCb,
23687 void* pUserData
23688)
23689{
23690 WDI_EventInfoType wdiEventData = {{0}};
23691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23692
23693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 ------------------------------------------------------------------------*/
23696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23697 {
23698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23699 "WDI API call before module is initialized - Fail request");
23700
Jeff Johnsone7245742012-09-05 17:12:55 -070023701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 }
23703
23704 /*------------------------------------------------------------------------
23705 Fill in Event data and post to the Main FSM
23706 ------------------------------------------------------------------------*/
23707 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 wdiEventData.pUserData = pUserData;
23712
23713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23714}/*WDI_SetRssiFilterReq*/
23715
23716/**
23717 @brief WDI_UpdateScanParamsReq
23718
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023721
Jeff Johnson295189b2012-06-20 16:38:30 -070023722 wdiUpdateScanParamsCb: callback for passing back the response
23723 of the Set PNO operation received from the
23724 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023725
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023727 callback
23728
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 @return Result of the function call
23730*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023731WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023732WDI_UpdateScanParamsReq
23733(
23734 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23735 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23736 void* pUserData
23737)
23738{
23739 WDI_EventInfoType wdiEventData = {{0}};
23740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23741
23742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 ------------------------------------------------------------------------*/
23745 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23746 {
23747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23748 "WDI API call before module is initialized - Fail request");
23749
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023751 }
23752
23753 /*------------------------------------------------------------------------
23754 Fill in Event data and post to the Main FSM
23755 ------------------------------------------------------------------------*/
23756 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 wdiEventData.pUserData = pUserData;
23761
23762 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23763}
23764
23765/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023766 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023767 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023768
23769 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 pwdiPNOScanReqParams: pointer to the info received
23771 from upper layers
23772 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 and its size
23774
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 @return Result of the function call
23776*/
23777
23778WDI_Status
23779WDI_PackPreferredNetworkList
23780(
23781 WDI_ControlBlockType* pWDICtx,
23782 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23783 wpt_uint8** ppSendBuffer,
23784 wpt_uint16* pSize
23785)
23786{
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 wpt_uint16 usDataOffset = 0;
23789 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023790 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 /*-----------------------------------------------------------------------
23793 Get message buffer
23794 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023796 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023798 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 {
23800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23801 "Unable to get send buffer in Set PNO req %x ",
23802 pwdiPNOScanReqParams);
23803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 }
23806
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023807 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23808
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 /*-------------------------------------------------------------------------
23810 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23811 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023812 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023814 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023817 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23822
23823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23826 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23827 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23828
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023829 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 {
23831 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023832 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023833 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23834
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023835 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023837 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023838
23839 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023840 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023842
23843 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023844 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023846
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023849 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023850 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23851 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23852 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23853 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023854
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023855 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023857 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023858
23859 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023860 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23862
23863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023864 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023865 pPrefNetwListParams->aNetworks[i].ssId.length,
23866 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 }
23868
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023869 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023870 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23872 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23873 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23874
23875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023877 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23879 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23880
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023881 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023883 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023885 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23887 }
23888
23889 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023890 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23892 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23893 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023895
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023896 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023897 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023898 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023899
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023900 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23902 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23903 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023905
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023906 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023908 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023909
23910 /*Set the output values*/
23911 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023913
23914 return WDI_STATUS_SUCCESS;
23915}/*WDI_PackPreferredNetworkList*/
23916
23917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023920
23921 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 pwdiPNOScanReqParams: pointer to the info received
23923 from upper layers
23924 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 and its size
23926
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 @return Result of the function call
23928*/
23929
23930WDI_Status
23931WDI_PackPreferredNetworkListNew
23932(
23933 WDI_ControlBlockType* pWDICtx,
23934 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23935 wpt_uint8** ppSendBuffer,
23936 wpt_uint16* pSize
23937)
23938{
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 wpt_uint16 usDataOffset = 0;
23941 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023942 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023944
23945 /*-----------------------------------------------------------------------
23946 Get message buffer
23947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023949 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023951 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 {
23953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23954 "Unable to get send buffer in Set PNO req %x ",
23955 pwdiPNOScanReqParams);
23956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 }
23959
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023960 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23961
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 /*-------------------------------------------------------------------------
23963 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23964 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023965 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023967 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23969
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023970 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23975
23976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23979 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23980 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23981
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023982 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 {
23984 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023985 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23987
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023988 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023990 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023991
23992 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023993 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023995
23996 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023997 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023999
24000 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024001 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024006 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24008
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024009 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024011 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024012
24013 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024014 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24016
24017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024019 pPrefNetwListParams->aNetworks[i].ssId.length,
24020 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 }
24022
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024023 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24026 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24027 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24028
24029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024031 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24033 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24034
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024035 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024037 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024039 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24041 }
24042
24043 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024044 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024045 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24046 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24047 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024049
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024050 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024052 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024053
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024054 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24056 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24057 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024060 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024062 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024063
Jeff Johnson295189b2012-06-20 16:38:30 -070024064
24065 /*Set the output values*/
24066 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024067 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024068
24069 return WDI_STATUS_SUCCESS;
24070}/*WDI_PackPreferredNetworkListNew*/
24071
24072/**
24073 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024074
24075 @param pWDICtx: pointer to the WLAN DAL context
24076 pEventData: pointer to the event information structure
24077
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 @return Result of the function call
24079*/
24080WDI_Status
24081WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024082(
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 WDI_ControlBlockType* pWDICtx,
24084 WDI_EventInfoType* pEventData
24085)
24086{
24087 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24088 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024091 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024092
24093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 -------------------------------------------------------------------------*/
24096 if (( NULL == pEventData ) ||
24097 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24098 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24099 {
24100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 }
24105
24106 /*-------------------------------------------------------------------------
24107 Pack the PNO request structure based on version
24108 -------------------------------------------------------------------------*/
24109 if ( pWDICtx->wdiPNOVersion > 0 )
24110 {
24111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024112 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 pWDICtx->wdiPNOVersion);
24114
24115 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24116 &pSendBuffer, &usSendSize);
24117 }
24118 else
24119 {
24120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024121 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 pWDICtx->wdiPNOVersion);
24123
24124 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24125 &pSendBuffer, &usSendSize);
24126 }
24127
24128 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24129 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24130 {
24131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024132 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024134 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 }
24136
24137 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024139
24140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24144 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024145}
24146
24147/**
24148 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024149
24150 @param pWDICtx: pointer to the WLAN DAL context
24151 pEventData: pointer to the event information structure
24152
Jeff Johnson295189b2012-06-20 16:38:30 -070024153 @see
24154 @return Result of the function call
24155*/
24156WDI_Status
24157WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024158(
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 WDI_ControlBlockType* pWDICtx,
24160 WDI_EventInfoType* pEventData
24161)
24162{
24163 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24164 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 wpt_uint16 usDataOffset = 0;
24167 wpt_uint16 usSendSize = 0;
24168 wpt_uint8 ucRssiThreshold;
24169
24170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024172 -------------------------------------------------------------------------*/
24173 if (( NULL == pEventData ) ||
24174 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24175 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24176 {
24177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024181 }
24182
24183 /*-----------------------------------------------------------------------
24184 Get message buffer
24185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024187 sizeof(ucRssiThreshold),
24188 &pSendBuffer, &usDataOffset, &usSendSize))||
24189 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24190 {
24191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24192 "Unable to get send buffer in Set PNO req %x %x %x",
24193 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024196 }
24197
24198 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24199
Jeff Johnsone7245742012-09-05 17:12:55 -070024200 wpalMemoryCopy( pSendBuffer+usDataOffset,
24201 &ucRssiThreshold,
24202 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024203
24204 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024205 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024206
24207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024208 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24211 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024212}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024213#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24214/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024215 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024216
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024217 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024218 by the Device Interface
24219
24220 wdiRoamOffloadScancb: callback for passing back the response
24221 of the Roam Candidate Lookup Req operation received from the
24222 device
24223
24224 pUserData: user data will be passed back with the
24225 callback
24226 @return Result of the function call
24227*/
24228WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024229WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024230(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024231 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024232 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24233 void* pUserData
24234)
24235{
24236 WDI_EventInfoType wdiEventData = {{0}};
24237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24238
24239 /*------------------------------------------------------------------------
24240 Sanity Check
24241 ------------------------------------------------------------------------*/
24242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24243 {
24244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24245 "WDI API call before module is initialized - Fail request");
24246
24247 return WDI_STATUS_E_NOT_ALLOWED;
24248 }
24249
24250 /*------------------------------------------------------------------------
24251 Fill in Event data and post to the Main FSM
24252 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024253 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24254 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24255 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024256 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24257 wdiEventData.pUserData = pUserData;
24258
24259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24260}
24261
24262void
24263WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24264{
24265 switch (wdiEdType)
24266 {
24267 case WDI_ED_NONE:
24268 *EdType = eED_NONE;
24269 break;
24270 case WDI_ED_WEP40:
24271 case WDI_ED_WEP104:
24272 *EdType = eED_WEP;
24273 break;
24274 case WDI_ED_TKIP:
24275 *EdType = eED_TKIP;
24276 break;
24277 case WDI_ED_CCMP:
24278#ifdef WLAN_FEATURE_11W
24279 case WDI_ED_AES_128_CMAC:
24280#endif
24281 *EdType = eED_CCMP;
24282 break;
24283#ifdef FEATURE_WLAN_WAPI
24284 case WDI_ED_WPI:
24285 *EdType = eED_WPI;
24286 break;
24287#endif
24288 case WDI_ED_ANY:
24289 *EdType = eED_ANY;
24290 break;
24291
24292 default:
24293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24294 "%s: Unknown Encryption Type", __func__);
24295 break;
24296 }
24297}
24298
24299/**
24300 @brief Helper function to pack Start Roam Candidate Lookup
24301 Request parameters
24302
24303 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024304 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024305 from upper layers
24306 ppSendBuffer, pSize - out pointers of the packed buffer
24307 and its size
24308
24309 @return Result of the function call
24310*/
24311
24312WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024313WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024314(
24315 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024316 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024317 wpt_uint8** ppSendBuffer,
24318 wpt_uint16* pSize
24319)
24320{
24321 wpt_uint8* pSendBuffer = NULL;
24322 wpt_uint16 usDataOffset = 0;
24323 wpt_uint16 usSendSize = 0;
24324 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24325 wpt_uint8 i;
24326 /*-----------------------------------------------------------------------
24327 Get message buffer
24328 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024330 sizeof(tRoamCandidateListParams),
24331 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024332 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024333 {
24334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24335 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024336 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024337 WDI_ASSERT(0);
24338 return WDI_STATUS_E_FAILURE;
24339 }
24340 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024341 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024342 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024343 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024344 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024345 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024346 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024347 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024348 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024349 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024350 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024351
24352 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024353 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024354 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024355 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024356 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24357 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024358 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24359 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24360 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24361 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24362 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24363 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24364 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24365 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24366 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24367 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24368 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24369 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24370 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24371 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024372 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024373 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24374 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24375 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024376
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24378 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24379 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24380 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24381 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24382 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24383 "HomeAwayTime=%d\n",
24384 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24385 pRoamCandidateListParams->RoamScanOffloadEnabled,
24386 pRoamCandidateListParams->Command,
24387 pRoamCandidateListParams->StartScanReason,
24388 pRoamCandidateListParams->NeighborScanTimerPeriod,
24389 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24390 pRoamCandidateListParams->NeighborScanChannelMinTime,
24391 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24392 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24393 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24394 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24395 pRoamCandidateListParams->ConnectedNetwork.authentication,
24396 pRoamCandidateListParams->ConnectedNetwork.encryption,
24397 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24398 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24399 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024400 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024401 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024402 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024403 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024404 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24405 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024406 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024407 pRoamCandidateListParams->us24GProbeSize);
24408 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024409 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024410 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024411 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024412 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24413 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024414 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024415 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024416 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24417 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24418 pRoamCandidateListParams->nProbes =
24419 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24420 pRoamCandidateListParams->HomeAwayTime =
24421 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024423 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24424 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024426 }
24427
24428
24429 /*Set the output values*/
24430 *ppSendBuffer = pSendBuffer;
24431 *pSize = usSendSize;
24432 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024433}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024434
24435/**
24436 @brief Process Start Roam Candidate Lookup Request function
24437
24438 @param pWDICtx: pointer to the WLAN DAL context
24439 pEventData: pointer to the event information structure
24440
24441 @return Result of the function call
24442*/
24443WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024444WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024445(
24446 WDI_ControlBlockType* pWDICtx,
24447 WDI_EventInfoType* pEventData
24448)
24449{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024450 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024451 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24452 wpt_uint8* pSendBuffer = NULL;
24453 wpt_uint16 usSendSize = 0;
24454 WDI_Status wdiStatus;
24455 /*-------------------------------------------------------------------------
24456 Sanity check
24457 -------------------------------------------------------------------------*/
24458 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024459 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024460 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24461 {
24462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24463 "%s: Invalid parameters", __func__);
24464 WDI_ASSERT(0);
24465 return WDI_STATUS_E_FAILURE;
24466 }
24467
24468 /*-------------------------------------------------------------------------
24469 Pack the Start Roam Candidate Lookup request structure based on version
24470 -------------------------------------------------------------------------*/
24471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24472 "%s: Packing Roam Candidate Lookup request ", __func__);
24473
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024474 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024475 &pSendBuffer, &usSendSize);
24476
24477 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24478 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24479 {
24480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24481 "%s: failed to pack request parameters", __func__);
24482 WDI_ASSERT(0);
24483 return wdiStatus;
24484 }
24485
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024486 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24487 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024488
24489 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024490 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024491 -------------------------------------------------------------------------*/
24492 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024493 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024494}
24495
24496/**
24497 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24498 response is being received over the bus from HAL)
24499
24500 @param pWDICtx: pointer to the WLAN DAL context
24501 pEventData: pointer to the event information structure
24502
24503 @see
24504 @return Result of the function call
24505*/
24506WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024507WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024508(
24509 WDI_ControlBlockType* pWDICtx,
24510 WDI_EventInfoType* pEventData
24511)
24512{
24513 WDI_Status wdiStatus;
24514 eHalStatus halStatus;
24515 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24516
24517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24518
24519 /*-------------------------------------------------------------------------
24520 Sanity check
24521 -------------------------------------------------------------------------*/
24522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24523 ( NULL == pEventData->pEventData ))
24524 {
24525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24526 "%s: Invalid parameters", __func__);
24527 WDI_ASSERT(0);
24528 return WDI_STATUS_E_FAILURE;
24529 }
24530
24531 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24532
24533 /*-------------------------------------------------------------------------
24534 Extract response and send it to UMAC
24535 -------------------------------------------------------------------------*/
24536 halStatus = *((eHalStatus*)pEventData->pEventData);
24537 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24538
24539 /*Notify UMAC*/
24540 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24541
24542 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024543}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024544#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024545
24546/**
24547 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024548
24549 @param pWDICtx: pointer to the WLAN DAL context
24550 pEventData: pointer to the event information structure
24551
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 @see
24553 @return Result of the function call
24554*/
24555WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024556WDI_PackUpdateScanParamsReq
24557(
24558 WDI_ControlBlockType* pWDICtx,
24559 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24560 wpt_uint8** ppSendBuffer,
24561 wpt_uint16* pSize
24562)
24563{
24564 wpt_uint8* pSendBuffer = NULL;
24565 wpt_uint16 usDataOffset = 0;
24566 wpt_uint16 usSendSize = 0;
24567 tUpdateScanParams updateScanParams = {0};
24568
24569
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024571 "Begin WDI Update Scan Parameters Old Style Params");
24572 /*-----------------------------------------------------------------------
24573 Get message buffer
24574 -----------------------------------------------------------------------*/
24575 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24576 sizeof(updateScanParams),
24577 &pSendBuffer, &usDataOffset, &usSendSize))||
24578 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24579 {
24580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24581 "Unable to get send buffer in Update Scan Params req %x",
24582 pwdiUpdateScanParams);
24583 WDI_ASSERT(0);
24584 return WDI_STATUS_E_FAILURE;
24585 }
24586
24587 //
24588 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24589 //
24590
24591 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24592 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24593
24594 updateScanParams.ucChannelCount =
24595 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24596 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24597 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24598 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24599
24600 wpalMemoryCopy( updateScanParams.aChannels,
24601 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24602 updateScanParams.ucChannelCount);
24603
24604
24605 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24606 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24607 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24608 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24609 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24610
24611 wpalMemoryCopy( pSendBuffer+usDataOffset,
24612 &updateScanParams,
24613 sizeof(updateScanParams));
24614
24615 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24616 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24617
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024619 "End Update Scan Parameters Old Style");
24620
24621 /*Set the output values*/
24622 *ppSendBuffer = pSendBuffer;
24623 *pSize = usSendSize;
24624
24625 return WDI_STATUS_SUCCESS;
24626}
24627
24628/**
24629 @brief Process Update Scan Params function
24630
24631 @param pWDICtx: pointer to the WLAN DAL context
24632 pEventData: pointer to the event information structure
24633
24634 @see
24635 @return Result of the function call
24636*/
24637WDI_Status
24638WDI_PackUpdateScanParamsReqEx
24639(
24640 WDI_ControlBlockType* pWDICtx,
24641 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24642 wpt_uint8** ppSendBuffer,
24643 wpt_uint16* pSize
24644)
24645{
24646 wpt_uint8* pSendBuffer = NULL;
24647 wpt_uint16 usDataOffset = 0;
24648 wpt_uint16 usSendSize = 0;
24649 tUpdateScanParamsEx updateScanParams = {0};
24650
24651
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024652 /*-----------------------------------------------------------------------
24653 Get message buffer
24654 -----------------------------------------------------------------------*/
24655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24656 sizeof(updateScanParams),
24657 &pSendBuffer, &usDataOffset, &usSendSize))||
24658 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24659 {
24660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24661 "Unable to get send buffer in Update Scan Params Ex req %x",
24662 pwdiUpdateScanParams);
24663 WDI_ASSERT(0);
24664 return WDI_STATUS_E_FAILURE;
24665 }
24666
24667 //
24668 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24669 //
24670
24671 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24672 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24673
24674 updateScanParams.ucChannelCount =
24675 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24676 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24677 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24678 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24679
24680 wpalMemoryCopy( updateScanParams.aChannels,
24681 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24682 updateScanParams.ucChannelCount);
24683
24684
24685 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24686 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24687 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24688 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24689 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24690
24691 wpalMemoryCopy( pSendBuffer+usDataOffset,
24692 &updateScanParams,
24693 sizeof(updateScanParams));
24694
24695 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24696 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24697
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024698 /*Set the output values*/
24699 *ppSendBuffer = pSendBuffer;
24700 *pSize = usSendSize;
24701
24702 return WDI_STATUS_SUCCESS;
24703}
24704
24705/**
24706 @brief Process Update Scan Params function
24707
24708 @param pWDICtx: pointer to the WLAN DAL context
24709 pEventData: pointer to the event information structure
24710
24711 @see
24712 @return Result of the function call
24713*/
24714WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024715WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024716(
Jeff Johnson295189b2012-06-20 16:38:30 -070024717 WDI_ControlBlockType* pWDICtx,
24718 WDI_EventInfoType* pEventData
24719)
24720{
24721 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24722 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024725 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024726
24727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 -------------------------------------------------------------------------*/
24730 if (( NULL == pEventData ) ||
24731 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24732 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24733 {
24734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 }
24739
24740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24741 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024742
24743 //
24744 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24745 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024746 if ( pWDICtx->wlanVersion.revision < 1 )
24747 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024748 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024749 &pSendBuffer, &usSendSize);
24750 }
24751 else
24752 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024753 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24754 &pSendBuffer, &usSendSize);
24755 }
24756
24757 if(WDI_STATUS_SUCCESS != wdiStatus)
24758 {
24759 //memory allocation failed
24760 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024762
Jeff Johnson295189b2012-06-20 16:38:30 -070024763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024767 wdiUpdateScanParamsCb, pEventData->pUserData,
24768 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024769}
24770
24771/**
24772 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024773
24774 @param pWDICtx: pointer to the WLAN DAL context
24775 pEventData: pointer to the event information structure
24776
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 @see
24778 @return Result of the function call
24779*/
24780WDI_Status
24781WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024782(
Jeff Johnson295189b2012-06-20 16:38:30 -070024783 WDI_ControlBlockType* pWDICtx,
24784 WDI_EventInfoType* pEventData
24785)
24786{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024787 WDI_LowLevelIndType wdiInd;
24788 tpPrefNetwFoundParams pNetwFoundParams;
24789 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024790
24791
24792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024794 -------------------------------------------------------------------------*/
24795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24796 ( NULL == pEventData->pEventData ))
24797 {
24798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024800 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024802 }
24803
24804 /*-------------------------------------------------------------------------
24805 Extract indication and send it to UMAC
24806 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024807 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24808
24809 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24810 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24811 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24812
24813 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24814 {
24815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24816 "%s: fail to allocate memory", __func__);
24817 return WDI_STATUS_MEM_FAILURE;
24818 }
24819
24820 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24821 (pNetwFoundParams->ssId.length < 32 )?
24822 pNetwFoundParams->ssId.length : 32;
24823 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24824 pNetwFoundParams->ssId.ssId,
24825 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24826 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24827 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24828 pNetwFoundParams->frameLength;
24829 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24830 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24831 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024832
24833 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024835
Jeff Johnson295189b2012-06-20 16:38:30 -070024836 // DEBUG
24837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24838 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24839 wdiInd.wdiIndicationType,
24840 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24841 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24842
ltimariu034f7d62013-01-24 18:54:33 -080024843 if ( pWDICtx->wdiLowLevelIndCB )
24844 {
24845 /*Notify UMAC*/
24846 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24847 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024848
24849 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024850}
24851
24852/**
24853 @brief Process PNO Rsp function (called when a
24854 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024855
24856 @param pWDICtx: pointer to the WLAN DAL context
24857 pEventData: pointer to the event information structure
24858
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 @see
24860 @return Result of the function call
24861*/
24862WDI_Status
24863WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024864(
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 WDI_ControlBlockType* pWDICtx,
24866 WDI_EventInfoType* pEventData
24867)
24868{
24869 WDI_Status wdiStatus;
24870 eHalStatus halStatus;
24871 WDI_PNOScanCb wdiPNOScanCb = NULL;
24872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24873
24874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024876 -------------------------------------------------------------------------*/
24877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24878 ( NULL == pEventData->pEventData ))
24879 {
24880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 }
24885
24886
Jeff Johnsone7245742012-09-05 17:12:55 -070024887 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024888
24889 /*-------------------------------------------------------------------------
24890 Extract response and send it to UMAC
24891 -------------------------------------------------------------------------*/
24892 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024894
24895 /*Notify UMAC*/
24896 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24897
Jeff Johnsone7245742012-09-05 17:12:55 -070024898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024899}/*WDI_ProcessSetPreferredNetworkRsp*/
24900
24901/**
24902 @brief Process RSSI Filter Rsp function (called when a
24903 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024904
24905 @param pWDICtx: pointer to the WLAN DAL context
24906 pEventData: pointer to the event information structure
24907
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 @see
24909 @return Result of the function call
24910*/
24911WDI_Status
24912WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024913(
Jeff Johnson295189b2012-06-20 16:38:30 -070024914 WDI_ControlBlockType* pWDICtx,
24915 WDI_EventInfoType* pEventData
24916)
24917{
24918 WDI_Status wdiStatus;
24919 eHalStatus halStatus;
24920 WDI_RssiFilterCb wdiRssiFilterCb;
24921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24922
24923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024925 -------------------------------------------------------------------------*/
24926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24927 ( NULL == pEventData->pEventData ))
24928 {
24929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024933 }
24934
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024936
24937 /*-------------------------------------------------------------------------
24938 Extract response and send it to UMAC
24939 -------------------------------------------------------------------------*/
24940 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024942
24943 /*Notify UMAC*/
24944 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24945
Jeff Johnsone7245742012-09-05 17:12:55 -070024946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024947}/*WDI_ProcessSetRssiFilterRsp*/
24948
24949/**
24950 @brief Process Update Scan Params Rsp function (called when a
24951 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024952
24953 @param pWDICtx: pointer to the WLAN DAL context
24954 pEventData: pointer to the event information structure
24955
Jeff Johnson295189b2012-06-20 16:38:30 -070024956 @see
24957 @return Result of the function call
24958*/
24959WDI_Status
24960WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024961(
Jeff Johnson295189b2012-06-20 16:38:30 -070024962 WDI_ControlBlockType* pWDICtx,
24963 WDI_EventInfoType* pEventData
24964)
24965{
24966 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024967 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024969 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24971
24972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 -------------------------------------------------------------------------*/
24975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24976 ( NULL == pEventData->pEventData ))
24977 {
24978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 }
24983
24984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024985 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024986
Jeff Johnsone7245742012-09-05 17:12:55 -070024987 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024988
24989 /*-------------------------------------------------------------------------
24990 Extract response and send it to UMAC
24991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024992 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24993 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 sizeof(halUpdScanParams.status));
24995
24996 uStatus = halUpdScanParams.status;
24997
24998 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024999 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025000
25001 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025002 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025003
Jeff Johnsone7245742012-09-05 17:12:55 -070025004 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025005
25006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025007 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 halUpdScanParams.status);
25009
25010 /*Notify UMAC*/
25011 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25012
Jeff Johnsone7245742012-09-05 17:12:55 -070025013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025014}
25015#endif // FEATURE_WLAN_SCAN_PNO
25016
25017#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025018WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025019WDI_8023MulticastListReq
25020(
25021 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25022 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25023 void* pUserData
25024)
25025{
25026 WDI_EventInfoType wdiEventData;
25027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25028
25029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025030 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025031
25032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025033 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025034 ------------------------------------------------------------------------*/
25035 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25036 {
25037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25038 "WDI API call before module is initialized - Fail request");
25039
Jeff Johnsone7245742012-09-05 17:12:55 -070025040 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025041 }
25042
25043 /*------------------------------------------------------------------------
25044 Fill in Event data and post to the Main FSM
25045 ------------------------------------------------------------------------*/
25046 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025049 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 wdiEventData.pUserData = pUserData;
25051
25052 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25053}
25054
Jeff Johnsone7245742012-09-05 17:12:55 -070025055WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025056WDI_ReceiveFilterSetFilterReq
25057(
25058 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25059 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25060 void* pUserData
25061)
25062{
25063 WDI_EventInfoType wdiEventData;
25064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25065
25066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025067 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025068
25069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 ------------------------------------------------------------------------*/
25072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25073 {
25074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25075 "WDI API call before module is initialized - Fail request");
25076
Jeff Johnsone7245742012-09-05 17:12:55 -070025077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 }
25079
25080 /*------------------------------------------------------------------------
25081 Fill in Event data and post to the Main FSM
25082 ------------------------------------------------------------------------*/
25083 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025084 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25085 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025086 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25087 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025088 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025089 wdiEventData.pUserData = pUserData;
25090
25091
25092 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25093}
25094
Jeff Johnsone7245742012-09-05 17:12:55 -070025095WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025096WDI_FilterMatchCountReq
25097(
25098 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25099 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25100 void* pUserData
25101)
25102{
25103 WDI_EventInfoType wdiEventData;
25104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25105
25106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025107 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025108
25109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 ------------------------------------------------------------------------*/
25112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25113 {
25114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25115 "WDI API call before module is initialized - Fail request");
25116
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 }
25119
25120 /*------------------------------------------------------------------------
25121 Fill in Event data and post to the Main FSM
25122 ------------------------------------------------------------------------*/
25123 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025124 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025126 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 wdiEventData.pUserData = pUserData;
25128
25129
25130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25131}
25132
Jeff Johnsone7245742012-09-05 17:12:55 -070025133WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025134WDI_ReceiveFilterClearFilterReq
25135(
25136 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25137 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25138 void* pUserData
25139)
25140{
25141 WDI_EventInfoType wdiEventData;
25142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25143
25144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025145 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025146
25147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 ------------------------------------------------------------------------*/
25150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25151 {
25152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25153 "WDI API call before module is initialized - Fail request");
25154
Jeff Johnsone7245742012-09-05 17:12:55 -070025155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 }
25157
25158 /*------------------------------------------------------------------------
25159 Fill in Event data and post to the Main FSM
25160 ------------------------------------------------------------------------*/
25161 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025162 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 wdiEventData.pUserData = pUserData;
25166
25167
25168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25169}
25170
25171/**
25172 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025173
25174 @param pWDICtx: pointer to the WLAN DAL context
25175 pEventData: pointer to the event information structure
25176
Jeff Johnson295189b2012-06-20 16:38:30 -070025177 @see
25178 @return Result of the function call
25179*/
25180WDI_Status
25181WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025182(
Jeff Johnson295189b2012-06-20 16:38:30 -070025183 WDI_ControlBlockType* pWDICtx,
25184 WDI_EventInfoType* pEventData
25185)
25186{
25187 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25188 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025189 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025190 wpt_uint16 usDataOffset = 0;
25191 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025192 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025193 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025194 wpt_uint8 ucCurrentBSSSesIdx = 0;
25195 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025196
25197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025198 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025199
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025200 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25201 if( NULL == pRcvFltMcAddrListType )
25202 {
25203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25204 "Failed to alloc in WDI_Process8023MulticastListReq");
25205 return WDI_STATUS_E_FAILURE;
25206 }
25207
Jeff Johnson295189b2012-06-20 16:38:30 -070025208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025210 -------------------------------------------------------------------------*/
25211 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025212 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025214 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25216 {
25217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025218 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025219 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025221 return WDI_STATUS_E_FAILURE;
25222 }
25223
25224 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25225 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25226 &pBSSSes);
25227 if ( NULL == pBSSSes )
25228 {
25229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025230 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025231 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 }
25234
25235 /*-----------------------------------------------------------------------
25236 Get message buffer
25237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25239 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 sizeof(tHalRcvFltMcAddrListType),
25241 &pSendBuffer, &usDataOffset, &usSendSize))||
25242 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25243 {
25244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25245 "Unable to get send buffer in "
25246 "WDI_Process8023MulticastListReq() %x %x %x",
25247 pEventData, pwdiFltPktSetMcListReqParamsType,
25248 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025249 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025252 }
25253
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025254 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025255 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025256 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025258 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025259 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25260 sizeof(tSirMacAddr));
25261 }
25262
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025263 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025264 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025265 pRcvFltMcAddrListType,
25266 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025267
25268 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025269 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025270
25271
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025272 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025274 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025277 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025278 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025279}
25280
25281/**
25282 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025283
25284 @param pWDICtx: pointer to the WLAN DAL context
25285 pEventData: pointer to the event information structure
25286
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 @see
25288 @return Result of the function call
25289*/
25290WDI_Status
25291WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025292(
Jeff Johnson295189b2012-06-20 16:38:30 -070025293 WDI_ControlBlockType* pWDICtx,
25294 WDI_EventInfoType* pEventData
25295)
25296{
25297 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25298 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025300 wpt_uint16 usDataOffset = 0;
25301 wpt_uint16 usSendSize = 0;
25302 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025303 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025305 wpt_uint8 ucCurrentBSSSesIdx = 0;
25306 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025307 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25308 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025309
25310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025311 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025312
25313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 -------------------------------------------------------------------------*/
25316 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025319 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25321 {
25322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025325 return WDI_STATUS_E_FAILURE;
25326 }
25327
25328 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25329 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25330 &pBSSSes);
25331 if ( NULL == pBSSSes )
25332 {
25333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025334 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025336 }
25337
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025338 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25339 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025340
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025341 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25342 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25343 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25344
25345 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25346 usSessRcvPktFilterCfgSize);
25347
25348 if(NULL == pSessRcvPktFilterCfg)
25349 {
25350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25351 "%s: Failed to allocate memory for "
25352 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025353 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025354 WDI_ASSERT(0);
25355 return WDI_STATUS_E_FAILURE;
25356 }
25357
25358 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25359
25360 /*-----------------------------------------------------------------------
25361 Get message buffer
25362 -----------------------------------------------------------------------*/
25363
25364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25365 usSessRcvPktFilterCfgSize,
25366 &pSendBuffer, &usDataOffset, &usSendSize))||
25367 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25368 {
25369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25370 "Unable to get send buffer in "
25371 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25372 pEventData, pwdiSetRcvPktFilterReqInfo,
25373 wdiReceiveFilterSetFilterCb);
25374 WDI_ASSERT(0);
25375 wpalMemoryFree(pSessRcvPktFilterCfg);
25376 return WDI_STATUS_E_FAILURE;
25377 }
25378
25379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25380 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25381 usSendSize,pSessRcvPktFilterCfg);
25382
25383 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25384 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25385 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25386 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25387
25388 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25389
25390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25391 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25392 pSessRcvPktFilterCfg->filterType);
25393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25394 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25395 pSessRcvPktFilterCfg->coleasceTime);
25396
25397 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25398 {
25399 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25400 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25401 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25402 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25403 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25404 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25405 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25406 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25407
25408 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25409 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25410 8);
25411 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25412 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25413 8);
25414
25415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25416 "Out:Proto %d Comp Flag %d \n",
25417 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25418 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25419
25420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25421 "Data Offset %d Data Len %d\n",
25422 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25423 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25424
25425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25426 "CData: %d:%d:%d:%d:%d:%d\n",
25427 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25428 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25429 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25430 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25431 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25432 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25433
25434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25435 "MData: %d:%d:%d:%d:%d:%d\n",
25436 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25437 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25438 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25439 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25440 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25441 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25442 }
25443
25444 wpalMemoryCopy( pSendBuffer+usDataOffset,
25445 pSessRcvPktFilterCfg,
25446 usSessRcvPktFilterCfgSize);
25447
25448
25449 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25450 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25451
25452 wpalMemoryFree(pSessRcvPktFilterCfg);
25453
25454 }
25455 /*If SLM_SESSIONIZATION is not supported then do this */
25456 else
25457 {
25458 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25459 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25460 * sizeof(tHalRcvPktFilterParams));
25461
25462 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025463 usRcvPktFilterCfgSize);
25464
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025465 if(NULL == pRcvPktFilterCfg)
25466 {
25467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25468 "%s: Failed to allocate memory for "
25469 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025470 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025471 WDI_ASSERT(0);
25472 return WDI_STATUS_E_FAILURE;
25473 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025474
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025475 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025477 /*-----------------------------------------------------------------------
25478 Get message buffer
25479 -----------------------------------------------------------------------*/
25480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 usRcvPktFilterCfgSize,
25482 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025483 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25484 {
25485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 "Unable to get send buffer in "
25487 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25488 pEventData, pwdiSetRcvPktFilterReqInfo,
25489 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025490 WDI_ASSERT(0);
25491 wpalMemoryFree(pRcvPktFilterCfg);
25492 return WDI_STATUS_E_FAILURE;
25493 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025494
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025496 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 usSendSize,usRcvPktFilterCfgSize);
25498
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025499 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25500 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25501 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25502 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025503
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025505 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025506 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025509 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025510
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025511 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25512 {
25513 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25514 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25515 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25516 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25517 pRcvPktFilterCfg->paramsData[i].dataOffset =
25518 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25519 pRcvPktFilterCfg->paramsData[i].dataLength =
25520 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025521
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025522 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25524 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025525 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25527 8);
25528
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25533
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25535 "Data Offset %d Data Len %d\n",
25536 pRcvPktFilterCfg->paramsData[i].dataOffset,
25537 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25540 "CData: %d:%d:%d:%d:%d:%d\n",
25541 pRcvPktFilterCfg->paramsData[i].compareData[0],
25542 pRcvPktFilterCfg->paramsData[i].compareData[1],
25543 pRcvPktFilterCfg->paramsData[i].compareData[2],
25544 pRcvPktFilterCfg->paramsData[i].compareData[3],
25545 pRcvPktFilterCfg->paramsData[i].compareData[4],
25546 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025547
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25549 "MData: %d:%d:%d:%d:%d:%d\n",
25550 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25551 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25552 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25553 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25554 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25555 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25556 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025557
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025558 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025559 pRcvPktFilterCfg,
25560 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025561
25562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025563 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25564 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025567 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025568 wpalMemoryFree(pRcvPktFilterCfg);
25569 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025571 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025576}
25577
25578/**
25579 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025580
25581 @param pWDICtx: pointer to the WLAN DAL context
25582 pEventData: pointer to the event information structure
25583
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 @see
25585 @return Result of the function call
25586*/
25587WDI_Status
25588WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025589(
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 WDI_ControlBlockType* pWDICtx,
25591 WDI_EventInfoType* pEventData
25592)
25593{
25594 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25595 NULL;
25596 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25597 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 wpt_uint16 usDataOffset = 0;
25600 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025601 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25602 wpt_uint8 ucCurrentBSSSesIdx = 0;
25603 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025604
25605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025606 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025607
25608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 -------------------------------------------------------------------------*/
25611 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25616 {
25617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 }
25622
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025623 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25624 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25625 &pBSSSes);
25626 if ( NULL == pBSSSes )
25627 {
25628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025629 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025630 return WDI_STATUS_E_FAILURE;
25631 }
25632
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 /*-----------------------------------------------------------------------
25634 Get message buffer
25635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25637 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025638 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025640 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 {
25642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25643 "Unable to get send buffer in "
25644 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25645 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25646 wdiFilterMatchCountCb);
25647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 }
25650
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025651 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25652 wpalMemoryCopy( pSendBuffer+usDataOffset,
25653 &rcvFltPktMatchCntReqParam,
25654 sizeof(rcvFltPktMatchCntReqParam));
25655
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 //
25657 // Don't need to fill send buffer other than header
25658 //
25659 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025661
25662
25663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25667 wdiFilterMatchCountCb,
25668 pEventData->pUserData,
25669 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025670}
25671
25672/**
25673 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025674
25675 @param pWDICtx: pointer to the WLAN DAL context
25676 pEventData: pointer to the event information structure
25677
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 @see
25679 @return Result of the function call
25680*/
25681WDI_Status
25682WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025683(
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 WDI_ControlBlockType* pWDICtx,
25685 WDI_EventInfoType* pEventData
25686)
Jeff Johnsone7245742012-09-05 17:12:55 -070025687{
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25689 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 wpt_uint16 usDataOffset = 0;
25692 wpt_uint16 usSendSize = 0;
25693 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025694 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025696
25697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025698 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025699
25700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 -------------------------------------------------------------------------*/
25703 if (( NULL == pEventData ) ||
25704 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25705 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025706 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025707 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25708 {
25709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025712 return WDI_STATUS_E_FAILURE;
25713 }
25714
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025715 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25717 &pBSSSes);
25718 if ( NULL == pBSSSes )
25719 {
25720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025721 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 }
25724
25725 /*-----------------------------------------------------------------------
25726 Get message buffer
25727 -----------------------------------------------------------------------*/
25728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025729 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 sizeof(tHalRcvFltPktClearParam),
25731 &pSendBuffer, &usDataOffset, &usSendSize))||
25732 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25733 {
25734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25735 "Unable to get send buffer in "
25736 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25737 pEventData, pwdiRcvFltPktClearReqParamsType,
25738 wdiRcvFltPktClearFilterCb);
25739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 }
25742
25743
25744 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025747 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025748
Jeff Johnsone7245742012-09-05 17:12:55 -070025749 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25750 wpalMemoryCopy( pSendBuffer+usDataOffset,
25751 &rcvFltPktClearParam,
25752 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025753
25754 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025755 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025756
25757
25758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025759 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025761 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025763 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025764}
25765
25766/**
25767 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025768
25769 @param pWDICtx: pointer to the WLAN DAL context
25770 pEventData: pointer to the event information structure
25771
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 @see
25773 @return Result of the function call
25774*/
25775WDI_Status
25776WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025777(
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 WDI_ControlBlockType* pWDICtx,
25779 WDI_EventInfoType* pEventData
25780)
25781{
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 eHalStatus halStatus;
25783 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025784 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25785 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25787
25788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025789 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025790
25791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 -------------------------------------------------------------------------*/
25794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25795 ( NULL == pEventData->pEventData ))
25796 {
25797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 }
25802
Jeff Johnsone7245742012-09-05 17:12:55 -070025803 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025804
25805 /*-------------------------------------------------------------------------
25806 Extract response and send it to UMAC
25807 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025808 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25809 {
25810 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25811 pEventData->pEventData,
25812 sizeof(halRcvFltPktSetMcListRsp));
25813
25814 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25815 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25816 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25817 halRcvFltPktSetMcListRsp.bssIdx;
25818 }
25819 else
25820 {
25821 halStatus = *((eHalStatus*)pEventData->pEventData);
25822 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25823 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025824
25825 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025826 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025827
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025829}
25830
25831/**
25832 @brief Process Set Rsp function (called when a
25833 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025834
25835 @param pWDICtx: pointer to the WLAN DAL context
25836 pEventData: pointer to the event information structure
25837
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 @see
25839 @return Result of the function call
25840*/
25841WDI_Status
25842WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025843(
Jeff Johnson295189b2012-06-20 16:38:30 -070025844 WDI_ControlBlockType* pWDICtx,
25845 WDI_EventInfoType* pEventData
25846)
25847{
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 eHalStatus halStatus;
25849 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025850 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25851 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25853
25854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025855 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025856
25857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 -------------------------------------------------------------------------*/
25860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25861 ( NULL == pEventData->pEventData ))
25862 {
25863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025867 }
25868
25869 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025870 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025871
25872 /*-------------------------------------------------------------------------
25873 Extract response and send it to UMAC
25874 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025875 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25876 {
25877 wpalMemoryCopy( &halSetPktFilterRspParams,
25878 pEventData->pEventData,
25879 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025880
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025881 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25882 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25883 }
25884 else
25885 {
25886 halStatus = *((eHalStatus*)pEventData->pEventData);
25887 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25888 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025890 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025891
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025893}
25894
25895/**
25896 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025897
25898 @param pWDICtx: pointer to the WLAN DAL context
25899 pEventData: pointer to the event information structure
25900
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 @see
25902 @return Result of the function call
25903*/
25904WDI_Status
25905WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025906(
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 WDI_ControlBlockType* pWDICtx,
25908 WDI_EventInfoType* pEventData
25909)
25910{
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025913 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25914 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025915
25916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25917
25918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025919 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025920
25921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025923 -------------------------------------------------------------------------*/
25924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25925 ( NULL == pEventData->pEventData ))
25926 {
25927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 }
25932
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025934
25935 /*-------------------------------------------------------------------------
25936 Extract response and send it to UMAC
25937 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025938 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25939 {
25940 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25941 pEventData->pEventData,
25942 sizeof(halRcvFltrPktMatachRsp));
25943
25944 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25945 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25946 }
25947 else
25948 {
25949 halStatus = *((eHalStatus*)pEventData->pEventData);
25950 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25951 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025952
25953 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025954 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025955
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025957}
25958
25959/**
25960 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025961
25962 @param pWDICtx: pointer to the WLAN DAL context
25963 pEventData: pointer to the event information structure
25964
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 @see
25966 @return Result of the function call
25967*/
25968WDI_Status
25969WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025970(
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 WDI_ControlBlockType* pWDICtx,
25972 WDI_EventInfoType* pEventData
25973)
25974{
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 eHalStatus halStatus;
25976 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025977 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25978 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25980
25981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025982 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025983
25984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 -------------------------------------------------------------------------*/
25987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25988 ( NULL == pEventData->pEventData ))
25989 {
25990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025994 }
25995
25996 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025997 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025998
25999 /*-------------------------------------------------------------------------
26000 Extract response and send it to UMAC
26001 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026002 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26003 {
26004 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26005 pEventData->pEventData,
26006 sizeof(halRcvFltPktClearRspMsg));
26007
26008 wdiRcvFltPktClearRspParamsType.wdiStatus =
26009 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26010 wdiRcvFltPktClearRspParamsType.bssIdx =
26011 halRcvFltPktClearRspMsg.bssIdx;
26012 }
26013 else
26014 {
26015 halStatus = *((eHalStatus*)pEventData->pEventData);
26016 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26017 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026018
26019 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026020 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026021
Jeff Johnsone7245742012-09-05 17:12:55 -070026022 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026023}
26024#endif // WLAN_FEATURE_PACKET_FILTERING
26025
26026/**
26027 @brief Process Shutdown Rsp function
26028 There is no shutdown response comming from HAL
26029 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026030
Jeff Johnson295189b2012-06-20 16:38:30 -070026031 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026032 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026033
26034 @see
26035 @return Result of the function call
26036*/
26037WDI_Status
26038WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026039(
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 WDI_ControlBlockType* pWDICtx,
26041 WDI_EventInfoType* pEventData
26042)
26043{
26044 /*There is no shutdown response comming from HAL - function just kept for
26045 simmetry */
26046 WDI_ASSERT(0);
26047 return WDI_STATUS_SUCCESS;
26048}/*WDI_ProcessShutdownRsp*/
26049
26050/**
26051 @brief WDI_SetPowerParamsReq
26052
Jeff Johnsone7245742012-09-05 17:12:55 -070026053 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026055
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 wdiPowerParamsCb: callback for passing back the response
26057 of the Set Power Params operation received from the
26058 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026059
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 callback
26062
Jeff Johnson295189b2012-06-20 16:38:30 -070026063 @return Result of the function call
26064*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026066WDI_SetPowerParamsReq
26067(
26068 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26069 WDI_SetPowerParamsCb wdiPowerParamsCb,
26070 void* pUserData
26071)
26072{
26073 WDI_EventInfoType wdiEventData;
26074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26075
26076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026078 ------------------------------------------------------------------------*/
26079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26080 {
26081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26082 "WDI API call before module is initialized - Fail request");
26083
Jeff Johnsone7245742012-09-05 17:12:55 -070026084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 }
26086
26087 /*------------------------------------------------------------------------
26088 Fill in Event data and post to the Main FSM
26089 ------------------------------------------------------------------------*/
26090 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026093 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 wdiEventData.pUserData = pUserData;
26095
26096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26097}/*WDI_SetPowerParamsReq*/
26098
26099/**
26100 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026101
26102 @param pWDICtx: pointer to the WLAN DAL context
26103 pEventData: pointer to the event information structure
26104
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 @see
26106 @return Result of the function call
26107*/
26108WDI_Status
26109WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026110(
Jeff Johnson295189b2012-06-20 16:38:30 -070026111 WDI_ControlBlockType* pWDICtx,
26112 WDI_EventInfoType* pEventData
26113)
26114{
26115 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26116 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026117 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026118 wpt_uint16 usDataOffset = 0;
26119 wpt_uint16 usSendSize = 0;
26120 tSetPowerParamsType powerParams;
26121
26122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 -------------------------------------------------------------------------*/
26125 if (( NULL == pEventData ) ||
26126 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26127 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26128 {
26129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 }
26134
26135 /*-----------------------------------------------------------------------
26136 Get message buffer
26137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 sizeof(powerParams),
26140 &pSendBuffer, &usDataOffset, &usSendSize))||
26141 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26142 {
26143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26144 "Unable to get send buffer in Set PNO req %x %x %x",
26145 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 }
26149
26150 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026151 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026152 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26153
26154 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26157
26158 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026159 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026160 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26161
26162 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26165
26166 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026167 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26169
26170 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 powerParams.uBETInterval =
26172 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026173
Yue Ma0da19492013-05-13 17:01:29 -070026174 /* MAX LI for modulated DTIM */
26175 powerParams.uMaxLIModulatedDTIM =
26176 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026177
26178 wpalMemoryCopy( pSendBuffer+usDataOffset,
26179 &powerParams,
26180 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026181
26182 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026184
26185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026186 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026187 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026188 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26189 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026190}
26191
26192/**
26193 @brief Process Power Params Rsp function (called when a
26194 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026195
26196 @param pWDICtx: pointer to the WLAN DAL context
26197 pEventData: pointer to the event information structure
26198
Jeff Johnson295189b2012-06-20 16:38:30 -070026199 @see
26200 @return Result of the function call
26201*/
26202WDI_Status
26203WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026204(
Jeff Johnson295189b2012-06-20 16:38:30 -070026205 WDI_ControlBlockType* pWDICtx,
26206 WDI_EventInfoType* pEventData
26207)
26208{
26209 WDI_Status wdiStatus;
26210 eHalStatus halStatus;
26211 WDI_SetPowerParamsCb wdiPowerParamsCb;
26212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26213
26214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 -------------------------------------------------------------------------*/
26217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26218 ( NULL == pEventData->pEventData ))
26219 {
26220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026224 }
26225
Jeff Johnsone7245742012-09-05 17:12:55 -070026226 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026227
26228 /*-------------------------------------------------------------------------
26229 Extract response and send it to UMAC
26230 -------------------------------------------------------------------------*/
26231 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026232 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026233
26234 /*Notify UMAC*/
26235 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26236
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026238}/*WDI_ProcessSetPowerParamsRsp*/
26239
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026240/**
26241 @brief WDI_dhcpStartInd
26242 Host will send an event to the FW when DHCP is initiated
26243
26244 @param
26245 WDI_DHCPInd: DHCP Indication
26246 @see
26247 @return Result of the function call
26248*/
26249WDI_Status
26250WDI_dhcpStartInd
26251(
26252 WDI_DHCPInd *wdiDHCPInd
26253)
26254{
26255 WDI_EventInfoType wdiEventData;
26256
26257 /*------------------------------------------------------------------------
26258 Sanity Check
26259 ------------------------------------------------------------------------*/
26260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26261 {
26262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26263 "WDI API call before module is initialized - Fail request");
26264
26265 return WDI_STATUS_E_NOT_ALLOWED;
26266 }
26267
26268 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26269 wdiEventData.pEventData = wdiDHCPInd;
26270 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26271 wdiEventData.pCBfnc = NULL;
26272 wdiEventData.pUserData = NULL;
26273
26274 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26275}
26276
26277
26278/**
26279 @brief WDI_dhcpStopInd
26280 Host will send an event to the FW when DHCP is completed
26281
26282 @param
26283 WDI_DHCPInd: DHCP Indication
26284 @see
26285 @return Result of the function call
26286*/
26287WDI_Status
26288WDI_dhcpStopInd
26289(
26290 WDI_DHCPInd *wdiDHCPInd
26291)
26292{
26293 WDI_EventInfoType wdiEventData;
26294
26295 /*------------------------------------------------------------------------
26296 Sanity Check
26297 ------------------------------------------------------------------------*/
26298 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26299 {
26300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26301 "WDI API call before module is initialized - Fail request");
26302
26303 return WDI_STATUS_E_NOT_ALLOWED;
26304 }
26305
26306 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26307 wdiEventData.pEventData = wdiDHCPInd;
26308 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26309 wdiEventData.pCBfnc = NULL;
26310 wdiEventData.pUserData = NULL;
26311
26312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26313}
26314
26315
26316/**
26317 @brief Process DHCP Start Indication message and post it to HAL
26318
26319 @param pWDICtx: pointer to the WLAN DAL context
26320 pEventData: pointer to the event information structure
26321
26322 @see
26323 @return Result of the function call
26324*/
26325WDI_Status
26326WDI_ProcessDHCPStartInd
26327(
26328 WDI_ControlBlockType* pWDICtx,
26329 WDI_EventInfoType* pEventData
26330)
26331{
26332 wpt_uint8* pSendBuffer = NULL;
26333 wpt_uint16 usDataOffset = 0;
26334 wpt_uint16 usSendSize = 0;
26335 wpt_uint16 usLen = 0;
26336 WDI_DHCPInd* pwdiDHCPInd = NULL;
26337 tDHCPInfo* pDHCPInfo;
26338
26339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26340
26341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26342 "%s", __func__);
26343
26344 /*-------------------------------------------------------------------------
26345 Sanity check
26346 -------------------------------------------------------------------------*/
26347 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26348 {
26349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26350 "%s: Invalid parameters", __func__);
26351 WDI_ASSERT(0);
26352 return WDI_STATUS_E_FAILURE;
26353 }
26354 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26355 /*-----------------------------------------------------------------------
26356 Get message buffer
26357 -----------------------------------------------------------------------*/
26358
26359 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26360 WDI_DHCP_START_IND,
26361 sizeof(tDHCPInfo),
26362 &pSendBuffer, &usDataOffset, &usSendSize))||
26363 ( usSendSize < (usDataOffset + usLen )))
26364 {
26365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26366 "Unable to get send buffer in DHCP Start req %p ",
26367 pEventData);
26368 WDI_ASSERT(0);
26369 return WDI_STATUS_E_FAILURE;
26370 }
26371
26372 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26373 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26374 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26375 WDI_MAC_ADDR_LEN);
26376
26377 pWDICtx->pReqStatusUserData = NULL;
26378 pWDICtx->pfncRspCB = NULL;
26379
26380 /*-------------------------------------------------------------------------
26381 Send DHCP Start Indication to HAL
26382 -------------------------------------------------------------------------*/
26383 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26384
26385}/*WDI_ProcessDHCPStartInd*/
26386
26387/**
26388 @brief Process DHCP Stop indication message and post it to HAL
26389
26390 @param pWDICtx: pointer to the WLAN DAL context
26391 pEventData: pointer to the event information structure
26392
26393 @see
26394 @return Result of the function call
26395*/
26396WDI_Status
26397WDI_ProcessDHCPStopInd
26398(
26399 WDI_ControlBlockType* pWDICtx,
26400 WDI_EventInfoType* pEventData
26401)
26402{
26403 wpt_uint8* pSendBuffer = NULL;
26404 wpt_uint16 usDataOffset = 0;
26405 wpt_uint16 usSendSize = 0;
26406 wpt_uint16 usLen = 0;
26407 WDI_DHCPInd* pwdiDHCPInd = NULL;
26408 tDHCPInfo* pDHCPInfo;
26409
26410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26411
26412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26413 "%s", __func__);
26414
26415 /*-------------------------------------------------------------------------
26416 Sanity check
26417 -------------------------------------------------------------------------*/
26418
26419 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26420 {
26421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26422 "%s: Invalid parameters", __func__);
26423 WDI_ASSERT(0);
26424 return WDI_STATUS_E_FAILURE;
26425 }
26426 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26427 /*-----------------------------------------------------------------------
26428 Get message buffer
26429 -----------------------------------------------------------------------*/
26430
26431 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26432 WDI_DHCP_STOP_IND,
26433 sizeof(tDHCPInfo),
26434 &pSendBuffer, &usDataOffset, &usSendSize))||
26435 ( usSendSize < (usDataOffset + usLen )))
26436 {
26437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26438 "Unable to get send buffer in DHCP Start req %p ",
26439 pEventData);
26440 WDI_ASSERT(0);
26441 return WDI_STATUS_E_FAILURE;
26442 }
26443
26444 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26445 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26446 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26447 WDI_MAC_ADDR_LEN);
26448
26449 pWDICtx->pReqStatusUserData = NULL;
26450 pWDICtx->pfncRspCB = NULL;
26451 /*-------------------------------------------------------------------------
26452 Send DHCP Stop indication to HAL
26453 -------------------------------------------------------------------------*/
26454 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26455
26456}/*WDI_ProcessDHCPStopInd*/
26457
26458
Jeff Johnson295189b2012-06-20 16:38:30 -070026459#ifdef WLAN_FEATURE_GTK_OFFLOAD
26460/**
26461 @brief WDI_GTKOffloadReq will be called when the upper MAC
26462 wants to set GTK Rekey Counter while in power save. Upon
26463 the call of this API the WLAN DAL will pack and send a
26464 HAL GTK offload request message to the lower RIVA
26465 sub-system if DAL is in state STARTED.
26466
26467 In state BUSY this request will be queued. Request won't
26468 be allowed in any other state.
26469
26470 WDI_PostAssocReq must have been called.
26471
26472 @param pwdiGtkOffloadParams: the GTK offload as specified
26473 by the Device Interface
26474
26475 wdiGtkOffloadCb: callback for passing back the response
26476 of the GTK offload operation received from the device
26477
26478 pUserData: user data will be passed back with the
26479 callback
26480
26481 @see WDI_PostAssocReq
26482 @return Result of the function call
26483*/
26484WDI_Status
26485WDI_GTKOffloadReq
26486(
26487 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26488 WDI_GtkOffloadCb wdiGtkOffloadCb,
26489 void* pUserData
26490)
26491{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026492 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26494
26495 /*------------------------------------------------------------------------
26496 Sanity Check
26497 ------------------------------------------------------------------------*/
26498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26499 {
26500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26501 "WDI API call before module is initialized - Fail request");
26502
26503 return WDI_STATUS_E_NOT_ALLOWED;
26504 }
26505
26506 /*------------------------------------------------------------------------
26507 Fill in Event data and post to the Main FSM
26508 ------------------------------------------------------------------------*/
26509 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26510 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026511 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26513 wdiEventData.pUserData = pUserData;
26514
26515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26516}
26517
26518
26519/**
26520 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26521 MAC wants to get GTK Rekey Counter while in power save.
26522 Upon the call of this API the WLAN DAL will pack and
26523 send a HAL GTK offload request message to the lower RIVA
26524 sub-system if DAL is in state STARTED.
26525
26526 In state BUSY this request will be queued. Request won't
26527 be allowed in any other state.
26528
26529 WDI_PostAssocReq must have been called.
26530
26531 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26532 Information Message as specified by the
26533 Device Interface
26534
26535 wdiGtkOffloadGetInfoCb: callback for passing back the
26536 response of the GTK offload operation received from the
26537 device
26538
26539 pUserData: user data will be passed back with the
26540 callback
26541
26542 @see WDI_PostAssocReq
26543 @return Result of the function call
26544*/
26545WDI_Status
26546WDI_GTKOffloadGetInfoReq
26547(
26548 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26549 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26550 void* pUserData
26551)
26552{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026553 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26555
26556 /*------------------------------------------------------------------------
26557 Sanity Check
26558 ------------------------------------------------------------------------*/
26559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26560 {
26561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26562 "WDI API call before module is initialized - Fail request");
26563
26564 return WDI_STATUS_E_NOT_ALLOWED;
26565 }
26566
26567 /*------------------------------------------------------------------------
26568 Fill in Event data and post to the Main FSM
26569 ------------------------------------------------------------------------*/
26570 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26571 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26572 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26573 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26574 wdiEventData.pUserData = pUserData;
26575
26576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26577}
26578
26579
26580/**
26581 @brief Process set GTK Offload Request function
26582
26583 @param pWDICtx: pointer to the WLAN DAL context
26584 pEventData: pointer to the event information structure
26585
26586 @see
26587 @return Result of the function call
26588*/
26589WDI_Status
26590WDI_ProcessGTKOffloadReq
26591(
26592 WDI_ControlBlockType* pWDICtx,
26593 WDI_EventInfoType* pEventData
26594)
26595{
26596 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26597 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26598 wpt_uint8* pSendBuffer = NULL;
26599 wpt_uint16 usDataOffset = 0;
26600 wpt_uint16 usSendSize = 0;
26601 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026602 wpt_uint8 ucCurrentSessionId = 0;
26603 WDI_BSSSessionType* pBSSSes = NULL;
26604
Jeff Johnson295189b2012-06-20 16:38:30 -070026605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26606
26607 /*-------------------------------------------------------------------------
26608 Sanity check
26609 -------------------------------------------------------------------------*/
26610 if (( NULL == pEventData ) ||
26611 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26612 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26613 {
26614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026617 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 }
26619
26620 /*-----------------------------------------------------------------------
26621 Get message buffer
26622 -----------------------------------------------------------------------*/
26623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26624 sizeof(gtkOffloadReqParams),
26625 &pSendBuffer, &usDataOffset, &usSendSize))||
26626 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26627 {
26628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26629 "Unable to get send buffer in GTK offload req %x %x %x",
26630 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26631 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026632 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026633 }
26634
26635 //
26636 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26637 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026638 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26639 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26640 &pBSSSes);
26641 if ( NULL == pBSSSes )
26642 {
26643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026644 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026645 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026646 }
26647
26648 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26649
Jeff Johnson295189b2012-06-20 16:38:30 -070026650 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26651 // Copy KCK
26652 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26653 // Copy KEK
26654 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26655 // Copy KeyReplayCounter
26656 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26657
26658 wpalMemoryCopy( pSendBuffer+usDataOffset,
26659 &gtkOffloadReqParams,
26660 sizeof(gtkOffloadReqParams));
26661
26662 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26663 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26664
26665 /*-------------------------------------------------------------------------
26666 Send Get STA Request to HAL
26667 -------------------------------------------------------------------------*/
26668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26669 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026670
26671fail:
26672 // Release the message buffer so we don't leak
26673 wpalMemoryFree(pSendBuffer);
26674
26675failRequest:
26676 //WDA should have failure check to avoid the memory leak
26677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026678}
26679
26680
26681/**
26682 @brief Process GTK Offload Get Information Request function
26683
26684 @param pWDICtx: pointer to the WLAN DAL context
26685 pEventData: pointer to the event information structure
26686
26687 @see
26688 @return Result of the function call
26689*/
26690WDI_Status
26691WDI_ProcessGTKOffloadGetInfoReq
26692(
26693 WDI_ControlBlockType* pWDICtx,
26694 WDI_EventInfoType* pEventData
26695)
26696{
26697 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26698 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26699 wpt_uint8* pSendBuffer = NULL;
26700 wpt_uint16 usDataOffset = 0;
26701 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026702 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26703 wpt_uint8 ucCurrentSessionId = 0;
26704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026705
26706 /*-------------------------------------------------------------------------
26707 Sanity check
26708 -------------------------------------------------------------------------*/
26709 if (( NULL == pEventData ) ||
26710 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26711 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26712 {
26713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026715 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026716 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026717 }
26718
26719 /*-----------------------------------------------------------------------
26720 Get message buffer
26721 -----------------------------------------------------------------------*/
26722 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026723 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026724 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026725 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026726 {
26727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26728 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26729 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26730 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026731 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026732 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026733 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26734 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26735 &pBSSSes);
26736 if ( NULL == pBSSSes )
26737 {
26738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026739 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026740 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026741 }
26742 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026743
26744 //
26745 // Don't need to fill send buffer other than header
26746 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026747 wpalMemoryCopy( pSendBuffer+usDataOffset,
26748 &halGtkOffloadGetInfoReqParams,
26749 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026750
26751 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26752 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26753
26754 /*-------------------------------------------------------------------------
26755 Send Get STA Request to HAL
26756 -------------------------------------------------------------------------*/
26757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26758 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026759fail:
26760 // Release the message buffer so we don't leak
26761 wpalMemoryFree(pSendBuffer);
26762
26763failRequest:
26764 //WDA should have failure check to avoid the memory leak
26765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026766}
26767
26768/**
26769 @brief Process host offload Rsp function (called when a
26770 response is being received over the bus from HAL)
26771
26772 @param pWDICtx: pointer to the WLAN DAL context
26773 pEventData: pointer to the event information structure
26774
26775 @see
26776 @return Result of the function call
26777*/
26778WDI_Status
26779WDI_ProcessGtkOffloadRsp
26780(
26781 WDI_ControlBlockType* pWDICtx,
26782 WDI_EventInfoType* pEventData
26783)
26784{
Jeff Johnson295189b2012-06-20 16:38:30 -070026785 eHalStatus halStatus;
26786 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026787 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26788 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26790
26791 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26792
26793 /*-------------------------------------------------------------------------
26794 Sanity check
26795 -------------------------------------------------------------------------*/
26796 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26797 ( NULL == pEventData->pEventData))
26798 {
26799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026801 WDI_ASSERT(0);
26802 return WDI_STATUS_E_FAILURE;
26803 }
26804
26805 /*-------------------------------------------------------------------------
26806 Extract response and send it to UMAC
26807 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026808 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26809 {
26810 wpalMemoryCopy( &halGtkOffloadRspParams,
26811 pEventData->pEventData,
26812 sizeof(halGtkOffloadRspParams));
26813
26814 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026815 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026816 wdiGtkOffloadRsparams.bssIdx =
26817 halGtkOffloadRspParams.bssIdx;
26818 }
26819 else
26820 {
26821 halStatus = *((eHalStatus*)pEventData->pEventData);
26822 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26823 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026824
26825 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026826 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026827
26828 return WDI_STATUS_SUCCESS;
26829}
26830
26831/**
26832 @brief Process GTK Offload Get Information Response function
26833
26834 @param pWDICtx: pointer to the WLAN DAL context
26835 pEventData: pointer to the event information structure
26836
26837 @see
26838 @return Result of the function call
26839*/
26840WDI_Status
26841WDI_ProcessGTKOffloadGetInfoRsp
26842(
26843 WDI_ControlBlockType* pWDICtx,
26844 WDI_EventInfoType* pEventData
26845)
26846{
Jeff Johnson295189b2012-06-20 16:38:30 -070026847 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026848 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026849 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26850 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026851 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026852
26853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26854
26855 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26856
26857 /*-------------------------------------------------------------------------
26858 Sanity check
26859 -------------------------------------------------------------------------*/
26860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26861 ( NULL == pEventData->pEventData ))
26862 {
26863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 WDI_ASSERT(0);
26866 return WDI_STATUS_E_FAILURE;
26867 }
26868
26869 /*-------------------------------------------------------------------------
26870 Extract response and send it to UMAC
26871 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026872 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26873 {
26874 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26875 pEventData->pEventData,
26876 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026877
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026878 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026879 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026880 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26881 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26882 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26883 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26884 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26885 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26886 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26887 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026888
26889 wpalMutexAcquire(&pWDICtx->wptMutex);
26890 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26891 &pBSSSes);
26892
26893 if ( NULL == pBSSSes )
26894 {
26895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26896 "Association sequence for this BSS does not exist or "
26897 "association no longer in progress - mysterious HAL response");
26898 wpalMutexRelease(&pWDICtx->wptMutex);
26899 return WDI_STATUS_E_NOT_ALLOWED;
26900 }
26901
26902 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26903 sizeof (wpt_macAddr));
26904 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026905 }
26906 else
26907 {
26908 halStatus = *((eHalStatus*)pEventData->pEventData);
26909 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026911 /*Notify UMAC*/
26912 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26913 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026914 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026915
26916 return WDI_STATUS_SUCCESS;
26917}
26918#endif // WLAN_FEATURE_GTK_OFFLOAD
26919
26920#ifdef WLAN_WAKEUP_EVENTS
26921WDI_Status
26922WDI_ProcessWakeReasonInd
26923(
26924 WDI_ControlBlockType* pWDICtx,
26925 WDI_EventInfoType* pEventData
26926)
26927{
26928 WDI_LowLevelIndType *pWdiInd;
26929 tpWakeReasonParams pWakeReasonParams;
26930 wpt_uint32 allocSize = 0;
26931
26932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026933 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026934
26935 /*-------------------------------------------------------------------------
26936 Sanity check
26937 -------------------------------------------------------------------------*/
26938 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26939 ( NULL == pEventData->pEventData ))
26940 {
26941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026943 WDI_ASSERT( 0 );
26944 return WDI_STATUS_E_FAILURE;
26945 }
26946
26947 /*-------------------------------------------------------------------------
26948 Extract indication and send it to UMAC
26949 -------------------------------------------------------------------------*/
26950 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26951
26952 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26953
26954 //Allocate memory for WDI_WakeReasonIndType structure
26955 pWdiInd = wpalMemoryAllocate(allocSize) ;
26956
26957 if(NULL == pWdiInd)
26958 {
26959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26960 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026961 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026962 WDI_ASSERT(0);
26963 return WDI_STATUS_E_FAILURE;
26964 }
26965
26966 wpalMemoryZero(pWdiInd, allocSize);
26967
26968 /* Fill in the indication parameters*/
26969 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26970 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26971 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26972 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26973 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26974 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26975 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26976 &(pWakeReasonParams->aDataStart[0]),
26977 pWakeReasonParams->ulStoredDataLen);
26978
ltimariu034f7d62013-01-24 18:54:33 -080026979
26980 if ( pWDICtx->wdiLowLevelIndCB )
26981 {
26982 /*Notify UMAC*/
26983 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26984 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026985
26986 //Free memory allocated for WDI_WakeReasonIndType structure
26987 wpalMemoryFree(pWdiInd);
26988
26989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026990 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026991
26992 return WDI_STATUS_SUCCESS;
26993}
26994#endif // WLAN_WAKEUP_EVENTS
26995
26996void WDI_GetWcnssCompiledApiVersion
26997(
26998 WDI_WlanVersionType *pWcnssApiVersion
26999)
27000{
27001 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27002 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27003 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27004 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27005}
27006
27007/**
27008 @brief Process Set TM Level Rsp function (called when a
27009 response is being received over the bus from HAL)
27010
27011 @param pWDICtx: pointer to the WLAN DAL context
27012 pEventData: pointer to the event information structure
27013
27014 @see
27015 @return Result of the function call
27016*/
27017WDI_Status
27018WDI_ProcessSetTmLevelRsp
27019(
27020 WDI_ControlBlockType* pWDICtx,
27021 WDI_EventInfoType* pEventData
27022)
27023{
27024 WDI_Status wdiStatus;
27025 eHalStatus halStatus;
27026 WDI_SetTmLevelCb wdiSetTmLevelCb;
27027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27028
27029 /*-------------------------------------------------------------------------
27030 Sanity check
27031 -------------------------------------------------------------------------*/
27032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27033 ( NULL == pEventData->pEventData ))
27034 {
27035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027037 WDI_ASSERT(0);
27038 return WDI_STATUS_E_FAILURE;
27039 }
27040
27041 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27042
27043 /*-------------------------------------------------------------------------
27044 Extract response and send it to UMAC
27045 -------------------------------------------------------------------------*/
27046 halStatus = *((eHalStatus*)pEventData->pEventData);
27047 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27048
27049 /*Notify UMAC*/
27050 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27051
27052 return WDI_STATUS_SUCCESS;
27053}/*WDI_ProcessSetTmLevelRsp*/
27054
27055/**
27056 @brief Process Set Thermal Mitigation level Changed request
27057
27058 @param pWDICtx: pointer to the WLAN DAL context
27059 pEventData: pointer to the event information structure
27060
27061 @see
27062 @return Result of the function call
27063*/
27064WDI_Status
27065WDI_ProcessSetTmLevelReq
27066(
27067 WDI_ControlBlockType* pWDICtx,
27068 WDI_EventInfoType* pEventData
27069)
27070{
27071 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27072 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27073 wpt_uint8* pSendBuffer = NULL;
27074 wpt_uint16 usDataOffset = 0;
27075 wpt_uint16 usSendSize = 0;
27076 tSetThermalMitgationType halTmMsg;
27077
27078 /*-------------------------------------------------------------------------
27079 Sanity check
27080 -------------------------------------------------------------------------*/
27081 if (( NULL == pEventData ) ||
27082 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27083 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27084 {
27085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027087 WDI_ASSERT(0);
27088 return WDI_STATUS_E_FAILURE;
27089 }
27090
27091 /*-----------------------------------------------------------------------
27092 Get message buffer
27093 -----------------------------------------------------------------------*/
27094 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27095 sizeof(halTmMsg),
27096 &pSendBuffer, &usDataOffset, &usSendSize))||
27097 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27098 {
27099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27100 "Unable to get send buffer in Set PNO req %x %x %x",
27101 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27102 WDI_ASSERT(0);
27103 return WDI_STATUS_E_FAILURE;
27104 }
27105
27106 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27107 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27108
27109 wpalMemoryCopy( pSendBuffer+usDataOffset,
27110 &halTmMsg,
27111 sizeof(halTmMsg));
27112
27113 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27114 pWDICtx->pfncRspCB = NULL;
27115 /*-------------------------------------------------------------------------
27116 Send Get STA Request to HAL
27117 -------------------------------------------------------------------------*/
27118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27119 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27120}
27121
27122/* Fill the value from the global features enabled array to the global capabilities
27123 * bitmap struct
27124 */
27125static void
27126FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27127{
27128 wpt_int8 i;
27129 for (i=0; i<len; i++)
27130 {
27131 setFeatCaps(fCaps, enabledFeat[i]);
27132 }
27133}
27134
27135/**
27136 @brief WDI_featureCapsExchangeReq
27137 Post feature capability bitmap exchange event.
27138 Host will send its own capability to FW in this req and
27139 expect FW to send its capability back as a bitmap in Response
27140
27141 @param
27142
27143 wdiFeatureCapsExchangeCb: callback called on getting the response.
27144 It is kept to mantain similarity between WDI reqs and if needed, can
27145 be used in future. Currently, It is set to NULL
27146
27147 pUserData: user data will be passed back with the
27148 callback
27149
27150 @see
27151 @return Result of the function call
27152*/
27153WDI_Status
27154WDI_featureCapsExchangeReq
27155(
27156 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27157 void* pUserData
27158)
27159{
27160 WDI_EventInfoType wdiEventData;
27161 wpt_int32 fCapsStructSize;
27162
27163 /*------------------------------------------------------------------------
27164 Sanity Check
27165 ------------------------------------------------------------------------*/
27166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27167 {
27168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27169 "WDI API call before module is initialized - Fail request");
27170
27171 return WDI_STATUS_E_NOT_ALLOWED;
27172 }
27173
27174 /* Allocate memory separately for global variable carrying FW caps */
27175 fCapsStructSize = sizeof(tWlanFeatCaps);
27176 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27177 if ( NULL == gpHostWlanFeatCaps )
27178 {
27179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27180 "Cannot allocate memory for host capability info\n");
27181 WDI_ASSERT(0);
27182 return WDI_STATUS_MEM_FAILURE;
27183 }
27184
27185 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27186
27187 /*------------------------------------------------------------------------
27188 Fill in Event data and post to the Main FSM
27189 ------------------------------------------------------------------------*/
27190 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27191 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027194 gpHostWlanFeatCaps->featCaps[0],
27195 gpHostWlanFeatCaps->featCaps[1],
27196 gpHostWlanFeatCaps->featCaps[2],
27197 gpHostWlanFeatCaps->featCaps[3]
27198 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27200 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027201 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27202 wdiEventData.pEventData = gpHostWlanFeatCaps;
27203 wdiEventData.uEventDataSize = fCapsStructSize;
27204 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27205 wdiEventData.pUserData = pUserData;
27206
27207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27208}
27209
27210/**
Yathishd8713192012-12-10 14:21:35 -080027211 @brief Disable Active mode offload in Host
27212
27213 @param void
27214 @see
27215 @return void
27216*/
27217void
27218WDI_disableCapablityFeature(wpt_uint8 feature_index)
27219{
27220 supportEnabledFeatures[feature_index] = 0;
27221 return;
27222}
27223
27224/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 @brief Process Host-FW Capability Exchange Request function
27226
27227 @param pWDICtx: pointer to the WLAN DAL context
27228 pEventData: pointer to the event information structure
27229
27230 @see
27231 @return Result of the function call
27232*/
27233WDI_Status
27234WDI_ProcessFeatureCapsExchangeReq
27235(
27236 WDI_ControlBlockType* pWDICtx,
27237 WDI_EventInfoType* pEventData
27238)
27239{
27240 wpt_uint8* pSendBuffer = NULL;
27241 wpt_uint16 usDataOffset = 0;
27242 wpt_uint16 usSendSize = 0;
27243 wpt_uint16 usLen = 0;
27244
27245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27246
27247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027248 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027249
27250 /*-------------------------------------------------------------------------
27251 Sanity check
27252 -------------------------------------------------------------------------*/
27253 /* Call back function is NULL since not required for cap exchange req */
27254 if (( NULL == pEventData ) ||
27255 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27256 {
27257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027259 WDI_ASSERT(0);
27260 return WDI_STATUS_E_FAILURE;
27261 }
27262
27263 /*-----------------------------------------------------------------------
27264 Get message buffer
27265 -----------------------------------------------------------------------*/
27266 usLen = sizeof(tWlanFeatCaps);
27267
27268 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27269 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27270 usLen,
27271 &pSendBuffer, &usDataOffset, &usSendSize))||
27272 ( usSendSize < (usDataOffset + usLen )))
27273 {
27274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27275 "Unable to get send buffer in feat caps exchange req %x %x",
27276 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27277 WDI_ASSERT(0);
27278 return WDI_STATUS_E_FAILURE;
27279 }
27280
27281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027282 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27284 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27285 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27286 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27287 );
27288
27289 /* Copy host caps after the offset in the send buffer */
27290 wpalMemoryCopy( pSendBuffer+usDataOffset,
27291 (tWlanFeatCaps *)pEventData->pEventData,
27292 usLen);
27293
27294 /*-------------------------------------------------------------------------
27295 Send Start Request to HAL
27296 -------------------------------------------------------------------------*/
27297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27298 (WDI_StartRspCb)pEventData->pCBfnc,
27299 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27300
27301}/*WDI_ProcessFeatureCapsExchangeReq*/
27302
27303/**
27304 @brief Process Host-FW Capability Exchange Response function
27305
27306 @param pWDICtx: pointer to the WLAN DAL context
27307 pEventData: pointer to the event information structure
27308
27309 @see
27310 @return Result of the function call
27311*/
27312WDI_Status
27313WDI_ProcessFeatureCapsExchangeRsp
27314(
27315 WDI_ControlBlockType* pWDICtx,
27316 WDI_EventInfoType* pEventData
27317)
27318{
27319 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27320 wpt_int32 fCapsStructSize;
27321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27322
27323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027324 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027325
27326 /*-------------------------------------------------------------------------
27327 Sanity check
27328 -------------------------------------------------------------------------*/
27329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27330 ( NULL == pEventData->pEventData ))
27331 {
27332 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027334 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027335 WDI_ASSERT(0);
27336 return WDI_STATUS_E_FAILURE;
27337 }
27338
27339 /* Allocate memory separately for global variable carrying FW caps */
27340 fCapsStructSize = sizeof(tWlanFeatCaps);
27341 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27342 if ( NULL == gpFwWlanFeatCaps )
27343 {
27344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27345 "Cannot allocate memory for host capability info\n");
27346 WDI_ASSERT(0);
27347 return WDI_STATUS_MEM_FAILURE;
27348 }
27349
27350 /*-------------------------------------------------------------------------
27351 Unpack HAL Response Message - the header was already extracted by the
27352 main Response Handling procedure
27353 -------------------------------------------------------------------------*/
27354 /*-------------------------------------------------------------------------
27355 Extract response and send it to UMAC
27356 -------------------------------------------------------------------------*/
27357
27358 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27359 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027361 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 gpFwWlanFeatCaps->featCaps[0],
27363 gpFwWlanFeatCaps->featCaps[1],
27364 gpFwWlanFeatCaps->featCaps[2],
27365 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027366 );
27367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27368 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027369 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27370
27371 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27372 if (wdiFeatureCapsExchangeCb != NULL)
27373 wdiFeatureCapsExchangeCb(NULL, NULL);
27374
27375 return WDI_STATUS_SUCCESS;
27376}
27377
Mohit Khanna4a70d262012-09-11 16:30:12 -070027378#ifdef WLAN_FEATURE_11AC
27379WDI_Status
27380WDI_ProcessUpdateVHTOpModeRsp
27381(
27382 WDI_ControlBlockType* pWDICtx,
27383 WDI_EventInfoType* pEventData
27384)
27385{
27386 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27387 WDI_Status wdiStatus;
27388 eHalStatus halStatus;
27389
27390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27391
27392 /*-------------------------------------------------------------------------
27393 Sanity check
27394 -------------------------------------------------------------------------*/
27395 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27396 ( NULL == pEventData->pEventData))
27397 {
27398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027399 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027400 WDI_ASSERT(0);
27401 return WDI_STATUS_E_FAILURE;
27402 }
27403 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27404
27405 /*-------------------------------------------------------------------------
27406 Extract response and send it to UMAC
27407 -------------------------------------------------------------------------*/
27408 halStatus = *((eHalStatus*)pEventData->pEventData);
27409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27410
27411 /*Notify UMAC*/
27412 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27413
27414 return WDI_STATUS_SUCCESS;
27415}
27416#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027417/**
27418 @brief WDI_getHostWlanFeatCaps
27419 WDI API that returns whether the feature passed to it as enum value in
27420 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27421 variable storing host capability bitmap to find this. This can be used by
27422 other moduels to decide certain things like call different APIs based on
27423 whether a particular feature is supported.
27424
27425 @param
27426
27427 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27428
27429 @see
27430 @return
27431 0 - if the feature is NOT supported in host
27432 any non-zero value - if the feature is SUPPORTED in host.
27433*/
27434wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27435{
27436 wpt_uint8 featSupported = 0;
27437 if (gpHostWlanFeatCaps != NULL)
27438 {
27439 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27440 }
27441 else
27442 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027444 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027445 }
27446 return featSupported;
27447}
27448
27449/**
27450 @brief WDI_getFwWlanFeatCaps
27451 WDI API that returns whether the feature passed to it as enum value in
27452 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27453 variable storing host capability bitmap to find this. This can be used by
27454 other moduels to decide certain things like call different APIs based on
27455 whether a particular feature is supported.
27456
27457 @param
27458
27459 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27460 in wlan_hal_msg.h.
27461
27462 @see
27463 @return
27464 0 - if the feature is NOT supported in FW
27465 any non-zero value - if the feature is SUPPORTED in FW.
27466*/
27467wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27468{
27469 wpt_uint8 featSupported = 0;
27470 if (gpFwWlanFeatCaps != NULL)
27471 {
27472 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27473 }
27474 else
27475 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027477 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 }
27479 return featSupported;
27480}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027481
27482#ifdef WLAN_FEATURE_11AC
27483WDI_Status
27484WDI_ProcessUpdateVHTOpModeReq
27485(
27486 WDI_ControlBlockType* pWDICtx,
27487 WDI_EventInfoType* pEventData
27488)
27489{
27490 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27491 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27492 wpt_uint8* pSendBuffer = NULL;
27493 wpt_uint16 usDataOffset = 0;
27494 wpt_uint16 usSendSize = 0;
27495
27496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27497
27498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027499 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027500
27501 /*-------------------------------------------------------------------------
27502 Sanity check
27503 -------------------------------------------------------------------------*/
27504 if (( NULL == pEventData ) ||
27505 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27506 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27507 {
27508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027509 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027510 WDI_ASSERT(0);
27511 return WDI_STATUS_E_FAILURE;
27512 }
27513
27514 /*-----------------------------------------------------------------------
27515 Get message buffer
27516 -----------------------------------------------------------------------*/
27517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27518 sizeof(WDI_UpdateVHTOpMode),
27519 &pSendBuffer, &usDataOffset, &usSendSize))||
27520 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27521 {
27522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27523 "Unable to get send buffer in update vht opMode req");
27524 WDI_ASSERT(0);
27525 return WDI_STATUS_E_FAILURE;
27526 }
27527
27528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27529 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27530
27531 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27532 sizeof(WDI_UpdateVHTOpMode));
27533
27534 /*-------------------------------------------------------------------------
27535 Send Start Request to HAL
27536 -------------------------------------------------------------------------*/
27537 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27538 wdiVHTOpModeCb,
27539 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27540
27541}
27542
27543WDI_Status
27544WDI_UpdateVHTOpModeReq
27545(
27546 WDI_UpdateVHTOpMode *pData,
27547 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27548 void* pUserData
27549)
27550{
27551 WDI_EventInfoType wdiEventData;
27552
27553 /*------------------------------------------------------------------------
27554 Sanity Check
27555 ------------------------------------------------------------------------*/
27556 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27557 {
27558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27559 "WDI API call before module is initialized - Fail request");
27560
27561 return WDI_STATUS_E_NOT_ALLOWED;
27562 }
27563
27564 /*------------------------------------------------------------------------
27565 Fill in Event data and post to the Main FSM
27566 ------------------------------------------------------------------------*/
27567 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27568 wdiEventData.pEventData = pData;
27569 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27570 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27571 wdiEventData.pUserData = pUserData;
27572
27573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27574 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27575
27576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27577
27578}
27579#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027580
27581/**
27582 @brief WDI_TransportChannelDebug -
27583 Display DXE Channel debugging information
27584 User may request to display DXE channel snapshot
27585 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027586
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027587 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027588 @param enableStallDetect : Enable stall detect feature
27589 This feature will take effect to data performance
27590 Not integrate till fully verification
27591 @see
27592 @return none
27593*/
27594void WDI_TransportChannelDebug
27595(
27596 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027597 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027598)
27599{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027600 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027601 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027602}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027603/**
27604 @brief WDI_SsrTimerCB
27605 Callback function for SSR timer, if this is called then the graceful
27606 shutdown for Riva did not happen.
27607
27608 @param pUserData : user data to timer
27609
27610 @see
27611 @return none
27612*/
27613void
27614WDI_SsrTimerCB
27615(
27616 void *pUserData
27617)
27618{
27619 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27621
27622 if (NULL == pWDICtx )
27623 {
27624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027625 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027626 WDI_ASSERT(0);
27627 return;
27628 }
27629 wpalRivaSubystemRestart();
27630
27631 return;
27632
27633}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027634
27635/**
27636 @brief WDI_SetEnableSSR -
27637 This API is called to enable/disable SSR on WDI timeout.
27638
27639 @param enableSSR : enable/disable SSR
27640
27641 @see
27642 @return none
27643*/
27644void WDI_SetEnableSSR(wpt_boolean enableSSR)
27645{
27646 gWDICb.bEnableSSR = enableSSR;
27647}
Leo Chang00bc9132013-08-01 19:21:11 -070027648
27649
27650#ifdef FEATURE_WLAN_LPHB
27651/**
27652 @brief WDI_ProcessLphbWaitTimeoutInd -
27653 This function will be invoked when FW detects low power
27654 heart beat failure
27655
27656 @param pWDICtx : wdi context
27657 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070027658 @see
27659 @return Result of the function call
27660*/
27661WDI_Status
27662WDI_ProcessLphbWaitTimeoutInd
27663(
27664 WDI_ControlBlockType* pWDICtx,
27665 WDI_EventInfoType* pEventData
27666)
27667{
27668 WDI_LowLevelIndType wdiInd;
27669 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27671
27672 /*-------------------------------------------------------------------------
27673 Sanity check
27674 -------------------------------------------------------------------------*/
27675 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27676 (NULL == pEventData->pEventData))
27677 {
27678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27679 "%s: Invalid parameters", __func__);
27680 WDI_ASSERT(0);
27681 return WDI_STATUS_E_FAILURE;
27682 }
27683
27684 /*-------------------------------------------------------------------------
27685 Extract indication and send it to UMAC
27686 -------------------------------------------------------------------------*/
27687 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
27688
27689 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
27690 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
27691 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
27692 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
27693 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
27694 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
27695 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
27696 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
27697 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
27698 /*Notify UMAC*/
27699 if (pWDICtx->wdiLowLevelIndCB)
27700 {
27701 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
27702 }
27703
27704 return WDI_STATUS_SUCCESS;
27705}
27706
27707/**
27708 @brief WDI_ProcessLphbCfgRsp -
27709 LPHB configuration response from FW
27710
27711 @param pWDICtx : wdi context
27712 pEventData : indication data
27713
27714 @see
27715 @return Result of the function call
27716*/
27717WDI_Status WDI_ProcessLphbCfgRsp
27718(
27719 WDI_ControlBlockType* pWDICtx,
27720 WDI_EventInfoType* pEventData
27721)
27722{
27723 WDI_Status wdiStatus;
27724 eHalStatus halStatus;
27725 WDI_LphbCfgCb wdiLphbCfgCb;
27726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27727
27728 /*-------------------------------------------------------------------------
27729 Sanity check
27730 -------------------------------------------------------------------------*/
27731 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27732 (NULL == pEventData->pEventData))
27733 {
27734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27735 "%s: Invalid parameters", __func__);
27736 WDI_ASSERT(0);
27737 return WDI_STATUS_E_FAILURE;
27738 }
27739
27740 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
27741
27742 /*-------------------------------------------------------------------------
27743 Extract response and send it to UMAC
27744 -------------------------------------------------------------------------*/
27745 halStatus = *((eHalStatus*)pEventData->pEventData);
27746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27747
27748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27749 "LPHB Cfg Rsp Return status %d", wdiStatus);
27750 /*Notify UMAC*/
27751 if (NULL != wdiLphbCfgCb)
27752 {
27753 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
27754 }
27755
27756 return WDI_STATUS_SUCCESS;
27757}
27758
27759/**
27760 @brief WDI_ProcessLPHBConfReq -
27761 LPHB configuration request to FW
27762
27763 @param pWDICtx : wdi context
27764 pEventData : indication data
27765
27766 @see
27767 @return none
27768*/
27769WDI_Status WDI_ProcessLPHBConfReq
27770(
27771 WDI_ControlBlockType* pWDICtx,
27772 WDI_EventInfoType* pEventData
27773)
27774{
27775 WDI_LPHBReq *pLphbReqParams;
27776 WDI_Status wdiStatus;
27777 wpt_uint8* pSendBuffer = NULL;
27778 wpt_uint16 usDataOffset = 0;
27779 wpt_uint16 usSendSize = 0;
27780 tHalLowPowerHeartBeatReq *halLphbReqRarams;
27781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27782
27783 /*-------------------------------------------------------------------------
27784 Sanity check
27785 -------------------------------------------------------------------------*/
27786 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
27787 {
27788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27789 "%s: Invalid parameters in Suspend ind",__func__);
27790 WDI_ASSERT(0);
27791 return WDI_STATUS_E_FAILURE;
27792 }
27793
27794 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
27795
27796 /*-----------------------------------------------------------------------
27797 Get message buffer
27798 -----------------------------------------------------------------------*/
27799 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27800 WDI_LPHB_CFG_REQ,
27801 sizeof(tHalLowPowerHeartBeatReqMsg),
27802 &pSendBuffer, &usDataOffset, &usSendSize))||
27803 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
27804 {
27805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27806 "Unable to get send buffer in LPHB Ind ");
27807 WDI_ASSERT(0);
27808 return WDI_STATUS_E_FAILURE;
27809 }
27810
27811 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
27812 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
27813
27814 halLphbReqRarams->lowPowerHeartBeatCmdType =
27815 (tANI_U16)(++pLphbReqParams->cmd);
27816 switch ((tANI_U16)pLphbReqParams->cmd)
27817 {
27818 case WDI_LPHB_SET_EN_PARAMS_INDID:
27819 halLphbReqRarams->sessionIdx =
27820 pLphbReqParams->params.lphbEnableReq.session;
27821 halLphbReqRarams->options.control.heartBeatEnable =
27822 pLphbReqParams->params.lphbEnableReq.enable;
27823 halLphbReqRarams->options.control.heartBeatType =
27824 pLphbReqParams->params.lphbEnableReq.item;
27825 break;
27826
27827 case WDI_LPHB_SET_TCP_PARAMS_INDID:
27828 halLphbReqRarams->sessionIdx =
27829 pLphbReqParams->params.lphbTcpParamReq.session;
27830 halLphbReqRarams->options.tcpParams.timeOutSec =
27831 pLphbReqParams->params.lphbTcpParamReq.timeout;
27832 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
27833 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
27834 sizeof(v_U32_t));
27835 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
27836 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
27837 sizeof(v_U32_t));
27838
27839 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
27840 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
27841 WDI_MAC_ADDR_LEN);
27842
27843 halLphbReqRarams->options.tcpParams.hostPort =
27844 pLphbReqParams->params.lphbTcpParamReq.src_port;
27845 halLphbReqRarams->options.tcpParams.destPort =
27846 pLphbReqParams->params.lphbTcpParamReq.dst_port;
27847 break;
27848
27849 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
27850 halLphbReqRarams->sessionIdx =
27851 pLphbReqParams->params.lphbTcpFilterReq.session;
27852 halLphbReqRarams->options.tcpUdpFilter.offset =
27853 pLphbReqParams->params.lphbTcpFilterReq.offset;
27854 halLphbReqRarams->options.tcpUdpFilter.filterLength =
27855 pLphbReqParams->params.lphbTcpFilterReq.length;
27856 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
27857 pLphbReqParams->params.lphbTcpFilterReq.filter,
27858 WDI_LPHB_FILTER_LEN);
27859 break;
27860
27861 case WDI_LPHB_SET_UDP_PARAMS_INDID:
27862 halLphbReqRarams->sessionIdx =
27863 pLphbReqParams->params.lphbUdpParamReq.session;
27864 halLphbReqRarams->options.udpParams.timeOutSec =
27865 pLphbReqParams->params.lphbUdpParamReq.timeout;
27866 halLphbReqRarams->options.udpParams.timePeriodSec =
27867 pLphbReqParams->params.lphbUdpParamReq.interval;
27868 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
27869 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
27870 sizeof(v_U32_t));
27871 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
27872 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
27873 sizeof(v_U32_t));
27874
27875 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
27876 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
27877 WDI_MAC_ADDR_LEN);
27878
27879 halLphbReqRarams->options.udpParams.hostPort =
27880 pLphbReqParams->params.lphbUdpParamReq.src_port;
27881 halLphbReqRarams->options.udpParams.destPort =
27882 pLphbReqParams->params.lphbUdpParamReq.dst_port;
27883 break;
27884
27885 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
27886 halLphbReqRarams->sessionIdx =
27887 pLphbReqParams->params.lphbUdpFilterReq.session;
27888 halLphbReqRarams->options.tcpUdpFilter.offset =
27889 pLphbReqParams->params.lphbUdpFilterReq.offset;
27890 halLphbReqRarams->options.tcpUdpFilter.filterLength =
27891 pLphbReqParams->params.lphbUdpFilterReq.length;
27892 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
27893 pLphbReqParams->params.lphbUdpFilterReq.filter,
27894 WDI_LPHB_FILTER_LEN);
27895 break;
27896
27897 case WDI_LPHB_SET_NETWORK_INFO_INDID:
27898 /* NA */
27899 break;
27900
27901 default:
27902 break;
27903 }
27904
27905 /*-------------------------------------------------------------------------
27906 Send Suspend Request to HAL
27907 -------------------------------------------------------------------------*/
27908 pWDICtx->pfncRspCB = pEventData->pCBfnc;
27909 pWDICtx->pReqStatusUserData = pEventData->pUserData;
27910
27911 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
27912 usSendSize, pWDICtx->pfncRspCB,
27913 pWDICtx->pReqStatusUserData,
27914 WDI_LPHB_CFG_RESP);
27915
27916 return wdiStatus;
27917}
27918
27919/**
27920 @brief WDI_LPHBConfReq -
27921 LPHB configuration request API
27922
27923 @param lphbconfParam : configuration parameter
27924 usrData : client context
27925 lphbCfgCb : callback function pointer
27926
27927 @see
27928 @return Success or fail status code
27929*/
27930WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
27931 void *usrData, WDI_LphbCfgCb lphbCfgCb)
27932{
27933 WDI_EventInfoType wdiEventData;
27934
27935 /*------------------------------------------------------------------------
27936 Sanity Check
27937 ------------------------------------------------------------------------*/
27938 if (eWLAN_PAL_FALSE == gWDIInitialized)
27939 {
27940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27941 "WDI API call before module is initialized - Fail request");
27942
27943 return WDI_STATUS_E_NOT_ALLOWED;
27944 }
27945
27946 /*------------------------------------------------------------------------
27947 Fill in Event data and post to the Main FSM
27948 ------------------------------------------------------------------------*/
27949 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
27950 wdiEventData.pEventData = lphbconfParam;
27951 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
27952 wdiEventData.pCBfnc = lphbCfgCb;
27953 wdiEventData.pUserData = usrData;
27954
27955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27956}
27957#endif /* FEATURE_WLAN_LPHB */
27958
Ravi Joshi96d77342013-07-23 08:37:49 -070027959/**
27960 @brief WDI_ProcessIbssPeerInactivityInd
27961 Process peer inactivity indication coming from HAL
27962
27963 @param pWDICtx: pointer to the WLAN DAL context
27964 pEventData: pointer to the event information structure
27965 @see
27966 @return Result of the function call
27967*/
27968WDI_Status
27969WDI_ProcessIbssPeerInactivityInd
27970(
27971 WDI_ControlBlockType* pWDICtx,
27972 WDI_EventInfoType* pEventData
27973)
27974{
27975 WDI_LowLevelIndType wdiInd;
27976 tIbssPeerInactivityIndMsg halIbssIndMsg;
27977
27978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27979
27980 /*-------------------------------------------------------------------------
27981 Sanity check
27982 -------------------------------------------------------------------------*/
27983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27984 ( NULL == pEventData->pEventData ))
27985 {
27986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27987 "%s: Invalid parameters", __func__);
27988 WDI_ASSERT( 0 );
27989 return WDI_STATUS_E_FAILURE;
27990 }
27991
27992 /*-------------------------------------------------------------------------
27993 Extract indication and send it to UMAC
27994 -------------------------------------------------------------------------*/
27995 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
27996 pEventData->pEventData,
27997 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
27998
27999 /*Fill in the indication parameters*/
28000 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28001
28002 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28003 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28004
28005 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28006 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28007
28008 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28009 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28010 sizeof(tSirMacAddr));
28011
28012 /*Notify UMAC*/
28013 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28014
28015 return WDI_STATUS_SUCCESS;
28016
28017} /*WDI_ProcessIbssPeerInactivityInd*/