blob: 54c6d07f3671a43b2dfa06ae495eddae00757107 [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
Yue Ma365933a2013-08-14 15:59:08 -0700401 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
402 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700403};
404
405
Jeff Johnsone7245742012-09-05 17:12:55 -0700406/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700407 DAL Request Processing Array - the functions in this table will only be
408 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700409 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700410 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700411WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700412{
413 /*INIT*/
414 WDI_ProcessStartRsp, /* WDI_START_RESP */
415 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
416 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
417
418 /*SCAN*/
419 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
420 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
421 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
422 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
423
424 /* ASSOCIATION*/
425 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
426 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
427 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
428 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
429 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
430
431 /* Security */
432 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
433 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
434 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
435 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
436
437 /* QoS and BA APIs */
438 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
439 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
440 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
441 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
442 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
443
444 /* Miscellaneous Control APIs */
445 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
446 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
447 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
448 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
449 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
450
451 /* BA APIs*/
452 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
453 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700454
Jeff Johnson295189b2012-06-20 16:38:30 -0700455 /* IBSS APIs*/
456 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
457 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
458
459 /*Soft AP APIs*/
460 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
461 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
462 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
463 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
464
465 /* PowerSave APIs */
466 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
467 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
468 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
469 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
470 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
471 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
472 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
473 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
474 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
475 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
476 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
477 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
478 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
479 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
480 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
481 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
482 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
483 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700484
Jeff Johnson295189b2012-06-20 16:38:30 -0700485
486 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
487
488 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
489 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
490#ifdef WLAN_FEATURE_VOWIFI_11R
491 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
492#else
493 NULL,
494#endif /* WLAN_FEATURE_VOWIFI_11R */
495 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
496 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700497#ifdef FEATURE_OEM_DATA_SUPPORT
498 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
499#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700500 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700501#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
503
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700505
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700507
Jeff Johnsone7245742012-09-05 17:12:55 -0700508 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
509
Jeff Johnson295189b2012-06-20 16:38:30 -0700510#ifdef FEATURE_WLAN_SCAN_PNO
511 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
512 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
513 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
514#else
515 NULL,
516 NULL,
517 NULL,
518#endif // FEATURE_WLAN_SCAN_PNO
519
520 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
521
522 /*---------------------------------------------------------------------
523 Indications
524 ---------------------------------------------------------------------*/
525#ifdef WLAN_FEATURE_PACKET_FILTERING
526 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700529 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700530 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700532 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700533 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700534#else
535 NULL,
536 NULL,
537 NULL,
538 NULL,
539#endif // WLAN_FEATURE_PACKET_FILTERING
540
541 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
542 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
543
544 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
545#ifdef FEATURE_WLAN_CCX
546 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
547#else
548 NULL,
549#endif
550
551#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
553 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700554#else
555 NULL,
556 NULL,
557#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700558 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
559 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700560#ifdef WLAN_FEATURE_11AC
561 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700562#else
563 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700564#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800565#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
566 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
567#else
568 NULL,
569#endif
schangd82195a2013-03-13 18:41:24 -0700570 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700571#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700572 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700573#else
574 NULL,
575#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530576#ifdef FEATURE_WLAN_TDLS
577 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
578#else
579 NULL,
580#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700581#ifdef FEATURE_WLAN_LPHB
582 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
583#else
584 NULL,
585#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700586 /*---------------------------------------------------------------------
587 Indications
588 ---------------------------------------------------------------------*/
589 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
590 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
591 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
592 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
593 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
594 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
595
596 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
597
598 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
599
Jeff Johnson295189b2012-06-20 16:38:30 -0700600 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700601
602#ifdef FEATURE_WLAN_SCAN_PNO
603 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
604#else
605 NULL,
606#endif // FEATURE_WLAN_SCAN_PNO
607
608#ifdef WLAN_WAKEUP_EVENTS
609 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
610#else // WLAN_WAKEUP_EVENTS
611 NULL,
612#endif // WLAN_WAKEUP_EVENTS
613
614 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800615
Viral Modi9dc288a2012-12-10 13:09:21 -0800616 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530617#ifdef FEATURE_WLAN_TDLS
618 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
619#else
620 NULL,
621#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700622
623#ifdef FEATURE_WLAN_LPHB
624 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
625#else
626 NULL,
627#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700628
629 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700630
631 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700632};
633
634
Jeff Johnsone7245742012-09-05 17:12:55 -0700635/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700636 WLAN DAL Global Control Block
637 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700638WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700639static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
640
Jeff Johnsone7245742012-09-05 17:12:55 -0700641const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700642
643/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700644WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700645void* WDI_GET_PAL_CTX( void )
646{
Jeff Johnsone7245742012-09-05 17:12:55 -0700647 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700648}/*WDI_GET_PAL_CTX*/
649
Jeff Johnsone7245742012-09-05 17:12:55 -0700650/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700651 Helper inline converters
652 ============================================================================*/
653/*Convert WDI driver type into HAL driver type*/
654WPT_STATIC WPT_INLINE WDI_Status
655WDI_HAL_2_WDI_STATUS
656(
657 eHalStatus halStatus
658);
659
660/*Convert WDI request type into HAL request type*/
661WPT_STATIC WPT_INLINE tHalHostMsgType
662WDI_2_HAL_REQ_TYPE
663(
664 WDI_RequestEnumType wdiReqType
665);
666
667/*Convert WDI response type into HAL response type*/
668WPT_STATIC WPT_INLINE WDI_ResponseEnumType
669HAL_2_WDI_RSP_TYPE
670(
671 tHalHostMsgType halMsg
672);
673
674/*Convert WDI driver type into HAL driver type*/
675WPT_STATIC WPT_INLINE tDriverType
676WDI_2_HAL_DRV_TYPE
677(
678 WDI_DriverType wdiDriverType
679);
680
681/*Convert WDI stop reason into HAL stop reason*/
682WPT_STATIC WPT_INLINE tHalStopType
683WDI_2_HAL_STOP_REASON
684(
685 WDI_StopType wdiStopType
686);
687
688/*Convert WDI scan mode type into HAL scan mode type*/
689WPT_STATIC WPT_INLINE eHalSysMode
690WDI_2_HAL_SCAN_MODE
691(
692 WDI_ScanMode wdiScanMode
693);
694
695/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700696WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700697WDI_2_HAL_SEC_CH_OFFSET
698(
699 WDI_HTSecondaryChannelOffset wdiSecChOffset
700);
701
702/*Convert WDI BSS type into HAL BSS type*/
703WPT_STATIC WPT_INLINE tSirBssType
704WDI_2_HAL_BSS_TYPE
705(
706 WDI_BssType wdiBSSType
707);
708
709/*Convert WDI NW type into HAL NW type*/
710WPT_STATIC WPT_INLINE tSirNwType
711WDI_2_HAL_NW_TYPE
712(
713 WDI_NwType wdiNWType
714);
715
716/*Convert WDI chanel bonding type into HAL cb type*/
717WPT_STATIC WPT_INLINE ePhyChanBondState
718WDI_2_HAL_CB_STATE
719(
720 WDI_PhyChanBondState wdiCbState
721);
722
723/*Convert WDI chanel bonding type into HAL cb type*/
724WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
725WDI_2_HAL_HT_OPER_MODE
726(
727 WDI_HTOperatingMode wdiHTOperMode
728);
729
730/*Convert WDI mimo PS type into HAL mimo PS type*/
731WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
732WDI_2_HAL_MIMO_PS
733(
734 WDI_HTMIMOPowerSaveState wdiHTOperMode
735);
736
737/*Convert WDI ENC type into HAL ENC type*/
738WPT_STATIC WPT_INLINE tAniEdType
739WDI_2_HAL_ENC_TYPE
740(
741 WDI_EncryptType wdiEncType
742);
743
744/*Convert WDI WEP type into HAL WEP type*/
745WPT_STATIC WPT_INLINE tAniWepType
746WDI_2_HAL_WEP_TYPE
747(
748 WDI_WepType wdiWEPType
749);
750
751/*Convert WDI Link State into HAL Link State*/
752WPT_STATIC WPT_INLINE tSirLinkState
753WDI_2_HAL_LINK_STATE
754(
755 WDI_LinkStateType wdiLinkState
756);
757
Jeff Johnsone7245742012-09-05 17:12:55 -0700758/*Translate a STA Context from WDI into HAL*/
759WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700760void
761WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700762(
Jeff Johnson295189b2012-06-20 16:38:30 -0700763 tConfigStaParams* phalConfigSta,
764 WDI_ConfigStaReqInfoType* pwdiConfigSta
765);
Jeff Johnsone7245742012-09-05 17:12:55 -0700766
767/*Translate a Rate set info from WDI into HAL*/
768WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700769WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700770(
Jeff Johnson295189b2012-06-20 16:38:30 -0700771 tSirMacRateSet* pHalRateSet,
772 WDI_RateSet* pwdiRateSet
773);
774
775/*Translate an EDCA Parameter Record from WDI into HAL*/
776WPT_STATIC WPT_INLINE void
777WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700778(
Jeff Johnson295189b2012-06-20 16:38:30 -0700779 tSirMacEdcaParamRecord* phalEdcaParam,
780 WDI_EdcaParamRecord* pWDIEdcaParam
781);
782
783/*Copy a management frame header from WDI fmt into HAL fmt*/
784WPT_STATIC WPT_INLINE void
785WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
786(
787 tSirMacMgmtHdr* pmacMgmtHdr,
788 WDI_MacMgmtHdr* pwdiMacMgmtHdr
789);
790
791/*Copy config bss parameters from WDI fmt into HAL fmt*/
792WPT_STATIC WPT_INLINE void
793WDI_CopyWDIConfigBSSToHALConfigBSS
794(
795 tConfigBssParams* phalConfigBSS,
796 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
797);
798
Jeff Johnsone7245742012-09-05 17:12:55 -0700799/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700800 pointed to by user data */
801WPT_STATIC WPT_INLINE void
802WDI_ExtractRequestCBFromEvent
803(
804 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700805 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700806 void** ppUserData
807);
808
809wpt_uint8
810WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700811(
Jeff Johnson295189b2012-06-20 16:38:30 -0700812 WDI_ControlBlockType* pWDICtx,
813 WDI_BSSSessionType** ppSession
814);
815
816void
817WDI_AddBcastSTAtoSTATable
818(
819 WDI_ControlBlockType* pWDICtx,
820 WDI_AddStaParams * staParams,
821 wpt_uint16 usBcastStaIdx
822);
823
824WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700825(
Jeff Johnson295189b2012-06-20 16:38:30 -0700826 WDI_ControlBlockType* pWDICtx,
827 WDI_EventInfoType* pEventData
828);
829
830void
831WDI_SetPowerStateCb
832(
833 wpt_status status,
834 unsigned int dxePhyAddr,
835 void *pContext
836);
837
838#define CASE_RETURN_STRING( str ) \
839 case ( ( str ) ): return( #str ); break \
840
841/**
842 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700843
844 @param wdiReqMsgId: WDI Message request Id
845
846 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700847 @return Result of the function call
848*/
849static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
850{
851 switch (wdiReqMsgId)
852 {
853 CASE_RETURN_STRING( WDI_START_REQ );
854 CASE_RETURN_STRING( WDI_STOP_REQ );
855 CASE_RETURN_STRING( WDI_CLOSE_REQ );
856 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
857 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
858 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
859 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
860 CASE_RETURN_STRING( WDI_JOIN_REQ );
861 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
862 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
863 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
864 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
865 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
866 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
867 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
868 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
869 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
870 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
871 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
872 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
873 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
874 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
875 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
876 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
877 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
878 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
879 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
880 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
881 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
882 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
883 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
884 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
885 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
886 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
887 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530888#ifdef FEATURE_WLAN_TDLS
889 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
890#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700891 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
892 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
893 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
894 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
895 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
896 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
897 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
898 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
899 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
900 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
901 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
902 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
903 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
904 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
905 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
906 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
907 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
908 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
909 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
910 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
911 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
912 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
913 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
914 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
915 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700916 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700917 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
918 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
919 #ifdef FEATURE_WLAN_SCAN_PNO
920 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
921 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
922 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
923 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700924#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700925 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700926#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700927 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
928 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
929 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
930 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
931 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
932 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
933 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
934 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
935 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800936 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800937 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700938#ifdef WLAN_FEATURE_11W
939 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
940#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700941 default:
942 return "Unknown WDI MessageId";
943 }
944}
945
946
947
948/**
949 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700950
951 @param wdiRespMsgId: WDI Message response Id
952
953 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700954 @return Result of the function call
955*/
956static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
957{
958 switch (wdiRespMsgId)
959 {
960 CASE_RETURN_STRING( WDI_START_RESP );
961 CASE_RETURN_STRING( WDI_STOP_RESP );
962 CASE_RETURN_STRING( WDI_CLOSE_RESP );
963 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
964 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
965 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
966 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
967 CASE_RETURN_STRING( WDI_JOIN_RESP );
968 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
969 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
970 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
971 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
972 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
973 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
974 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
975 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
976 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
977 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
978 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
979 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
980 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
981 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
982 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
983 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
984 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
985 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
986 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
987 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
988 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
989 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
990 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
991 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
992 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
993 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
994 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530995#ifdef FEATURE_WLAN_TDLS
996 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
997 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
998#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700999 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1000 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1001 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1002 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1003 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1004 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1005 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1006 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1007 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1008 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1009 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1010 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1011 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1012 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1013 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1014 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1015 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1016 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1017 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1018 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1019 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1020 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1021 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1022 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1023 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001024 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1026 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1027 #ifdef FEATURE_WLAN_SCAN_PNO
1028 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1029 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1030 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1031 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001032#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001033 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001034#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001035 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1036 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1037 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1038 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1039 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1040 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1041 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1042 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001043 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001044 default:
1045 return "Unknown WDI MessageId";
1046 }
1047}
1048
1049/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301050 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1051 Capability bitmap array.
1052 @param capabilityBitmap - Base address of Bitmap array
1053 @see
1054 @returns None
1055 */
1056void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1057{
1058 int i;
1059 char capStr[512];
1060 char *pCapStr = capStr;
1061 for (i = 0; i < 32; i++) {
1062 if ((*(capabilityBitmap + 0) & (1 << i))) {
1063 switch(i) {
1064 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1065 pCapStr += strlen("MCC");
1066 break;
1067 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1068 pCapStr += strlen("P2P");
1069 break;
1070 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1071 pCapStr += strlen("DOT11AC");
1072 break;
1073 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1074 pCapStr += strlen("SLM_SESSIONIZATION");
1075 break;
1076 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1077 pCapStr += strlen("DOT11AC_OPMODE");
1078 break;
1079 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1080 pCapStr += strlen("SAP32STA");
1081 break;
1082 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1083 pCapStr += strlen("TDLS");
1084 break;
1085 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1086 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1087 break;
1088 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1089 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1090 break;
1091 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1092 pCapStr += strlen("BEACON_OFFLOAD");
1093 break;
1094 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1095 pCapStr += strlen("SCAN_OFFLOAD");
1096 break;
1097 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1098 pCapStr += strlen("ROAM_OFFLOAD");
1099 break;
1100 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1101 pCapStr += strlen("BCN_MISS_OFFLOAD");
1102 break;
1103 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1104 pCapStr += strlen("STA_POWERSAVE");
1105 break;
1106 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1107 pCapStr += strlen("AP_UAPSD");
1108 break;
1109 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1110 pCapStr += strlen("AP_DFS");
1111 break;
1112 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1113 pCapStr += strlen("BLOCKACK");
1114 break;
1115 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1116 pCapStr += strlen("PHY_ERR");
1117 break;
1118 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1119 pCapStr += strlen("BCN_FILTER");
1120 break;
1121 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1122 pCapStr += strlen("RTT");
1123 break;
1124 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1125 pCapStr += strlen("RATECTRL");
1126 break;
1127 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1128 pCapStr += strlen("WOW");
1129 break;
1130 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1131 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1132 break;
1133 }
1134 *pCapStr++ = ',';
1135 *pCapStr++ = ' ';
1136 }
1137 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301138 pCapStr -= 2;
1139 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301140 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301142}
1143
1144/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001145 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001146
1147 @param halStatusId: HAL status Id
1148
1149 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001150 @return Result of the function call
1151*/
1152static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1153{
1154 switch (halStatusId)
1155 {
1156 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1157 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1158 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1159 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1160 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1161 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1162 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1163 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1164 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1165 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1166 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1167 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1168 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1169 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1170 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1171 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1172 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1173 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1174 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1175 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1176 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1177 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1178 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1179 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1180 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1181 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1182 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1183 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1184 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1185 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1186 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1187 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1188 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1189 default:
1190 return "Unknown HAL status";
1191 }
1192}
1193
Jeff Johnsone7245742012-09-05 17:12:55 -07001194/*========================================================================
1195
Jeff Johnson295189b2012-06-20 16:38:30 -07001196 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001197
Jeff Johnson295189b2012-06-20 16:38:30 -07001198==========================================================================*/
1199
1200/**
1201 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001202
Jeff Johnson295189b2012-06-20 16:38:30 -07001203 DAL will allocate all the resources it needs. It will open PAL, it will also
1204 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001205 DXE/SMD or any other drivers that they need.
1206
Jeff Johnson295189b2012-06-20 16:38:30 -07001207 @param pOSContext: pointer to the OS context provided by the UMAC
1208 will be passed on to PAL on Open
1209 ppWDIGlobalCtx: output pointer of Global Context
1210 pWdiDevCapability: output pointer of device capability
1211
1212 @return Result of the function call
1213*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001214WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001215WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001216(
Jeff Johnson295189b2012-06-20 16:38:30 -07001217 void* pOSContext,
1218 void** ppWDIGlobalCtx,
1219 WDI_DeviceCapabilityType* pWdiDevCapability,
1220 unsigned int driverType
1221)
1222{
1223 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001224 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001225 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001226 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1228
1229 /*---------------------------------------------------------------------
1230 Sanity check
1231 ---------------------------------------------------------------------*/
1232 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1233 {
1234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1235 "Invalid input parameters in WDI_Init");
1236
Jeff Johnsone7245742012-09-05 17:12:55 -07001237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 }
1239
1240 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001241 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 ---------------------------------------------------------------------*/
1243 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1244 {
1245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1246 "WDI module already initialized - return");
1247
Jeff Johnsone7245742012-09-05 17:12:55 -07001248 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001249 }
1250
1251 /*Module is now initialized - this flag is to ensure the fact that multiple
1252 init will not happen on WDI
1253 !! - potential race does exist because read and set are not atomic,
1254 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001255 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001256
1257 /*Setup the control block */
1258 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001259 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001260
1261 /*Setup the STA Table*/
1262 wdiStatus = WDI_STATableInit(&gWDICb);
1263 if ( WDI_STATUS_SUCCESS != wdiStatus )
1264 {
1265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1266 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001267 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 goto fail_STATableInit;
1269 }
1270
1271 /*------------------------------------------------------------------------
1272 Open the PAL
1273 ------------------------------------------------------------------------*/
1274 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1275 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1276 {
1277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1278 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001279 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 goto fail_wpalOpen;
1281 }
1282
1283 /*Initialize main synchro mutex - it will be used to ensure integrity of
1284 the main WDI Control Block*/
1285 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1286 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1287 {
1288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1289 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001290 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001291 goto fail_mutex;
1292 }
1293
1294 /*Initialize the response timer - it will be used to time all messages
1295 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001296 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1297 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001298 &gWDICb);
1299 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1300 {
1301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1302 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001303 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001304 goto fail_timer;
1305 }
1306
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001307 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1308 WDI_SsrTimerCB,
1309 &gWDICb);
1310 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1311 {
1312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1313 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001314 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001315 goto fail_timer2;
1316 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001317 /* Initialize the WDI Pending Request Queue*/
1318 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1319 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1320 {
1321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1322 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001323 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001324 goto fail_pend_queue;
1325 }
1326
1327 /*Init WDI Pending Assoc Id Queue */
1328 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1329 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1330 {
1331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1332 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001333 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001334 goto fail_assoc_queue;
1335 }
1336
1337 /*Initialize the BSS sessions pending Queue */
1338 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1339 {
1340 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1341 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1342 {
1343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1344 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001345 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 goto fail_bss_queue;
1347 }
1348 }
1349
1350 /*Indicate the control block is sufficiently initialized for callbacks*/
1351 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1352
1353 /*------------------------------------------------------------------------
1354 Initialize the Data Path Utility Module
1355 ------------------------------------------------------------------------*/
1356 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1357 if ( WDI_STATUS_SUCCESS != wdiStatus )
1358 {
1359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1360 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001361 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 goto fail_dp_util_init;
1363 }
1364
1365 /* Init Set power state event */
1366 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001367 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 {
1369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1370 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001371 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001372 goto fail_power_event;
1373 }
1374
1375 /* Init WCTS action event */
1376 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001377 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001378 {
1379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1380 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001381 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001382 goto fail_wcts_event;
1383 }
1384
1385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001386 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 ------------------------------------------------------------------------*/
1388 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1389 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001390 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 wctsCBs.wctsRxMsgCBData = &gWDICb;
1392
Jeff Johnsone7245742012-09-05 17:12:55 -07001393 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001394 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001395 WDI_CT_CHANNEL_SIZE,
1396 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001397
1398 if ( NULL == gWDICb.wctsHandle )
1399 {
1400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001401 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 goto fail_wcts_open;
1403 }
1404
1405 gWDICb.driverMode = (tDriverType)driverType;
1406 /* FTM mode not need to open Transport Driver */
1407 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001408 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001409 /*------------------------------------------------------------------------
1410 Open the Data Transport
1411 ------------------------------------------------------------------------*/
1412 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001415 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001416 goto fail_wdts_open;
1417 }
1418 }
1419
1420 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001421 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001422
1423 /*Send the context as a ptr to the global WDI Control Block*/
1424 *ppWDIGlobalCtx = &gWDICb;
1425
1426 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001427 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001428 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1429 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1430 return WDI_STATUS_SUCCESS;
1431
1432 /* ERROR handlers
1433 Undo everything that completed successfully */
1434
1435 fail_wdts_open:
1436 {
1437 wpt_status eventStatus;
1438
1439 /* Closing WCTS in this scenario is tricky since it has to close
1440 the SMD channel and then we get notified asynchronously when
1441 the channel has been closed. So we take some of the logic from
1442 the "normal" close procedure in WDI_Close()
1443 */
1444
1445 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001446 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 {
1448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001449 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 }
1451
1452 WCTS_CloseTransport(gWDICb.wctsHandle);
1453
1454 /* Wait for WCTS to close the control transport. If we were able
1455 to reset the event flag, then we'll wait for the event,
1456 otherwise we'll wait for a maximum amount of time required for
1457 the channel to be closed */
1458 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1459 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001460 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 WDI_WCTS_ACTION_TIMEOUT);
1462 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1463 {
1464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001465 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001466 }
1467 }
1468 else
1469 {
1470 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1471 }
1472 }
1473 fail_wcts_open:
1474 wpalEventDelete(&gWDICb.wctsActionEvent);
1475 fail_wcts_event:
1476 wpalEventDelete(&gWDICb.setPowerStateEvent);
1477 fail_power_event:
1478 WDI_DP_UtilsExit(&gWDICb);
1479 fail_dp_util_init:
1480 gWDICb.magic = 0;
1481 fail_bss_queue:
1482 /* entries 0 thru i-1 were successfully initialized */
1483 while (0 < i)
1484 {
1485 i--;
1486 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1487 }
1488 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1489 fail_assoc_queue:
1490 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1491 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001492 wpalTimerDelete(&gWDICb.ssrTimer);
1493 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001494 wpalTimerDelete(&gWDICb.wptResponseTimer);
1495 fail_timer:
1496 wpalMutexDelete(&gWDICb.wptMutex);
1497 fail_mutex:
1498 wpalClose(gWDICb.pPALContext);
1499 fail_wpalOpen:
1500 WDI_STATableClose(&gWDICb);
1501 fail_STATableInit:
1502 gWDIInitialized = eWLAN_PAL_FALSE;
1503
1504 return WDI_STATUS_E_FAILURE;
1505
1506}/*WDI_Init*/;
1507
1508/**
1509 @brief WDI_Start will be called when the upper MAC is ready to
1510 commence operation with the WLAN Device. Upon the call
1511 of this API the WLAN DAL will pack and send a HAL Start
1512 message to the lower RIVA sub-system if the SMD channel
1513 has been fully opened and the RIVA subsystem is up.
1514
1515 If the RIVA sub-system is not yet up and running DAL
1516 will queue the request for Open and will wait for the
1517 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001518 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001519
1520 WDI_Init must have been called.
1521
Jeff Johnsone7245742012-09-05 17:12:55 -07001522 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001524
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 wdiStartRspCb: callback for passing back the response of
1526 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001527
Jeff Johnson295189b2012-06-20 16:38:30 -07001528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001529 callback
1530
Jeff Johnson295189b2012-06-20 16:38:30 -07001531 @see WDI_Start
1532 @return Result of the function call
1533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001535WDI_Start
1536(
1537 WDI_StartReqParamsType* pwdiStartParams,
1538 WDI_StartRspCb wdiStartRspCb,
1539 void* pUserData
1540)
1541{
1542 WDI_EventInfoType wdiEventData;
1543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1544
1545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001547 ------------------------------------------------------------------------*/
1548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1549 {
1550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1551 "WDI API call before module is initialized - Fail request");
1552
Jeff Johnsone7245742012-09-05 17:12:55 -07001553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001554 }
1555
1556 /*------------------------------------------------------------------------
1557 Fill in Event data and post to the Main FSM
1558 ------------------------------------------------------------------------*/
1559 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001560 wdiEventData.pEventData = pwdiStartParams;
1561 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1562 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 wdiEventData.pUserData = pUserData;
1564
1565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1566
1567}/*WDI_Start*/
1568
1569/**
1570 @brief WDI_Stop will be called when the upper MAC is ready to
1571 stop any operation with the WLAN Device. Upon the call
1572 of this API the WLAN DAL will pack and send a HAL Stop
1573 message to the lower RIVA sub-system if the DAL Core is
1574 in started state.
1575
1576 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001577
1578 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001579
1580 WDI_Start must have been called.
1581
Jeff Johnsone7245742012-09-05 17:12:55 -07001582 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001584
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 wdiStopRspCb: callback for passing back the response of
1586 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001587
Jeff Johnson295189b2012-06-20 16:38:30 -07001588 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001589 callback
1590
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 @see WDI_Start
1592 @return Result of the function call
1593*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001594WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001595WDI_Stop
1596(
1597 WDI_StopReqParamsType* pwdiStopParams,
1598 WDI_StopRspCb wdiStopRspCb,
1599 void* pUserData
1600)
1601{
1602 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001603 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1605
1606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001608 ------------------------------------------------------------------------*/
1609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1610 {
1611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1612 "WDI API call before module is initialized - Fail request");
1613
Jeff Johnsone7245742012-09-05 17:12:55 -07001614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001615 }
1616
Jeff Johnson43971f52012-07-17 12:26:56 -07001617 /*Access to the global state must be locked before cleaning */
1618 wpalMutexAcquire(&pWDICtx->wptMutex);
1619
1620 /*Clear all pending request*/
1621 WDI_ClearPendingRequests(pWDICtx);
1622
1623 /*We have completed cleaning unlock now*/
1624 wpalMutexRelease(&pWDICtx->wptMutex);
1625
Jeff Johnson295189b2012-06-20 16:38:30 -07001626 /* Free the global variables */
1627 wpalMemoryFree(gpHostWlanFeatCaps);
1628 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001629 gpHostWlanFeatCaps = NULL;
1630 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001631
1632 /*------------------------------------------------------------------------
1633 Fill in Event data and post to the Main FSM
1634 ------------------------------------------------------------------------*/
1635 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001636 wdiEventData.pEventData = pwdiStopParams;
1637 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1638 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001639 wdiEventData.pUserData = pUserData;
1640
1641 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1642
1643}/*WDI_Stop*/
1644
1645
1646
1647/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001648 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 needs to interact with DAL. DAL will free its control
1650 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001651
1652 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001653
1654 WDI_Stop must have been called.
1655
1656 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001657
Jeff Johnson295189b2012-06-20 16:38:30 -07001658 @see WDI_Stop
1659 @return Result of the function call
1660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001662WDI_Close
1663(
1664 void
1665)
1666{
1667 wpt_uint8 i;
1668 WDI_EventInfoType wdiEventData;
1669 wpt_status wptStatus;
1670 wpt_status eventStatus;
1671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1672
1673 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001674 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001675 ------------------------------------------------------------------------*/
1676 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1677 {
1678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1679 "WDI API call before module is initialized - Fail request");
1680
Jeff Johnsone7245742012-09-05 17:12:55 -07001681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 }
1683
1684 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1685 (the control transport will be closed by the FSM and we'll want
1686 to wait until that completes)*/
1687 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001688 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 {
1690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001691 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 /* fall through and try to finish closing via the FSM */
1693 }
1694
1695 /*------------------------------------------------------------------------
1696 Fill in Event data and post to the Main FSM
1697 ------------------------------------------------------------------------*/
1698 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001699 wdiEventData.pEventData = NULL;
1700 wdiEventData.uEventDataSize = 0;
1701 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001702 wdiEventData.pUserData = NULL;
1703
1704 gWDIInitialized = eWLAN_PAL_FALSE;
1705
1706 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1707
1708 /*Wait for WCTS to close the control transport
1709 (but only if we were able to reset the event flag*/
1710 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1711 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001712 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 WDI_WCTS_ACTION_TIMEOUT);
1714 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1715 {
1716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001717 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001718 }
1719 }
1720
1721 /* Destroy the WCTS action event */
1722 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1723 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1724 {
1725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1726 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 }
1729
1730 /* Destroy the Set Power State event */
1731 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1732 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1733 {
1734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1735 "WDI Close failed to destroy an event");
1736
Jeff Johnsone7245742012-09-05 17:12:55 -07001737 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001738 }
1739
1740 /*------------------------------------------------------------------------
1741 Closes the Data Path Utility Module
1742 ------------------------------------------------------------------------*/
1743 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1744 {
1745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1746 "WDI Init failed to close the DP Util Module");
1747
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 }
1750
1751 /*destroy the BSS sessions pending Queue */
1752 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1753 {
1754 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1755 }
1756
1757 /* destroy the WDI Pending Assoc Id Request Queue*/
1758 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1759
1760 /* destroy the WDI Pending Request Queue*/
1761 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001762
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 /*destroy the response timer */
1764 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1765
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001766 /*destroy the SSR timer */
1767 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1768
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 /*invalidate the main synchro mutex */
1770 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1771 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1772 {
1773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1774 "Failed to delete mutex %d", wptStatus);
1775 WDI_ASSERT(0);
1776 }
1777
1778 /*Clear control block. note that this will clear the "magic"
1779 which will inhibit all asynchronous callbacks*/
1780 WDI_CleanCB(&gWDICb);
1781
1782 return wptStatus;
1783
1784}/*WDI_Close*/
1785
1786/**
1787 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1788 This will do most of the WDI stop & close
1789 operations without doing any handshake with Riva
1790
1791 This will also make sure that the control transport
1792 will NOT be closed.
1793
1794 This request will not be queued.
1795
1796
1797 WDI_Start must have been called.
1798
1799 @param closeTransport: Close control channel if this is set
1800
1801 @return Result of the function call
1802*/
1803WDI_Status
1804WDI_Shutdown
1805(
1806 wpt_boolean closeTransport
1807)
1808{
1809 WDI_EventInfoType wdiEventData;
1810 wpt_status wptStatus;
1811 int i = 0;
1812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1813
1814 /*------------------------------------------------------------------------
1815 Sanity Check
1816 ------------------------------------------------------------------------*/
1817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1818 {
1819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1820 "WDI API call before module is initialized - Fail request");
1821
1822 return WDI_STATUS_E_NOT_ALLOWED;
1823 }
1824
1825 /*------------------------------------------------------------------------
1826 Fill in Event data and post to the Main FSM
1827 ------------------------------------------------------------------------*/
1828 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1829 wdiEventData.pEventData = NULL;
1830 wdiEventData.uEventDataSize = 0;
1831
1832 /* Shutdown will not be queued, if the state is busy timer will be
1833 * stopped & this message will be processed.*/
1834 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1835 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1836 {
1837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001838 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001839 }
1840 /* Destroy the Set Power State event */
1841 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1842 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1843 {
1844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1845 "WDI Close failed to destroy an event");
1846
1847 WDI_ASSERT(0);
1848 }
1849 /*------------------------------------------------------------------------
1850 Closes the Data Path Utility Module
1851 ------------------------------------------------------------------------*/
1852 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1853 {
1854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1855 "WDI Init failed to close the DP Util Module");
1856
1857 WDI_ASSERT(0);
1858 }
1859 if ( closeTransport )
1860 {
1861 /* Close control transport, called from module unload */
1862 WCTS_CloseTransport(gWDICb.wctsHandle);
1863 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001864 else
1865 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001866 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001867 the pending messages in the transport queue */
1868 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1869 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 /*destroy the BSS sessions pending Queue */
1871 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1872 {
1873 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1874 }
1875
1876 /* destroy the WDI Pending Assoc Id Request Queue*/
1877 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1878 /* destroy the WDI Pending Request Queue*/
1879 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1880 /*destroy the response timer */
1881 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001882 /*destroy the SSR timer */
1883 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001884
1885 /*invalidate the main synchro mutex */
1886 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1887 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1888 {
1889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001890 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 WDI_ASSERT(0);
1892 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001893 /* Free the global variables */
1894 wpalMemoryFree(gpHostWlanFeatCaps);
1895 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001896 gpHostWlanFeatCaps = NULL;
1897 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 /*Clear control block. note that this will clear the "magic"
1899 which will inhibit all asynchronous callbacks*/
1900 WDI_CleanCB(&gWDICb);
1901 return wptStatus;
1902
1903}/*WDI_Shutdown*/
1904
1905
Jeff Johnsone7245742012-09-05 17:12:55 -07001906/*========================================================================
1907
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001909
Jeff Johnson295189b2012-06-20 16:38:30 -07001910==========================================================================*/
1911
1912/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 the WLAN Device to get ready for a scan procedure. Upon
1915 the call of this API the WLAN DAL will pack and send a
1916 HAL Init Scan request message to the lower RIVA
1917 sub-system if DAL is in state STARTED.
1918
1919 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001920 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001921
1922 WDI_Start must have been called.
1923
1924 @param wdiInitScanParams: the init scan parameters as specified
1925 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001926
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 wdiInitScanRspCb: callback for passing back the response
1928 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001929
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001931 callback
1932
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 @see WDI_Start
1934 @return Result of the function call
1935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001937WDI_InitScanReq
1938(
1939 WDI_InitScanReqParamsType* pwdiInitScanParams,
1940 WDI_InitScanRspCb wdiInitScanRspCb,
1941 void* pUserData
1942)
1943{
1944 WDI_EventInfoType wdiEventData;
1945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1946
1947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 ------------------------------------------------------------------------*/
1950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1951 {
1952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1953 "WDI API call before module is initialized - Fail request");
1954
Jeff Johnsone7245742012-09-05 17:12:55 -07001955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001956 }
1957
1958 /*------------------------------------------------------------------------
1959 Fill in Event data and post to the Main FSM
1960 ------------------------------------------------------------------------*/
1961 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001962 wdiEventData.pEventData = pwdiInitScanParams;
1963 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1964 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 wdiEventData.pUserData = pUserData;
1966
1967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1968
1969}/*WDI_InitScanReq*/
1970
1971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 wishes to change the Scan channel on the WLAN Device.
1974 Upon the call of this API the WLAN DAL will pack and
1975 send a HAL Start Scan request message to the lower RIVA
1976 sub-system if DAL is in state STARTED.
1977
1978 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001979 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001980
1981 WDI_InitScanReq must have been called.
1982
Jeff Johnsone7245742012-09-05 17:12:55 -07001983 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 wdiStartScanRspCb: callback for passing back the
1987 response of the start scan operation received from the
1988 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001989
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001991 callback
1992
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 @see WDI_InitScanReq
1994 @return Result of the function call
1995*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001996WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001997WDI_StartScanReq
1998(
1999 WDI_StartScanReqParamsType* pwdiStartScanParams,
2000 WDI_StartScanRspCb wdiStartScanRspCb,
2001 void* pUserData
2002)
2003{
2004 WDI_EventInfoType wdiEventData;
2005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2006
2007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002008 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 ------------------------------------------------------------------------*/
2010 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2011 {
2012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2013 "WDI API call before module is initialized - Fail request");
2014
Jeff Johnsone7245742012-09-05 17:12:55 -07002015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002016 }
2017
2018 /*------------------------------------------------------------------------
2019 Fill in Event data and post to the Main FSM
2020 ------------------------------------------------------------------------*/
2021 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002022 wdiEventData.pEventData = pwdiStartScanParams;
2023 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2024 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 wdiEventData.pUserData = pUserData;
2026
2027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2028
2029}/*WDI_StartScanReq*/
2030
2031
2032/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002033 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wants to end scanning for a particular channel that it
2035 had set before by calling Scan Start on the WLAN Device.
2036 Upon the call of this API the WLAN DAL will pack and
2037 send a HAL End Scan request message to the lower RIVA
2038 sub-system if DAL is in state STARTED.
2039
2040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002042
2043 WDI_StartScanReq must have been called.
2044
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 wdiEndScanRspCb: callback for passing back the response
2049 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002050
Jeff Johnson295189b2012-06-20 16:38:30 -07002051 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 callback
2053
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 @see WDI_StartScanReq
2055 @return Result of the function call
2056*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002057WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002058WDI_EndScanReq
2059(
2060 WDI_EndScanReqParamsType* pwdiEndScanParams,
2061 WDI_EndScanRspCb wdiEndScanRspCb,
2062 void* pUserData
2063)
2064{
2065 WDI_EventInfoType wdiEventData;
2066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2067
2068 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 ------------------------------------------------------------------------*/
2071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2072 {
2073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2074 "WDI API call before module is initialized - Fail request");
2075
Jeff Johnsone7245742012-09-05 17:12:55 -07002076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002077 }
2078
2079 /*------------------------------------------------------------------------
2080 Fill in Event data and post to the Main FSM
2081 ------------------------------------------------------------------------*/
2082 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002083 wdiEventData.pEventData = pwdiEndScanParams;
2084 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2085 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 wdiEventData.pUserData = pUserData;
2087
2088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2089
2090}/*WDI_EndScanReq*/
2091
2092
2093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 completed the scan process on the WLAN Device. Upon the
2096 call of this API the WLAN DAL will pack and send a HAL
2097 Finish Scan Request request message to the lower RIVA
2098 sub-system if DAL is in state STARTED.
2099
2100 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002102
2103 WDI_InitScanReq must have been called.
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002107
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 wdiFinishScanRspCb: callback for passing back the
2109 response of the finish scan operation received from the
2110 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002111
Jeff Johnson295189b2012-06-20 16:38:30 -07002112 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 callback
2114
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 @see WDI_InitScanReq
2116 @return Result of the function call
2117*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002118WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002119WDI_FinishScanReq
2120(
2121 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2122 WDI_FinishScanRspCb wdiFinishScanRspCb,
2123 void* pUserData
2124)
2125{
2126 WDI_EventInfoType wdiEventData;
2127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2128
2129 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002130 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002131 ------------------------------------------------------------------------*/
2132 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2133 {
2134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2135 "WDI API call before module is initialized - Fail request");
2136
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002138 }
2139
2140 /*------------------------------------------------------------------------
2141 Fill in Event data and post to the Main FSM
2142 ------------------------------------------------------------------------*/
2143 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 wdiEventData.pEventData = pwdiFinishScanParams;
2145 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2146 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 wdiEventData.pUserData = pUserData;
2148
2149 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2150
2151}/*WDI_FinishScanReq*/
2152
Jeff Johnsone7245742012-09-05 17:12:55 -07002153/*========================================================================
2154
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002156
Jeff Johnson295189b2012-06-20 16:38:30 -07002157==========================================================================*/
2158
2159/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 to start an association procedure to a BSS. Upon the
2162 call of this API the WLAN DAL will pack and send a HAL
2163 Join request message to the lower RIVA sub-system if
2164 DAL is in state STARTED.
2165
2166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002168
2169 WDI_Start must have been called.
2170
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002172 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002173
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 wdiJoinRspCb: callback for passing back the response of
2175 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002176
Jeff Johnson295189b2012-06-20 16:38:30 -07002177 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 callback
2179
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 @see WDI_Start
2181 @return Result of the function call
2182*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002183WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002184WDI_JoinReq
2185(
2186 WDI_JoinReqParamsType* pwdiJoinParams,
2187 WDI_JoinRspCb wdiJoinRspCb,
2188 void* pUserData
2189)
2190{
2191 WDI_EventInfoType wdiEventData;
2192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2193
2194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002195 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 ------------------------------------------------------------------------*/
2197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2198 {
2199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2200 "WDI API call before module is initialized - Fail request");
2201
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 }
2204
2205 /*------------------------------------------------------------------------
2206 Fill in Event data and post to the Main FSM
2207 ------------------------------------------------------------------------*/
2208 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002209 wdiEventData.pEventData = pwdiJoinParams;
2210 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2211 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 wdiEventData.pUserData = pUserData;
2213
2214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2215
2216}/*WDI_JoinReq*/
2217
2218/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002219 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 wishes to configure the newly acquired or in process of
2221 being acquired BSS to the HW . Upon the call of this API
2222 the WLAN DAL will pack and send a HAL Config BSS request
2223 message to the lower RIVA sub-system if DAL is in state
2224 STARTED.
2225
2226 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002228
2229 WDI_JoinReq must have been called.
2230
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 wdiConfigBSSRspCb: callback for passing back the
2235 response of the config BSS operation received from the
2236 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002237
Jeff Johnson295189b2012-06-20 16:38:30 -07002238 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 callback
2240
Jeff Johnson295189b2012-06-20 16:38:30 -07002241 @see WDI_JoinReq
2242 @return Result of the function call
2243*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002244WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002245WDI_ConfigBSSReq
2246(
2247 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2248 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2249 void* pUserData
2250)
2251{
2252 WDI_EventInfoType wdiEventData;
2253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2254
2255 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 ------------------------------------------------------------------------*/
2258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2259 {
2260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2261 "WDI API call before module is initialized - Fail request");
2262
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 }
2265
2266 /*------------------------------------------------------------------------
2267 Fill in Event data and post to the Main FSM
2268 ------------------------------------------------------------------------*/
2269 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002270 wdiEventData.pEventData = pwdiConfigBSSParams;
2271 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2272 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 wdiEventData.pUserData = pUserData;
2274
2275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2276
2277}/*WDI_ConfigBSSReq*/
2278
2279/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 disassociating from the BSS and wishes to notify HW.
2282 Upon the call of this API the WLAN DAL will pack and
2283 send a HAL Del BSS request message to the lower RIVA
2284 sub-system if DAL is in state STARTED.
2285
2286 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002287 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002288
2289 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2290
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002292 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002293
Jeff Johnson295189b2012-06-20 16:38:30 -07002294 wdiDelBSSRspCb: callback for passing back the response
2295 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002296
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 callback
2299
2300 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 @return Result of the function call
2302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002304WDI_DelBSSReq
2305(
2306 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2307 WDI_DelBSSRspCb wdiDelBSSRspCb,
2308 void* pUserData
2309)
2310{
2311 WDI_EventInfoType wdiEventData;
2312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2313
2314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 ------------------------------------------------------------------------*/
2317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2318 {
2319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2320 "WDI API call before module is initialized - Fail request");
2321
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 }
2324
2325 /*------------------------------------------------------------------------
2326 Fill in Event data and post to the Main FSM
2327 ------------------------------------------------------------------------*/
2328 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 wdiEventData.pEventData = pwdiDelBSSParams;
2330 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2331 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 wdiEventData.pUserData = pUserData;
2333
2334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2335
2336}/*WDI_DelBSSReq*/
2337
2338/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002339 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 associated to a BSS and wishes to configure HW for
2341 associated state. Upon the call of this API the WLAN DAL
2342 will pack and send a HAL Post Assoc request message to
2343 the lower RIVA sub-system if DAL is in state STARTED.
2344
2345 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002346 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002347
2348 WDI_JoinReq must have been called.
2349
2350 @param wdiPostAssocReqParams: the assoc parameters as specified
2351 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 wdiPostAssocRspCb: callback for passing back the
2354 response of the post assoc operation received from the
2355 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002356
Jeff Johnson295189b2012-06-20 16:38:30 -07002357 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 callback
2359
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 @see WDI_JoinReq
2361 @return Result of the function call
2362*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002363WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002364WDI_PostAssocReq
2365(
2366 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2367 WDI_PostAssocRspCb wdiPostAssocRspCb,
2368 void* pUserData
2369)
2370{
2371 WDI_EventInfoType wdiEventData;
2372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2373
2374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 ------------------------------------------------------------------------*/
2377 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2378 {
2379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2380 "WDI API call before module is initialized - Fail request");
2381
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 }
2384
2385 /*------------------------------------------------------------------------
2386 Fill in Event data and post to the Main FSM
2387 ------------------------------------------------------------------------*/
2388 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002389 wdiEventData.pEventData = pwdiPostAssocReqParams;
2390 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2391 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 wdiEventData.pUserData = pUserData;
2393
2394 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2395
2396}/*WDI_PostAssocReq*/
2397
2398/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002399 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 association with another STA has ended and the station
2401 must be deleted from HW. Upon the call of this API the
2402 WLAN DAL will pack and send a HAL Del STA request
2403 message to the lower RIVA sub-system if DAL is in state
2404 STARTED.
2405
2406 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002408
2409 WDI_PostAssocReq must have been called.
2410
Jeff Johnsone7245742012-09-05 17:12:55 -07002411 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 wdiDelSTARspCb: callback for passing back the response
2415 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002416
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 callback
2419
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 @see WDI_PostAssocReq
2421 @return Result of the function call
2422*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002423WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002424WDI_DelSTAReq
2425(
2426 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2427 WDI_DelSTARspCb wdiDelSTARspCb,
2428 void* pUserData
2429)
2430{
2431 WDI_EventInfoType wdiEventData;
2432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2433
2434 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002435 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002436 ------------------------------------------------------------------------*/
2437 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2438 {
2439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2440 "WDI API call before module is initialized - Fail request");
2441
Jeff Johnsone7245742012-09-05 17:12:55 -07002442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002443 }
2444
2445 /*------------------------------------------------------------------------
2446 Fill in Event data and post to the Main FSM
2447 ------------------------------------------------------------------------*/
2448 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002449 wdiEventData.pEventData = pwdiDelSTAParams;
2450 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2451 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 wdiEventData.pUserData = pUserData;
2453
2454 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2455
2456}/*WDI_DelSTAReq*/
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458/*========================================================================
2459
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002461
Jeff Johnson295189b2012-06-20 16:38:30 -07002462==========================================================================*/
2463
2464/**
2465 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2466 install a BSS encryption key on the HW. Upon the call of this
2467 API the WLAN DAL will pack and send a Set BSS Key request
2468 message to the lower RIVA sub-system if DAL is in state
2469 STARTED.
2470
2471 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002473
2474 WDI_PostAssocReq must have been called.
2475
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002478
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 wdiSetBSSKeyRspCb: callback for passing back the
2480 response of the set BSS Key operation received from the
2481 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002482
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 callback
2485
Jeff Johnson295189b2012-06-20 16:38:30 -07002486 @see WDI_PostAssocReq
2487 @return Result of the function call
2488*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002490WDI_SetBSSKeyReq
2491(
2492 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2493 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2494 void* pUserData
2495)
2496{
2497 WDI_EventInfoType wdiEventData;
2498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2499
2500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002502 ------------------------------------------------------------------------*/
2503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2504 {
2505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2506 "WDI API call before module is initialized - Fail request");
2507
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 }
2510
2511 /*------------------------------------------------------------------------
2512 Fill in Event data and post to the Main FSM
2513 ------------------------------------------------------------------------*/
2514 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002515 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2516 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2517 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 wdiEventData.pUserData = pUserData;
2519
2520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2521
2522}/*WDI_SetBSSKeyReq*/
2523
2524/**
2525 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2526 uninstall a BSS key from HW. Upon the call of this API the
2527 WLAN DAL will pack and send a HAL Remove BSS Key request
2528 message to the lower RIVA sub-system if DAL is in state
2529 STARTED.
2530
2531 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002533
2534 WDI_SetBSSKeyReq must have been called.
2535
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002538
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 wdiRemoveBSSKeyRspCb: callback for passing back the
2540 response of the remove BSS key operation received from
2541 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002542
Jeff Johnson295189b2012-06-20 16:38:30 -07002543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002544 callback
2545
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 @see WDI_SetBSSKeyReq
2547 @return Result of the function call
2548*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002550WDI_RemoveBSSKeyReq
2551(
2552 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2553 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2554 void* pUserData
2555)
2556{
2557 WDI_EventInfoType wdiEventData;
2558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2559
2560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 ------------------------------------------------------------------------*/
2563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2564 {
2565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2566 "WDI API call before module is initialized - Fail request");
2567
Jeff Johnsone7245742012-09-05 17:12:55 -07002568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002569 }
2570
2571 /*------------------------------------------------------------------------
2572 Fill in Event data and post to the Main FSM
2573 ------------------------------------------------------------------------*/
2574 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002575 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2576 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2577 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 wdiEventData.pUserData = pUserData;
2579
2580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2581
2582}/*WDI_RemoveBSSKeyReq*/
2583
2584
2585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002586 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 ready to install a STA(ast) encryption key in HW. Upon
2588 the call of this API the WLAN DAL will pack and send a
2589 HAL Set STA Key request message to the lower RIVA
2590 sub-system if DAL is in state STARTED.
2591
2592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002594
2595 WDI_PostAssocReq must have been called.
2596
Jeff Johnsone7245742012-09-05 17:12:55 -07002597 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002599
Jeff Johnson295189b2012-06-20 16:38:30 -07002600 wdiSetSTAKeyRspCb: callback for passing back the
2601 response of the set STA key operation received from the
2602 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002603
Jeff Johnson295189b2012-06-20 16:38:30 -07002604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 callback
2606
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 @see WDI_PostAssocReq
2608 @return Result of the function call
2609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002611WDI_SetSTAKeyReq
2612(
2613 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2614 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2615 void* pUserData
2616)
2617{
2618 WDI_EventInfoType wdiEventData;
2619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2620
2621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 ------------------------------------------------------------------------*/
2624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2625 {
2626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2627 "WDI API call before module is initialized - Fail request");
2628
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 }
2631
2632 /*------------------------------------------------------------------------
2633 Fill in Event data and post to the Main FSM
2634 ------------------------------------------------------------------------*/
2635 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2637 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2638 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 wdiEventData.pUserData = pUserData;
2640
2641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2642
2643}/*WDI_SetSTAKeyReq*/
2644
2645
2646/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 wants to uninstall a previously set STA key in HW. Upon
2649 the call of this API the WLAN DAL will pack and send a
2650 HAL Remove STA Key request message to the lower RIVA
2651 sub-system if DAL is in state STARTED.
2652
2653 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002654 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002655
2656 WDI_SetSTAKeyReq must have been called.
2657
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002660
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 wdiRemoveSTAKeyRspCb: callback for passing back the
2662 response of the remove STA key operation received from
2663 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002664
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002666 callback
2667
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 @see WDI_SetSTAKeyReq
2669 @return Result of the function call
2670*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002671WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002672WDI_RemoveSTAKeyReq
2673(
2674 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2675 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2676 void* pUserData
2677)
2678{
2679 WDI_EventInfoType wdiEventData;
2680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2681
2682 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 ------------------------------------------------------------------------*/
2685 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2686 {
2687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2688 "WDI API call before module is initialized - Fail request");
2689
Jeff Johnsone7245742012-09-05 17:12:55 -07002690 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002691 }
2692
2693 /*------------------------------------------------------------------------
2694 Fill in Event data and post to the Main FSM
2695 ------------------------------------------------------------------------*/
2696 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002697 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2698 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2699 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 wdiEventData.pUserData = pUserData;
2701
2702 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2703
2704}/*WDI_RemoveSTAKeyReq*/
2705
2706
2707/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 wants to install a STA Bcast encryption key on the HW.
2710 Upon the call of this API the WLAN DAL will pack and
2711 send a HAL Start request message to the lower RIVA
2712 sub-system if DAL is in state STARTED.
2713
2714 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002716
2717 WDI_PostAssocReq must have been called.
2718
Jeff Johnsone7245742012-09-05 17:12:55 -07002719 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002721
Jeff Johnson295189b2012-06-20 16:38:30 -07002722 wdiSetSTABcastKeyRspCb: callback for passing back the
2723 response of the set BSS Key operation received from the
2724 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002725
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 callback
2728
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 @see WDI_PostAssocReq
2730 @return Result of the function call
2731*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002732WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002733WDI_SetSTABcastKeyReq
2734(
2735 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2736 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2737 void* pUserData
2738)
2739
2740{
2741 WDI_EventInfoType wdiEventData;
2742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2743
2744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 ------------------------------------------------------------------------*/
2747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2748 {
2749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2750 "WDI API call before module is initialized - Fail request");
2751
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 }
2754
2755 /*------------------------------------------------------------------------
2756 Fill in Event data and post to the Main FSM
2757 ------------------------------------------------------------------------*/
2758 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002759 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2760 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2761 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 wdiEventData.pUserData = pUserData;
2763
2764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2765
2766}/*WDI_SetSTABcastKeyReq*/
2767
2768/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 MAC wants to uninstall a STA Bcast key from HW. Upon the
2771 call of this API the WLAN DAL will pack and send a HAL
2772 Remove STA Bcast Key request message to the lower RIVA
2773 sub-system if DAL is in state STARTED.
2774
2775 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002776 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002777
2778 WDI_SetSTABcastKeyReq must have been called.
2779
Jeff Johnsone7245742012-09-05 17:12:55 -07002780 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002781 parameters as specified by the Device
2782 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002783
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2785 response of the remove STA Bcast key operation received
2786 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002787
Jeff Johnson295189b2012-06-20 16:38:30 -07002788 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002789 callback
2790
Jeff Johnson295189b2012-06-20 16:38:30 -07002791 @see WDI_SetSTABcastKeyReq
2792 @return Result of the function call
2793*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002795WDI_RemoveSTABcastKeyReq
2796(
2797 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2798 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2799 void* pUserData
2800)
2801{
2802 WDI_EventInfoType wdiEventData;
2803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2804
2805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002807 ------------------------------------------------------------------------*/
2808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2809 {
2810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2811 "WDI API call before module is initialized - Fail request");
2812
Jeff Johnsone7245742012-09-05 17:12:55 -07002813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002814 }
2815
2816 /*------------------------------------------------------------------------
2817 Fill in Event data and post to the Main FSM
2818 ------------------------------------------------------------------------*/
2819 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002820 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2821 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2822 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002823 wdiEventData.pUserData = pUserData;
2824
2825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2826
2827}/*WDI_RemoveSTABcastKeyReq*/
2828
2829/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002830 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002831 MAC wants to set Max Tx Power to HW. Upon the
2832 call of this API the WLAN DAL will pack and send a HAL
2833 Remove STA Bcast Key request message to the lower RIVA
2834 sub-system if DAL is in state STARTED.
2835
2836 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002837 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002838
2839 WDI_SetSTABcastKeyReq must have been called.
2840
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002842 parameters as specified by the Device
2843 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002844
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2846 response of the remove STA Bcast key operation received
2847 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002848
Jeff Johnson295189b2012-06-20 16:38:30 -07002849 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002850 callback
2851
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 @see WDI_SetMaxTxPowerReq
2853 @return Result of the function call
2854*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002855WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002856WDI_SetMaxTxPowerReq
2857(
2858 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2859 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2860 void* pUserData
2861)
2862{
2863 WDI_EventInfoType wdiEventData;
2864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2865
2866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 ------------------------------------------------------------------------*/
2869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2870 {
2871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2872 "WDI API call before module is initialized - Fail request");
2873
Jeff Johnsone7245742012-09-05 17:12:55 -07002874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 }
2876
2877 /*------------------------------------------------------------------------
2878 Fill in Event data and post to the Main FSM
2879 ------------------------------------------------------------------------*/
2880 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002881 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2882 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2883 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002884 wdiEventData.pUserData = pUserData;
2885
2886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2887}
2888
schangd82195a2013-03-13 18:41:24 -07002889/**
2890 @brief WDI_SetTxPowerReq will be called when the upper
2891 MAC wants to set Tx Power to HW.
2892 In state BUSY this request will be queued. Request won't
2893 be allowed in any other state.
2894
2895
2896 @param pwdiSetTxPowerParams: set TS Power parameters
2897 BSSID and target TX Power with dbm included
2898
2899 wdiReqStatusCb: callback for passing back the response
2900
2901 pUserData: user data will be passed back with the
2902 callback
2903
2904 @return Result of the function call
2905*/
2906WDI_Status
2907WDI_SetTxPowerReq
2908(
2909 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2910 WDA_SetTxPowerRspCb wdiReqStatusCb,
2911 void* pUserData
2912)
2913{
2914 WDI_EventInfoType wdiEventData;
2915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2916
2917 /*------------------------------------------------------------------------
2918 Sanity Check
2919 ------------------------------------------------------------------------*/
2920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2921 {
2922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2923 "WDI API call before module is initialized - Fail request");
2924
2925 return WDI_STATUS_E_NOT_ALLOWED;
2926 }
2927
2928 /*------------------------------------------------------------------------
2929 Fill in Event data and post to the Main FSM
2930 ------------------------------------------------------------------------*/
2931 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2932 wdiEventData.pEventData = pwdiSetTxPowerParams;
2933 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2934 wdiEventData.pCBfnc = wdiReqStatusCb;
2935 wdiEventData.pUserData = pUserData;
2936
2937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2938}
2939
Jeff Johnson295189b2012-06-20 16:38:30 -07002940#ifdef FEATURE_WLAN_CCX
2941WDI_Status
2942WDI_TSMStatsReq
2943(
2944 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2945 WDI_TsmRspCb wdiReqStatusCb,
2946 void* pUserData
2947)
2948{
2949 WDI_EventInfoType wdiEventData;
2950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 /*------------------------------------------------------------------------
2952 Sanity Check
2953 ------------------------------------------------------------------------*/
2954 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2955 {
2956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2957 "WDI API call before module is initialized - Fail request");
2958
2959 return WDI_STATUS_E_NOT_ALLOWED;
2960 }
2961
2962 /*------------------------------------------------------------------------
2963 Fill in Event data and post to the Main FSM
2964 ------------------------------------------------------------------------*/
2965 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2966 wdiEventData.pEventData = pwdiTsmReqParams;
2967 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2968 wdiEventData.pCBfnc = wdiReqStatusCb;
2969 wdiEventData.pUserData = pUserData;
2970
2971 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2972
2973}
2974#endif
2975
2976/*========================================================================
2977
2978 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002979
Jeff Johnson295189b2012-06-20 16:38:30 -07002980==========================================================================*/
2981
2982/**
2983 @brief WDI_AddTSReq will be called when the upper MAC to inform
2984 the device of a successful add TSpec negotiation. HW
2985 needs to receive the TSpec Info from the UMAC in order
2986 to configure properly the QoS data traffic. Upon the
2987 call of this API the WLAN DAL will pack and send a HAL
2988 Add TS request message to the lower RIVA sub-system if
2989 DAL is in state STARTED.
2990
2991 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002992 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002993
2994 WDI_PostAssocReq must have been called.
2995
2996 @param wdiAddTsReqParams: the add TS parameters as specified by
2997 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002998
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 wdiAddTsRspCb: callback for passing back the response of
3000 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003001
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 callback
3004
Jeff Johnson295189b2012-06-20 16:38:30 -07003005 @see WDI_PostAssocReq
3006 @return Result of the function call
3007*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003008WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003009WDI_AddTSReq
3010(
3011 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3012 WDI_AddTsRspCb wdiAddTsRspCb,
3013 void* pUserData
3014)
3015{
3016 WDI_EventInfoType wdiEventData;
3017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3018
3019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003020 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 ------------------------------------------------------------------------*/
3022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3023 {
3024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3025 "WDI API call before module is initialized - Fail request");
3026
Jeff Johnsone7245742012-09-05 17:12:55 -07003027 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003028 }
3029
3030 /*------------------------------------------------------------------------
3031 Fill in Event data and post to the Main FSM
3032 ------------------------------------------------------------------------*/
3033 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 wdiEventData.pEventData = pwdiAddTsReqParams;
3035 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3036 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 wdiEventData.pUserData = pUserData;
3038
3039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3040
3041}/*WDI_AddTSReq*/
3042
3043
3044
3045/**
3046 @brief WDI_DelTSReq will be called when the upper MAC has ended
3047 admission on a specific AC. This is to inform HW that
3048 QoS traffic parameters must be rest. Upon the call of
3049 this API the WLAN DAL will pack and send a HAL Del TS
3050 request message to the lower RIVA sub-system if DAL is
3051 in state STARTED.
3052
3053 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003055
3056 WDI_AddTSReq must have been called.
3057
3058 @param wdiDelTsReqParams: the del TS parameters as specified by
3059 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003060
Jeff Johnson295189b2012-06-20 16:38:30 -07003061 wdiDelTsRspCb: callback for passing back the response of
3062 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003063
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 callback
3066
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 @see WDI_AddTSReq
3068 @return Result of the function call
3069*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003070WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003071WDI_DelTSReq
3072(
3073 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3074 WDI_DelTsRspCb wdiDelTsRspCb,
3075 void* pUserData
3076)
3077{
3078 WDI_EventInfoType wdiEventData;
3079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3080
3081 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003082 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 ------------------------------------------------------------------------*/
3084 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3085 {
3086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3087 "WDI API call before module is initialized - Fail request");
3088
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003090 }
3091
3092 /*------------------------------------------------------------------------
3093 Fill in Event data and post to the Main FSM
3094 ------------------------------------------------------------------------*/
3095 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 wdiEventData.pEventData = pwdiDelTsReqParams;
3097 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3098 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003099 wdiEventData.pUserData = pUserData;
3100
3101 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3102
3103}/*WDI_DelTSReq*/
3104
3105
3106
3107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 wishes to update the EDCA parameters used by HW for QoS
3110 data traffic. Upon the call of this API the WLAN DAL
3111 will pack and send a HAL Update EDCA Params request
3112 message to the lower RIVA sub-system if DAL is in state
3113 STARTED.
3114
3115 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003117
3118 WDI_PostAssocReq must have been called.
3119
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003122
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 wdiUpdateEDCAParamsRspCb: callback for passing back the
3124 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 callback
3128
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 @see WDI_PostAssocReq
3130 @return Result of the function call
3131*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003132WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003133WDI_UpdateEDCAParams
3134(
3135 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3136 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3137 void* pUserData
3138)
3139{
3140 WDI_EventInfoType wdiEventData;
3141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3142
3143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 ------------------------------------------------------------------------*/
3146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3147 {
3148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3149 "WDI API call before module is initialized - Fail request");
3150
Jeff Johnsone7245742012-09-05 17:12:55 -07003151 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 }
3153
3154 /*------------------------------------------------------------------------
3155 Fill in Event data and post to the Main FSM
3156 ------------------------------------------------------------------------*/
3157 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3159 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3160 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 wdiEventData.pUserData = pUserData;
3162
3163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3164
3165}/*WDI_UpdateEDCAParams*/
3166
3167
3168/**
3169 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3170 successfully a BA session and needs to notify the HW for
3171 the appropriate settings to take place. Upon the call of
3172 this API the WLAN DAL will pack and send a HAL Add BA
3173 request message to the lower RIVA sub-system if DAL is
3174 in state STARTED.
3175
3176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003178
3179 WDI_PostAssocReq must have been called.
3180
3181 @param wdiAddBAReqParams: the add BA parameters as specified by
3182 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003183
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 wdiAddBARspCb: callback for passing back the response of
3185 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 callback
3189
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 @see WDI_PostAssocReq
3191 @return Result of the function call
3192*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003194WDI_AddBASessionReq
3195(
3196 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3197 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3198 void* pUserData
3199)
3200{
3201 WDI_EventInfoType wdiEventData;
3202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3203
3204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 ------------------------------------------------------------------------*/
3207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3208 {
3209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3210 "WDI API call before module is initialized - Fail request");
3211
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 }
3214
3215 /*------------------------------------------------------------------------
3216 Fill in Event data and post to the Main FSM
3217 ------------------------------------------------------------------------*/
3218 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003219 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3220 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3221 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003222 wdiEventData.pUserData = pUserData;
3223
3224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3225
3226}/*WDI_AddBASessionReq*/
3227
3228/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003229 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003230 inform HW that it has deleted a previously created BA
3231 session. Upon the call of this API the WLAN DAL will
3232 pack and send a HAL Del BA request message to the lower
3233 RIVA sub-system if DAL is in state STARTED.
3234
3235 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003236 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003237
3238 WDI_AddBAReq must have been called.
3239
3240 @param wdiDelBAReqParams: the del BA parameters as specified by
3241 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003242
Jeff Johnson295189b2012-06-20 16:38:30 -07003243 wdiDelBARspCb: callback for passing back the response of
3244 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003245
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003247 callback
3248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 @see WDI_AddBAReq
3250 @return Result of the function call
3251*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003252WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003253WDI_DelBAReq
3254(
3255 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3256 WDI_DelBARspCb wdiDelBARspCb,
3257 void* pUserData
3258)
3259{
3260 WDI_EventInfoType wdiEventData;
3261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3262
3263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 ------------------------------------------------------------------------*/
3266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3267 {
3268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3269 "WDI API call before module is initialized - Fail request");
3270
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 }
3273
3274 /*------------------------------------------------------------------------
3275 Fill in Event data and post to the Main FSM
3276 ------------------------------------------------------------------------*/
3277 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 wdiEventData.pEventData = pwdiDelBAReqParams;
3279 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3280 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003281 wdiEventData.pUserData = pUserData;
3282
3283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3284
3285}/*WDI_DelBAReq*/
3286
Jeff Johnsone7245742012-09-05 17:12:55 -07003287/*========================================================================
3288
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291==========================================================================*/
3292
3293/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003294 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003295 wants to set the power save related configurations of
3296 the WLAN Device. Upon the call of this API the WLAN DAL
3297 will pack and send a HAL Update CFG request message to
3298 the lower RIVA sub-system if DAL is in state STARTED.
3299
3300 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003302
3303 WDI_Start must have been called.
3304
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003307
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 wdiSetPwrSaveCfgCb: callback for passing back the
3309 response of the set power save cfg operation received
3310 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 callback
3314
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 @return Result of the function call
3317*/
3318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003319WDI_SetPwrSaveCfgReq
3320(
3321 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3322 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3323 void* pUserData
3324)
3325{
3326 WDI_EventInfoType wdiEventData;
3327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3328
3329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 ------------------------------------------------------------------------*/
3332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3333 {
3334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3335 "WDI API call before module is initialized - Fail request");
3336
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003338 }
3339
3340 /*------------------------------------------------------------------------
3341 Fill in Event data and post to the Main FSM
3342 ------------------------------------------------------------------------*/
3343 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003344 wdiEventData.pEventData = pwdiPowerSaveCfg;
3345 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3346 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiEventData.pUserData = pUserData;
3348
3349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3350
3351}/*WDI_SetPwrSaveCfgReq*/
3352
3353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003354 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 request the device to get into IMPS power state. Upon
3356 the call of this API the WLAN DAL will send a HAL Enter
3357 IMPS request message to the lower RIVA sub-system if DAL
3358 is in state STARTED.
3359
3360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003362
Jeff Johnsone7245742012-09-05 17:12:55 -07003363
3364 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 response of the Enter IMPS operation received from the
3366 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003367
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 callback
3370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 @see WDI_Start
3372 @return Result of the function call
3373*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003374WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003375WDI_EnterImpsReq
3376(
3377 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3378 void* pUserData
3379)
3380{
3381 WDI_EventInfoType wdiEventData;
3382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3383
3384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 ------------------------------------------------------------------------*/
3387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3388 {
3389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3390 "WDI API call before module is initialized - Fail request");
3391
Jeff Johnsone7245742012-09-05 17:12:55 -07003392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 }
3394
3395 /*------------------------------------------------------------------------
3396 Fill in Event data and post to the Main FSM
3397 ------------------------------------------------------------------------*/
3398 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 wdiEventData.pEventData = NULL;
3400 wdiEventData.uEventDataSize = 0;
3401 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 wdiEventData.pUserData = pUserData;
3403
3404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3405
3406}/*WDI_EnterImpsReq*/
3407
3408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 request the device to get out of IMPS power state. Upon
3411 the call of this API the WLAN DAL will send a HAL Exit
3412 IMPS request message to the lower RIVA sub-system if DAL
3413 is in state STARTED.
3414
3415 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003416 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003417
Jeff Johnson295189b2012-06-20 16:38:30 -07003418
Jeff Johnsone7245742012-09-05 17:12:55 -07003419
3420 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003421 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003422
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003424 callback
3425
Jeff Johnson295189b2012-06-20 16:38:30 -07003426 @see WDI_Start
3427 @return Result of the function call
3428*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003429WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003430WDI_ExitImpsReq
3431(
3432 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3433 void* pUserData
3434)
3435{
3436 WDI_EventInfoType wdiEventData;
3437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3438
3439 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003440 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003441 ------------------------------------------------------------------------*/
3442 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3443 {
3444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3445 "WDI API call before module is initialized - Fail request");
3446
Jeff Johnsone7245742012-09-05 17:12:55 -07003447 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 }
3449
3450 /*------------------------------------------------------------------------
3451 Fill in Event data and post to the Main FSM
3452 ------------------------------------------------------------------------*/
3453 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 wdiEventData.pEventData = NULL;
3455 wdiEventData.uEventDataSize = 0;
3456 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003457 wdiEventData.pUserData = pUserData;
3458
3459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3460
3461}/*WDI_ExitImpsReq*/
3462
3463/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 request the device to get into BMPS power state. Upon
3466 the call of this API the WLAN DAL will pack and send a
3467 HAL Enter BMPS request message to the lower RIVA
3468 sub-system if DAL is in state STARTED.
3469
3470 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003472
3473 WDI_PostAssocReq must have been called.
3474
Jeff Johnsone7245742012-09-05 17:12:55 -07003475 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003477
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 wdiEnterBmpsRspCb: callback for passing back the
3479 response of the Enter BMPS operation received from the
3480 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003481
Jeff Johnson295189b2012-06-20 16:38:30 -07003482 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 callback
3484
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 @see WDI_PostAssocReq
3486 @return Result of the function call
3487*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003488WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003489WDI_EnterBmpsReq
3490(
3491 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3492 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3493 void* pUserData
3494)
3495{
3496 WDI_EventInfoType wdiEventData;
3497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3498
3499 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003500 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 ------------------------------------------------------------------------*/
3502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3503 {
3504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3505 "WDI API call before module is initialized - Fail request");
3506
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 }
3509
3510 /*------------------------------------------------------------------------
3511 Fill in Event data and post to the Main FSM
3512 ------------------------------------------------------------------------*/
3513 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3515 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3516 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 wdiEventData.pUserData = pUserData;
3518
3519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3520
3521}/*WDI_EnterBmpsReq*/
3522
3523/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003524 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 request the device to get out of BMPS power state. Upon
3526 the call of this API the WLAN DAL will pack and send a
3527 HAL Exit BMPS request message to the lower RIVA
3528 sub-system if DAL is in state STARTED.
3529
3530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003532
3533 WDI_PostAssocReq must have been called.
3534
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003537
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 wdiExitBmpsRspCb: callback for passing back the response
3539 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003540
Jeff Johnson295189b2012-06-20 16:38:30 -07003541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003542 callback
3543
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 @see WDI_PostAssocReq
3545 @return Result of the function call
3546*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003547WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003548WDI_ExitBmpsReq
3549(
3550 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3551 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3552 void* pUserData
3553)
3554{
3555 WDI_EventInfoType wdiEventData;
3556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3557
3558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 ------------------------------------------------------------------------*/
3561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3562 {
3563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3564 "WDI API call before module is initialized - Fail request");
3565
Jeff Johnsone7245742012-09-05 17:12:55 -07003566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003567 }
3568
3569 /*------------------------------------------------------------------------
3570 Fill in Event data and post to the Main FSM
3571 ------------------------------------------------------------------------*/
3572 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3574 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3575 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003576 wdiEventData.pUserData = pUserData;
3577
3578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3579
3580}/*WDI_ExitBmpsReq*/
3581
3582/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 request the device to get into UAPSD power state. Upon
3585 the call of this API the WLAN DAL will pack and send a
3586 HAL Enter UAPSD request message to the lower RIVA
3587 sub-system if DAL is in state STARTED.
3588
3589 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003591
3592 WDI_PostAssocReq must have been called.
3593 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003594
3595 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 wdiEnterUapsdRspCb: callback for passing back the
3599 response of the Enter UAPSD operation received from the
3600 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003601
Jeff Johnson295189b2012-06-20 16:38:30 -07003602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 callback
3604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3606 @return Result of the function call
3607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003609WDI_EnterUapsdReq
3610(
3611 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3612 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3613 void* pUserData
3614)
3615{
3616 WDI_EventInfoType wdiEventData;
3617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3618
3619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 ------------------------------------------------------------------------*/
3622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3623 {
3624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3625 "WDI API call before module is initialized - Fail request");
3626
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 }
3629
3630 /*------------------------------------------------------------------------
3631 Fill in Event data and post to the Main FSM
3632 ------------------------------------------------------------------------*/
3633 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3635 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3636 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 wdiEventData.pUserData = pUserData;
3638
3639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3640
3641}/*WDI_EnterUapsdReq*/
3642
3643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003644 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 request the device to get out of UAPSD power state. Upon
3646 the call of this API the WLAN DAL will send a HAL Exit
3647 UAPSD request message to the lower RIVA sub-system if
3648 DAL is in state STARTED.
3649
3650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003652
3653 WDI_PostAssocReq must have been called.
3654
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 response of the Exit UAPSD operation received from the
3657 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003658
Jeff Johnson295189b2012-06-20 16:38:30 -07003659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003660 callback
3661
Jeff Johnson295189b2012-06-20 16:38:30 -07003662 @see WDI_PostAssocReq
3663 @return Result of the function call
3664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003666WDI_ExitUapsdReq
3667(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003668 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003669 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3670 void* pUserData
3671)
3672{
3673 WDI_EventInfoType wdiEventData;
3674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3675
3676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003678 ------------------------------------------------------------------------*/
3679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3680 {
3681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3682 "WDI API call before module is initialized - Fail request");
3683
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003685 }
3686
3687 /*------------------------------------------------------------------------
3688 Fill in Event data and post to the Main FSM
3689 ------------------------------------------------------------------------*/
3690 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003691 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3692 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 wdiEventData.pUserData = pUserData;
3695
3696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3697
3698}/*WDI_ExitUapsdReq*/
3699
3700/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 MAC wants to set the UAPSD related configurations
3703 of an associated STA (while acting as an AP) to the WLAN
3704 Device. Upon the call of this API the WLAN DAL will pack
3705 and send a HAL Update UAPSD params request message to
3706 the lower RIVA sub-system if DAL is in state STARTED.
3707
3708 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003709 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003710
3711 WDI_ConfigBSSReq must have been called.
3712
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003715
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 wdiUpdateUapsdParamsCb: callback for passing back the
3717 response of the update UAPSD params operation received
3718 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 callback
3722
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 @see WDI_ConfigBSSReq
3724 @return Result of the function call
3725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003727WDI_UpdateUapsdParamsReq
3728(
3729 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3730 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3731 void* pUserData
3732)
3733{
3734 WDI_EventInfoType wdiEventData;
3735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3736
3737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 ------------------------------------------------------------------------*/
3740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3741 {
3742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3743 "WDI API call before module is initialized - Fail request");
3744
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 }
3747
3748 /*------------------------------------------------------------------------
3749 Fill in Event data and post to the Main FSM
3750 ------------------------------------------------------------------------*/
3751 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003753 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 wdiEventData.pUserData = pUserData;
3756
3757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3758
3759}/*WDI_UpdateUapsdParamsReq*/
3760
3761/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003762 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 MAC wants to set the UAPSD related configurations before
3764 requesting for enter UAPSD power state to the WLAN
3765 Device. Upon the call of this API the WLAN DAL will pack
3766 and send a HAL Set UAPSD params request message to
3767 the lower RIVA sub-system if DAL is in state STARTED.
3768
3769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003771
3772 WDI_PostAssocReq must have been called.
3773
3774 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3775 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 wdiSetUapsdAcParamsCb: callback for passing back the
3778 response of the set UAPSD params operation received from
3779 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 callback
3783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 @see WDI_PostAssocReq
3785 @return Result of the function call
3786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003788WDI_SetUapsdAcParamsReq
3789(
3790 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3791 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3792 void* pUserData
3793)
3794{
3795 WDI_EventInfoType wdiEventData;
3796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3797
3798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 ------------------------------------------------------------------------*/
3801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3802 {
3803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3804 "WDI API call before module is initialized - Fail request");
3805
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 }
3808
3809 /*------------------------------------------------------------------------
3810 Fill in Event data and post to the Main FSM
3811 ------------------------------------------------------------------------*/
3812 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 wdiEventData.pEventData = pwdiUapsdInfo;
3814 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3815 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 wdiEventData.pUserData = pUserData;
3817
3818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3819
3820}/*WDI_SetUapsdAcParamsReq*/
3821
3822/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 MAC wants to set/reset the RXP filters for received pkts
3825 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3826 and send a HAL configure RXP filter request message to
3827 the lower RIVA sub-system.
3828
3829 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003831
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
3833 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 filter as specified by the Device
3835 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003836
Jeff Johnson295189b2012-06-20 16:38:30 -07003837 wdiConfigureRxpFilterCb: callback for passing back the
3838 response of the configure RXP filter operation received
3839 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003840
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 callback
3843
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 @return Result of the function call
3845*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003846WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003847WDI_ConfigureRxpFilterReq
3848(
3849 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3850 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3851 void* pUserData
3852)
3853{
3854 WDI_EventInfoType wdiEventData;
3855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3856
3857 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 ------------------------------------------------------------------------*/
3860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3861 {
3862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3863 "WDI API call before module is initialized - Fail request");
3864
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003866 }
3867
3868 /*------------------------------------------------------------------------
3869 Fill in Event data and post to the Main FSM
3870 ------------------------------------------------------------------------*/
3871 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3873 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3874 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 wdiEventData.pUserData = pUserData;
3876
3877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3878}/*WDI_ConfigureRxpFilterReq*/
3879
3880/**
3881 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3882 wants to set the beacon filters while in power save.
3883 Upon the call of this API the WLAN DAL will pack and
3884 send a Beacon filter request message to the
3885 lower RIVA sub-system.
3886
3887 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003888 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003889
Jeff Johnsone7245742012-09-05 17:12:55 -07003890
3891 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 filter as specified by the Device
3893 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003894
Jeff Johnson295189b2012-06-20 16:38:30 -07003895 wdiBeaconFilterCb: callback for passing back the
3896 response of the set beacon filter operation received
3897 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003898
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 callback
3901
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 @return Result of the function call
3903*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003904WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003905WDI_SetBeaconFilterReq
3906(
3907 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3908 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3909 void* pUserData
3910)
3911{
3912 WDI_EventInfoType wdiEventData;
3913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3914
3915 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 ------------------------------------------------------------------------*/
3918 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3919 {
3920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3921 "WDI API call before module is initialized - Fail request");
3922
Jeff Johnsone7245742012-09-05 17:12:55 -07003923 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 }
3925
3926 /*------------------------------------------------------------------------
3927 Fill in Event data and post to the Main FSM
3928 ------------------------------------------------------------------------*/
3929 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003930 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003931 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 wdiEventData.pUserData = pUserData;
3934
3935 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3936}/*WDI_SetBeaconFilterReq*/
3937
3938/**
3939 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3940 wants to remove the beacon filter for particular IE
3941 while in power save. Upon the call of this API the WLAN
3942 DAL will pack and send a remove Beacon filter request
3943 message to the lower RIVA sub-system.
3944
3945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003947
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
3949 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 filter as specified by the Device
3951 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 wdiBeaconFilterCb: callback for passing back the
3954 response of the remove beacon filter operation received
3955 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003956
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003958 callback
3959
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 @return Result of the function call
3961*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003962WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003963WDI_RemBeaconFilterReq
3964(
3965 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3966 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3967 void* pUserData
3968)
3969{
3970 WDI_EventInfoType wdiEventData;
3971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3972
3973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 ------------------------------------------------------------------------*/
3976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3977 {
3978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3979 "WDI API call before module is initialized - Fail request");
3980
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 }
3983
3984 /*------------------------------------------------------------------------
3985 Fill in Event data and post to the Main FSM
3986 ------------------------------------------------------------------------*/
3987 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003988 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003989 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003991 wdiEventData.pUserData = pUserData;
3992
3993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3994}/*WDI_RemBeaconFilterReq*/
3995
3996/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003997 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 MAC wants to set the RSSI thresholds related
3999 configurations while in power save. Upon the call of
4000 this API the WLAN DAL will pack and send a HAL Set RSSI
4001 thresholds request message to the lower RIVA
4002 sub-system if DAL is in state STARTED.
4003
4004 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004005 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004006
4007 WDI_PostAssocReq must have been called.
4008
4009 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4010 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004011
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 wdiSetUapsdAcParamsCb: callback for passing back the
4013 response of the set UAPSD params operation received from
4014 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004015
Jeff Johnson295189b2012-06-20 16:38:30 -07004016 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004017 callback
4018
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 @see WDI_PostAssocReq
4020 @return Result of the function call
4021*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004022WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004023WDI_SetRSSIThresholdsReq
4024(
4025 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4026 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4027 void* pUserData
4028)
4029{
4030 WDI_EventInfoType wdiEventData;
4031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4032
4033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 ------------------------------------------------------------------------*/
4036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4037 {
4038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4039 "WDI API call before module is initialized - Fail request");
4040
Jeff Johnsone7245742012-09-05 17:12:55 -07004041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 }
4043
4044 /*------------------------------------------------------------------------
4045 Fill in Event data and post to the Main FSM
4046 ------------------------------------------------------------------------*/
4047 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004049 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004051 wdiEventData.pUserData = pUserData;
4052
4053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4054}/* WDI_SetRSSIThresholdsReq*/
4055
4056/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004058 wants to set the filter to minimize unnecessary host
4059 wakeup due to broadcast traffic while in power save.
4060 Upon the call of this API the WLAN DAL will pack and
4061 send a HAL host offload request message to the
4062 lower RIVA sub-system if DAL is in state STARTED.
4063
4064 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004065 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004066
4067 WDI_PostAssocReq must have been called.
4068
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004071
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 wdiHostOffloadCb: callback for passing back the response
4073 of the host offload operation received from the
4074 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004075
Jeff Johnson295189b2012-06-20 16:38:30 -07004076 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 callback
4078
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 @see WDI_PostAssocReq
4080 @return Result of the function call
4081*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004082WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004083WDI_HostOffloadReq
4084(
4085 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4086 WDI_HostOffloadCb wdiHostOffloadCb,
4087 void* pUserData
4088)
4089{
4090 WDI_EventInfoType wdiEventData;
4091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4092
4093 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 ------------------------------------------------------------------------*/
4096 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4097 {
4098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4099 "WDI API call before module is initialized - Fail request");
4100
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 }
4103
4104 /*------------------------------------------------------------------------
4105 Fill in Event data and post to the Main FSM
4106 ------------------------------------------------------------------------*/
4107 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004108 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004109 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 wdiEventData.pUserData = pUserData;
4112
4113 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4114}/*WDI_HostOffloadReq*/
4115
4116/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 @brief WDI_KeepAliveReq will be called when the upper MAC
4118 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004119 and minimize unnecessary host wakeups due to while in power save.
4120 Upon the call of this API the WLAN DAL will pack and
4121 send a HAL Keep Alive request message to the
4122 lower RIVA sub-system if DAL is in state STARTED.
4123
4124 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004126
4127 WDI_PostAssocReq must have been called.
4128
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 wdiKeepAliveCb: callback for passing back the response
4133 of the Keep Alive operation received from the
4134 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004135
Jeff Johnson295189b2012-06-20 16:38:30 -07004136 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004137 callback
4138
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 @see WDI_PostAssocReq
4140 @return Result of the function call
4141*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004142WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004143WDI_KeepAliveReq
4144(
4145 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4146 WDI_KeepAliveCb wdiKeepAliveCb,
4147 void* pUserData
4148)
4149{
4150 WDI_EventInfoType wdiEventData;
4151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4152
4153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 ------------------------------------------------------------------------*/
4156 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4157 {
4158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4159 "WDI_KeepAliveReq: WDI API call before module "
4160 "is initialized - Fail request");
4161
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 }
4164
4165 /*------------------------------------------------------------------------
4166 Fill in Event data and post to the Main FSM
4167 ------------------------------------------------------------------------*/
4168 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 wdiEventData.pEventData = pwdiKeepAliveParams;
4170 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4171 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 wdiEventData.pUserData = pUserData;
4173
4174 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4175}/*WDI_KeepAliveReq*/
4176
4177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004179 wants to set the Wowl Bcast ptrn to minimize unnecessary
4180 host wakeup due to broadcast traffic while in power
4181 save. Upon the call of this API the WLAN DAL will pack
4182 and send a HAL Wowl Bcast ptrn request message to the
4183 lower RIVA sub-system if DAL is in state STARTED.
4184
4185 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004187
4188 WDI_PostAssocReq must have been called.
4189
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004192
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 wdiWowlAddBcPtrnCb: callback for passing back the
4194 response of the add Wowl bcast ptrn operation received
4195 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004196
Jeff Johnson295189b2012-06-20 16:38:30 -07004197 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 callback
4199
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 @see WDI_PostAssocReq
4201 @return Result of the function call
4202*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004203WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004204WDI_WowlAddBcPtrnReq
4205(
4206 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4207 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4208 void* pUserData
4209)
4210{
4211 WDI_EventInfoType wdiEventData;
4212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4213
4214 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 ------------------------------------------------------------------------*/
4217 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4218 {
4219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4220 "WDI API call before module is initialized - Fail request");
4221
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 }
4224
4225 /*------------------------------------------------------------------------
4226 Fill in Event data and post to the Main FSM
4227 ------------------------------------------------------------------------*/
4228 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004230 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 wdiEventData.pUserData = pUserData;
4233
4234 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4235}/*WDI_WowlAddBcPtrnReq*/
4236
4237/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004238 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 wants to clear the Wowl Bcast ptrn. Upon the call of
4240 this API the WLAN DAL will pack and send a HAL delete
4241 Wowl Bcast ptrn request message to the lower RIVA
4242 sub-system if DAL is in state STARTED.
4243
4244 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004246
4247 WDI_WowlAddBcPtrnReq must have been called.
4248
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004251
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 wdiWowlDelBcPtrnCb: callback for passing back the
4253 response of the del Wowl bcast ptrn operation received
4254 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004255
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 callback
4258
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 @see WDI_WowlAddBcPtrnReq
4260 @return Result of the function call
4261*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004263WDI_WowlDelBcPtrnReq
4264(
4265 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4266 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4267 void* pUserData
4268)
4269{
4270 WDI_EventInfoType wdiEventData;
4271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4272
4273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 ------------------------------------------------------------------------*/
4276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4277 {
4278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4279 "WDI API call before module is initialized - Fail request");
4280
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 }
4283
4284 /*------------------------------------------------------------------------
4285 Fill in Event data and post to the Main FSM
4286 ------------------------------------------------------------------------*/
4287 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004288 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004289 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 wdiEventData.pUserData = pUserData;
4292
4293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4294}/*WDI_WowlDelBcPtrnReq*/
4295
4296/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004297 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 wants to enter the Wowl state to minimize unnecessary
4299 host wakeup while in power save. Upon the call of this
4300 API the WLAN DAL will pack and send a HAL Wowl enter
4301 request message to the lower RIVA sub-system if DAL is
4302 in state STARTED.
4303
4304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004306
4307 WDI_PostAssocReq must have been called.
4308
Jeff Johnsone7245742012-09-05 17:12:55 -07004309 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004311
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 wdiWowlEnterReqCb: callback for passing back the
4313 response of the enter Wowl operation received from the
4314 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004315
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 callback
4318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 @see WDI_PostAssocReq
4320 @return Result of the function call
4321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004323WDI_WowlEnterReq
4324(
4325 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4326 WDI_WowlEnterReqCb wdiWowlEnterCb,
4327 void* pUserData
4328)
4329{
4330 WDI_EventInfoType wdiEventData;
4331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4332
4333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 ------------------------------------------------------------------------*/
4336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4337 {
4338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4339 "WDI API call before module is initialized - Fail request");
4340
Jeff Johnsone7245742012-09-05 17:12:55 -07004341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 }
4343
4344 /*------------------------------------------------------------------------
4345 Fill in Event data and post to the Main FSM
4346 ------------------------------------------------------------------------*/
4347 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004349 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 wdiEventData.pUserData = pUserData;
4352
4353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4354}/*WDI_WowlEnterReq*/
4355
4356/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 wants to exit the Wowl state. Upon the call of this API
4359 the WLAN DAL will pack and send a HAL Wowl exit request
4360 message to the lower RIVA sub-system if DAL is in state
4361 STARTED.
4362
4363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004365
4366 WDI_WowlEnterReq must have been called.
4367
Jeff Johnsone7245742012-09-05 17:12:55 -07004368 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004369 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004370
Jeff Johnson295189b2012-06-20 16:38:30 -07004371 wdiWowlExitReqCb: callback for passing back the response
4372 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004375 callback
4376
Jeff Johnson295189b2012-06-20 16:38:30 -07004377 @see WDI_WowlEnterReq
4378 @return Result of the function call
4379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004381WDI_WowlExitReq
4382(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004383 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004384 WDI_WowlExitReqCb wdiWowlExitCb,
4385 void* pUserData
4386)
4387{
4388 WDI_EventInfoType wdiEventData;
4389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4390
4391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004393 ------------------------------------------------------------------------*/
4394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4395 {
4396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4397 "WDI API call before module is initialized - Fail request");
4398
Jeff Johnsone7245742012-09-05 17:12:55 -07004399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004400 }
4401
4402 /*------------------------------------------------------------------------
4403 Fill in Event data and post to the Main FSM
4404 ------------------------------------------------------------------------*/
4405 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004406 wdiEventData.pEventData = pwdiWowlExitParams;
4407 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004408 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 wdiEventData.pUserData = pUserData;
4410
4411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4412}/*WDI_WowlExitReq*/
4413
4414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004415 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 the upper MAC wants to dynamically adjusts the listen
4417 interval based on the WLAN/MSM activity. Upon the call
4418 of this API the WLAN DAL will pack and send a HAL
4419 configure Apps Cpu Wakeup State request message to the
4420 lower RIVA sub-system.
4421
4422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004424
Jeff Johnsone7245742012-09-05 17:12:55 -07004425
4426 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 Apps Cpu Wakeup State as specified by the
4428 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004429
Jeff Johnson295189b2012-06-20 16:38:30 -07004430 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4431 back the response of the configure Apps Cpu Wakeup State
4432 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004433
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004435 callback
4436
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 @return Result of the function call
4438*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004439WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004440WDI_ConfigureAppsCpuWakeupStateReq
4441(
4442 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4443 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4444 void* pUserData
4445)
4446{
4447 WDI_EventInfoType wdiEventData;
4448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4449
4450 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004451 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004452 ------------------------------------------------------------------------*/
4453 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4454 {
4455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4456 "WDI API call before module is initialized - Fail request");
4457
Jeff Johnsone7245742012-09-05 17:12:55 -07004458 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004459 }
4460
4461 /*------------------------------------------------------------------------
4462 Fill in Event data and post to the Main FSM
4463 ------------------------------------------------------------------------*/
4464 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004465 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4466 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4467 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 wdiEventData.pUserData = pUserData;
4469
4470 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4471}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4472/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 to to perform a flush operation on a given AC. Upon the
4475 call of this API the WLAN DAL will pack and send a HAL
4476 Flush AC request message to the lower RIVA sub-system if
4477 DAL is in state STARTED.
4478
4479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004481
4482 WDI_AddBAReq must have been called.
4483
Jeff Johnsone7245742012-09-05 17:12:55 -07004484 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004485 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 wdiFlushAcRspCb: callback for passing back the response
4488 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 callback
4492
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 @see WDI_AddBAReq
4494 @return Result of the function call
4495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004497WDI_FlushAcReq
4498(
4499 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4500 WDI_FlushAcRspCb wdiFlushAcRspCb,
4501 void* pUserData
4502)
4503{
4504 WDI_EventInfoType wdiEventData;
4505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4506
4507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004509 ------------------------------------------------------------------------*/
4510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4511 {
4512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4513 "WDI API call before module is initialized - Fail request");
4514
Jeff Johnsone7245742012-09-05 17:12:55 -07004515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004516 }
4517
4518 /*------------------------------------------------------------------------
4519 Fill in Event data and post to the Main FSM
4520 ------------------------------------------------------------------------*/
4521 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004522 wdiEventData.pEventData = pwdiFlushAcReqParams;
4523 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4524 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 wdiEventData.pUserData = pUserData;
4526
4527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4528
4529}/*WDI_FlushAcReq*/
4530
4531/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004532 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004533 wants to notify the lower mac on a BT AMP event. This is
4534 to inform BTC-SLM that some BT AMP event occurred. Upon
4535 the call of this API the WLAN DAL will pack and send a
4536 HAL BT AMP event request message to the lower RIVA
4537 sub-system if DAL is in state STARTED.
4538
4539 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004540 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004541
Jeff Johnsone7245742012-09-05 17:12:55 -07004542
4543 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004545
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 wdiBtAmpEventRspCb: callback for passing back the
4547 response of the BT AMP event operation received from the
4548 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004549
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004551 callback
4552
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 @return Result of the function call
4554*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004555WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004556WDI_BtAmpEventReq
4557(
4558 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4559 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4560 void* pUserData
4561)
4562{
4563 WDI_EventInfoType wdiEventData;
4564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4565
4566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004568 ------------------------------------------------------------------------*/
4569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4570 {
4571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4572 "WDI API call before module is initialized - Fail request");
4573
Jeff Johnsone7245742012-09-05 17:12:55 -07004574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004575 }
4576
4577 /*------------------------------------------------------------------------
4578 Fill in Event data and post to the Main FSM
4579 ------------------------------------------------------------------------*/
4580 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004581 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4582 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4583 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004584 wdiEventData.pUserData = pUserData;
4585
4586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4587
4588}/*WDI_BtAmpEventReq*/
4589
Jeff Johnsone7245742012-09-05 17:12:55 -07004590#ifdef FEATURE_OEM_DATA_SUPPORT
4591/**
4592 @brief WDI_Start Oem Data Req will be called when the upper MAC
4593 wants to notify the lower mac on a oem data Req event.Upon
4594 the call of this API the WLAN DAL will pack and send a
4595 HAL OEM Data Req event request message to the lower RIVA
4596 sub-system if DAL is in state STARTED.
4597
4598 In state BUSY this request will be queued. Request won't
4599 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004600
4601
Jeff Johnsone7245742012-09-05 17:12:55 -07004602
4603 @param pwdiOemDataReqParams: the Oem Data Req as
4604 specified by the Device Interface
4605
4606 wdiStartOemDataRspCb: callback for passing back the
4607 response of the Oem Data Req received from the
4608 device
4609
4610 pUserData: user data will be passed back with the
4611 callback
4612
4613 @return Result of the function call
4614*/
4615WDI_Status
4616WDI_StartOemDataReq
4617(
4618 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4619 WDI_oemDataRspCb wdiOemDataRspCb,
4620 void* pUserData
4621)
4622{
4623 WDI_EventInfoType wdiEventData;
4624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4625
4626 /*------------------------------------------------------------------------
4627 Sanity Check
4628 ------------------------------------------------------------------------*/
4629 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4630 {
4631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4632 "WDI API call before module is initialized - Fail request");
4633
4634 return WDI_STATUS_E_NOT_ALLOWED;
4635 }
4636
4637 /*------------------------------------------------------------------------
4638 Fill in Event data and post to the Main FSM
4639 ------------------------------------------------------------------------*/
4640 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4641 wdiEventData.pEventData = pwdiOemDataReqParams;
4642 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4643 wdiEventData.pCBfnc = wdiOemDataRspCb;
4644 wdiEventData.pUserData = pUserData;
4645
4646 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4647
4648
4649}
4650
4651#endif
4652
4653
4654/*========================================================================
4655
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658==========================================================================*/
4659/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 the WLAN HW to change the current channel of operation.
4662 Upon the call of this API the WLAN DAL will pack and
4663 send a HAL Start request message to the lower RIVA
4664 sub-system if DAL is in state STARTED.
4665
4666 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004668
4669 WDI_Start must have been called.
4670
Jeff Johnsone7245742012-09-05 17:12:55 -07004671 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004673
Jeff Johnson295189b2012-06-20 16:38:30 -07004674 wdiSwitchChRspCb: callback for passing back the response
4675 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004676
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004678 callback
4679
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 @see WDI_Start
4681 @return Result of the function call
4682*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004683WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004684WDI_SwitchChReq
4685(
4686 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4687 WDI_SwitchChRspCb wdiSwitchChRspCb,
4688 void* pUserData
4689)
4690{
4691 WDI_EventInfoType wdiEventData;
4692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4693
4694 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004696 ------------------------------------------------------------------------*/
4697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4698 {
4699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4700 "WDI API call before module is initialized - Fail request");
4701
Jeff Johnsone7245742012-09-05 17:12:55 -07004702 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 }
4704
4705 /*------------------------------------------------------------------------
4706 Fill in Event data and post to the Main FSM
4707 ------------------------------------------------------------------------*/
4708 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004709 wdiEventData.pEventData = pwdiSwitchChReqParams;
4710 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4711 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004712 wdiEventData.pUserData = pUserData;
4713
4714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4715
4716}/*WDI_SwitchChReq*/
4717
4718
4719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 wishes to add or update a STA in HW. Upon the call of
4722 this API the WLAN DAL will pack and send a HAL Start
4723 message request message to the lower RIVA sub-system if
4724 DAL is in state STARTED.
4725
4726 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004728
4729 WDI_Start must have been called.
4730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004733
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 wdiConfigSTARspCb: callback for passing back the
4735 response of the config STA operation received from the
4736 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004737
Jeff Johnson295189b2012-06-20 16:38:30 -07004738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 callback
4740
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 @see WDI_Start
4742 @return Result of the function call
4743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004745WDI_ConfigSTAReq
4746(
4747 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4748 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4749 void* pUserData
4750)
4751{
4752 WDI_EventInfoType wdiEventData;
4753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4754
4755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 ------------------------------------------------------------------------*/
4758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4759 {
4760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4761 "WDI API call before module is initialized - Fail request");
4762
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 }
4765
4766 /*------------------------------------------------------------------------
4767 Fill in Event data and post to the Main FSM
4768 ------------------------------------------------------------------------*/
4769 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4771 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4772 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004773 wdiEventData.pUserData = pUserData;
4774
4775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4776
4777}/*WDI_ConfigSTAReq*/
4778
4779/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 wants to change the state of an ongoing link. Upon the
4782 call of this API the WLAN DAL will pack and send a HAL
4783 Start message request message to the lower RIVA
4784 sub-system if DAL is in state STARTED.
4785
4786 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004787 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004788
4789 WDI_JoinStartReq must have been called.
4790
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004793
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 wdiSetLinkStateRspCb: callback for passing back the
4795 response of the set link state operation received from
4796 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004797
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 callback
4800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 @see WDI_JoinStartReq
4802 @return Result of the function call
4803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004805WDI_SetLinkStateReq
4806(
4807 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4808 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4809 void* pUserData
4810)
4811{
4812 WDI_EventInfoType wdiEventData;
4813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4814
4815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 ------------------------------------------------------------------------*/
4818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4819 {
4820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4821 "WDI API call before module is initialized - Fail request");
4822
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 }
4825
4826 /*------------------------------------------------------------------------
4827 Fill in Event data and post to the Main FSM
4828 ------------------------------------------------------------------------*/
4829 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004830 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4831 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4832 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004833 wdiEventData.pUserData = pUserData;
4834
4835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4836
4837}/*WDI_SetLinkStateReq*/
4838
4839
4840/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004841 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 to get statistics (MIB counters) from the device. Upon
4843 the call of this API the WLAN DAL will pack and send a
4844 HAL Start request message to the lower RIVA sub-system
4845 if DAL is in state STARTED.
4846
4847 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004848 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004849
4850 WDI_Start must have been called.
4851
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004854
Jeff Johnson295189b2012-06-20 16:38:30 -07004855 wdiGetStatsRspCb: callback for passing back the response
4856 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004857
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004859 callback
4860
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 @see WDI_Start
4862 @return Result of the function call
4863*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004864WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004865WDI_GetStatsReq
4866(
4867 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4868 WDI_GetStatsRspCb wdiGetStatsRspCb,
4869 void* pUserData
4870)
4871{
4872 WDI_EventInfoType wdiEventData;
4873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4874
4875 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 ------------------------------------------------------------------------*/
4878 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4879 {
4880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4881 "WDI API call before module is initialized - Fail request");
4882
Jeff Johnsone7245742012-09-05 17:12:55 -07004883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004884 }
4885
4886 /*------------------------------------------------------------------------
4887 Fill in Event data and post to the Main FSM
4888 ------------------------------------------------------------------------*/
4889 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004890 wdiEventData.pEventData = pwdiGetStatsReqParams;
4891 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4892 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004893 wdiEventData.pUserData = pUserData;
4894
4895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4896
4897}/*WDI_GetStatsReq*/
4898
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004899#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4900/**
4901 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4902 to get roam rssi from the device. Upon
4903 the call of this API the WLAN DAL will pack and send a
4904 HAL Start request message to the lower RIVA sub-system
4905 if DAL is in state STARTED.
4906
4907 In state BUSY this request will be queued. Request won't
4908 be allowed in any other state.
4909
4910 WDI_Start must have been called.
4911
4912 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4913 specified by the Device Interface
4914
4915 wdiGetRoamRssiRspCb: callback for passing back the response
4916 of the get stats operation received from the device
4917
4918 pUserData: user data will be passed back with the
4919 callback
4920
4921 @see WDI_Start
4922 @return Result of the function call
4923*/
4924WDI_Status
4925WDI_GetRoamRssiReq
4926(
4927 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4928 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4929 void* pUserData
4930)
4931{
4932 WDI_EventInfoType wdiEventData;
4933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4934
4935 /*------------------------------------------------------------------------
4936 Sanity Check
4937 ------------------------------------------------------------------------*/
4938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4939 {
4940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4941 "WDI API call before module is initialized - Fail request");
4942
4943 return WDI_STATUS_E_NOT_ALLOWED;
4944 }
4945 /*------------------------------------------------------------------------
4946 Fill in Event data and post to the Main FSM
4947 ------------------------------------------------------------------------*/
4948 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4949 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4950 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4951 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4952 wdiEventData.pUserData = pUserData;
4953
4954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4955
4956}/*WDI_GetRoamRssiReq*/
4957#endif
4958
Jeff Johnson295189b2012-06-20 16:38:30 -07004959
4960/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 it wishes to change the configuration of the WLAN
4963 Device. Upon the call of this API the WLAN DAL will pack
4964 and send a HAL Update CFG request message to the lower
4965 RIVA sub-system if DAL is in state STARTED.
4966
4967 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004969
4970 WDI_Start must have been called.
4971
Jeff Johnsone7245742012-09-05 17:12:55 -07004972 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 wdiUpdateCfgsRspCb: callback for passing back the
4976 response of the update cfg operation received from the
4977 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004978
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 callback
4981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 @see WDI_Start
4983 @return Result of the function call
4984*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004985WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004986WDI_UpdateCfgReq
4987(
4988 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4989 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4990 void* pUserData
4991)
4992{
4993 WDI_EventInfoType wdiEventData;
4994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4995
4996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 ------------------------------------------------------------------------*/
4999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5000 {
5001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5002 "WDI API call before module is initialized - Fail request");
5003
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005005 }
5006
5007 /*------------------------------------------------------------------------
5008 Fill in Event data and post to the Main FSM
5009 ------------------------------------------------------------------------*/
5010 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005011 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5012 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5013 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 wdiEventData.pUserData = pUserData;
5015
5016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5017
5018}/*WDI_UpdateCfgReq*/
5019
5020
5021
5022/**
5023 @brief WDI_AddBAReq will be called when the upper MAC has setup
5024 successfully a BA session and needs to notify the HW for
5025 the appropriate settings to take place. Upon the call of
5026 this API the WLAN DAL will pack and send a HAL Add BA
5027 request message to the lower RIVA sub-system if DAL is
5028 in state STARTED.
5029
5030 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005031 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005032
5033 WDI_PostAssocReq must have been called.
5034
5035 @param wdiAddBAReqParams: the add BA parameters as specified by
5036 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005037
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 wdiAddBARspCb: callback for passing back the response of
5039 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005040
Jeff Johnson295189b2012-06-20 16:38:30 -07005041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 callback
5043
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 @see WDI_PostAssocReq
5045 @return Result of the function call
5046*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005048WDI_AddBAReq
5049(
5050 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5051 WDI_AddBARspCb wdiAddBARspCb,
5052 void* pUserData
5053)
5054{
5055 WDI_EventInfoType wdiEventData;
5056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5057
5058 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005059 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 ------------------------------------------------------------------------*/
5061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5062 {
5063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5064 "WDI API call before module is initialized - Fail request");
5065
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005067 }
5068
5069 /*------------------------------------------------------------------------
5070 Fill in Event data and post to the Main FSM
5071 ------------------------------------------------------------------------*/
5072 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005073 wdiEventData.pEventData = pwdiAddBAReqParams;
5074 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5075 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 wdiEventData.pUserData = pUserData;
5077
5078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5079
5080}/*WDI_AddBAReq*/
5081
5082
5083/**
5084 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5085 successfully a BA session and needs to notify the HW for
5086 the appropriate settings to take place. Upon the call of
5087 this API the WLAN DAL will pack and send a HAL Add BA
5088 request message to the lower RIVA sub-system if DAL is
5089 in state STARTED.
5090
5091 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005092 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005093
5094 WDI_PostAssocReq must have been called.
5095
5096 @param wdiAddBAReqParams: the add BA parameters as specified by
5097 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005098
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 wdiAddBARspCb: callback for passing back the response of
5100 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005101
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 callback
5104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 @see WDI_PostAssocReq
5106 @return Result of the function call
5107*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005108WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005109WDI_TriggerBAReq
5110(
5111 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5112 WDI_TriggerBARspCb wdiTriggerBARspCb,
5113 void* pUserData
5114)
5115{
5116 WDI_EventInfoType wdiEventData;
5117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5118
5119 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 ------------------------------------------------------------------------*/
5122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5123 {
5124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5125 "WDI API call before module is initialized - Fail request");
5126
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 }
5129
5130 /*------------------------------------------------------------------------
5131 Fill in Event data and post to the Main FSM
5132 ------------------------------------------------------------------------*/
5133 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5135 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5136 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 wdiEventData.pUserData = pUserData;
5138
5139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5140
5141}/*WDI_AddBAReq*/
5142
5143/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 wishes to update any of the Beacon parameters used by HW.
5146 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5147 message to the lower RIVA sub-system if DAL is in state
5148 STARTED.
5149
5150 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005152
5153 WDI_PostAssocReq must have been called.
5154
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005156 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005157
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 wdiUpdateBeaconParamsRspCb: callback for passing back the
5159 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005160
Jeff Johnson295189b2012-06-20 16:38:30 -07005161 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005162 callback
5163
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 @see WDI_PostAssocReq
5165 @return Result of the function call
5166*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005167WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005168WDI_UpdateBeaconParamsReq
5169(
5170 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5171 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5172 void* pUserData
5173)
5174{
5175 WDI_EventInfoType wdiEventData;
5176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5177
5178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 ------------------------------------------------------------------------*/
5181 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5182 {
5183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5184 "WDI API call before module is initialized - Fail request");
5185
Jeff Johnsone7245742012-09-05 17:12:55 -07005186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005187 }
5188
5189 /*------------------------------------------------------------------------
5190 Fill in Event data and post to the Main FSM
5191 ------------------------------------------------------------------------*/
5192 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5194 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5195 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005196 wdiEventData.pUserData = pUserData;
5197
5198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5199
5200}/*WDI_UpdateBeaconParamsReq*/
5201
5202/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005203 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 wishes to update the Beacon template used by HW.
5205 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5206 message to the lower RIVA sub-system if DAL is in state
5207 STARTED.
5208
5209 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005211
5212 WDI_PostAssocReq must have been called.
5213
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005216
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 wdiSendBeaconParamsRspCb: callback for passing back the
5218 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 callback
5222
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 @see WDI_PostAssocReq
5224 @return Result of the function call
5225*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005226WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005227WDI_SendBeaconParamsReq
5228(
5229 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5230 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5231 void* pUserData
5232)
5233{
5234 WDI_EventInfoType wdiEventData;
5235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5236
5237 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 ------------------------------------------------------------------------*/
5240 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5241 {
5242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5243 "WDI API call before module is initialized - Fail request");
5244
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005246 }
5247
5248 /*------------------------------------------------------------------------
5249 Fill in Event data and post to the Main FSM
5250 ------------------------------------------------------------------------*/
5251 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005252 wdiEventData.pEventData = pwdiSendBeaconParams;
5253 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5254 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005255 wdiEventData.pUserData = pUserData;
5256
5257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5258
5259}/*WDI_SendBeaconParamsReq*/
5260
5261/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005262 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 upper MAC wants to update the probe response template to
5264 be transmitted as Soft AP
5265 Upon the call of this API the WLAN DAL will
5266 pack and send the probe rsp template message to the
5267 lower RIVA sub-system if DAL is in state STARTED.
5268
5269 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005270 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005271
5272
Jeff Johnsone7245742012-09-05 17:12:55 -07005273 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005275
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 wdiSendBeaconParamsRspCb: callback for passing back the
5277 response of the Send Beacon Params operation received
5278 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005279
Jeff Johnson295189b2012-06-20 16:38:30 -07005280 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 callback
5282
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 @see WDI_AddBAReq
5284 @return Result of the function call
5285*/
5286
Jeff Johnsone7245742012-09-05 17:12:55 -07005287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005288WDI_UpdateProbeRspTemplateReq
5289(
5290 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5291 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5292 void* pUserData
5293)
5294{
5295 WDI_EventInfoType wdiEventData;
5296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5297
5298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 ------------------------------------------------------------------------*/
5301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5302 {
5303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5304 "WDI API call before module is initialized - Fail request");
5305
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 }
5308
5309 /*------------------------------------------------------------------------
5310 Fill in Event data and post to the Main FSM
5311 ------------------------------------------------------------------------*/
5312 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005313 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5314 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5315 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005316 wdiEventData.pUserData = pUserData;
5317
5318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5319
5320}/*WDI_UpdateProbeRspTemplateReq*/
5321
5322/**
5323 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5324 to the NV memory.
5325
5326
5327 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5328 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 wdiNvDownloadRspCb: callback for passing back the response of
5331 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005332
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005334 callback
5335
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 @see WDI_PostAssocReq
5337 @return Result of the function call
5338*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005339WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005340WDI_NvDownloadReq
5341(
5342 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5343 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5344 void* pUserData
5345)
5346{
5347 WDI_EventInfoType wdiEventData;
5348
5349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005351 ------------------------------------------------------------------------*/
5352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5353 {
5354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5355 "WDI API call before module is initialized - Fail request");
5356
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 }
5359
5360 /*------------------------------------------------------------------------
5361 Fill in Event data and post to the Main FSM
5362 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5364 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5365 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5366 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 wdiEventData.pUserData = pUserData;
5368
5369 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5370
5371}/*WDI_NVDownloadReq*/
5372
Jeff Johnson295189b2012-06-20 16:38:30 -07005373/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 upper MAC wants to send Notice of Absence
5376 Upon the call of this API the WLAN DAL will
5377 pack and send the probe rsp template message to the
5378 lower RIVA sub-system if DAL is in state STARTED.
5379
5380 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005382
5383
Jeff Johnsone7245742012-09-05 17:12:55 -07005384 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 wdiSendBeaconParamsRspCb: callback for passing back the
5388 response of the Send Beacon Params operation received
5389 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005390
Jeff Johnson295189b2012-06-20 16:38:30 -07005391 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 callback
5393
Jeff Johnson295189b2012-06-20 16:38:30 -07005394 @see WDI_AddBAReq
5395 @return Result of the function call
5396*/
5397WDI_Status
5398WDI_SetP2PGONOAReq
5399(
5400 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5401 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5402 void* pUserData
5403)
5404{
5405 WDI_EventInfoType wdiEventData;
5406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5407
5408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005410 ------------------------------------------------------------------------*/
5411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5412 {
5413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5414 "WDI API call before module is initialized - Fail request");
5415
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 }
5418
5419 /*------------------------------------------------------------------------
5420 Fill in Event data and post to the Main FSM
5421 ------------------------------------------------------------------------*/
5422 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5424 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5425 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 wdiEventData.pUserData = pUserData;
5427
5428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5429
5430}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005431
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305432#ifdef FEATURE_WLAN_TDLS
5433/**
5434 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5435 upper MAC wants to send TDLS Link Establish Request Parameters
5436 Upon the call of this API the WLAN DAL will
5437 pack and send the TDLS Link Establish Request message to the
5438 lower RIVA sub-system if DAL is in state STARTED.
5439
5440 In state BUSY this request will be queued. Request won't
5441 be allowed in any other state.
5442
5443
5444 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5445 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5446
5447 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5448 response of the TDLS Link Establish request received
5449 from the device
5450
5451 pUserData: user data will be passed back with the
5452 callback
5453
5454 @see
5455 @return Result of the function call
5456*/
5457WDI_Status
5458WDI_SetTDLSLinkEstablishReq
5459(
5460 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5461 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5462 void* pUserData
5463)
5464{
5465 WDI_EventInfoType wdiEventData;
5466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5467
5468 /*------------------------------------------------------------------------
5469 Sanity Check
5470 ------------------------------------------------------------------------*/
5471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5472 {
5473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5474 "WDI API call before module is initialized - Fail request");
5475
5476 return WDI_STATUS_E_NOT_ALLOWED;
5477 }
5478
5479 /*------------------------------------------------------------------------
5480 Fill in Event data and post to the Main FSM
5481 ------------------------------------------------------------------------*/
5482 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5483 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5484 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5485 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5486 wdiEventData.pUserData = pUserData;
5487
5488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5489
5490}/*WDI_SetTDLSLinkEstablishReq*/
5491#endif
5492
Jeff Johnson295189b2012-06-20 16:38:30 -07005493/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005495 UMAC wanted to add STA self while opening any new session
5496 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005498
5499
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005502
Jeff Johnson295189b2012-06-20 16:38:30 -07005503 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005504 callback
5505
5506 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 @return Result of the function call
5508*/
5509WDI_Status
5510WDI_AddSTASelfReq
5511(
5512 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5513 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5514 void* pUserData
5515)
5516{
5517 WDI_EventInfoType wdiEventData;
5518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5519
5520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 ------------------------------------------------------------------------*/
5523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5524 {
5525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5526 "WDI API call before module is initialized - Fail request");
5527
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005529 }
5530
5531 /*------------------------------------------------------------------------
5532 Fill in Event data and post to the Main FSM
5533 ------------------------------------------------------------------------*/
5534 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5536 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5537 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 wdiEventData.pUserData = pUserData;
5539
5540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5541
5542}/*WDI_AddSTASelfReq*/
5543
5544
Jeff Johnsone7245742012-09-05 17:12:55 -07005545#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005546/**
5547 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5548 the device of a successful add TSpec negotiation. HW
5549 needs to receive the TSpec Info from the UMAC in order
5550 to configure properly the QoS data traffic. Upon the
5551 call of this API the WLAN DAL will pack and send a HAL
5552 Add TS request message to the lower RIVA sub-system if
5553 DAL is in state STARTED.
5554
5555 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005557
5558 WDI_PostAssocReq must have been called.
5559
5560 @param wdiAddTsReqParams: the add TS parameters as specified by
5561 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005562
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 wdiAddTsRspCb: callback for passing back the response of
5564 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005567 callback
5568
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 @see WDI_PostAssocReq
5570 @return Result of the function call
5571*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005572WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005573WDI_AggrAddTSReq
5574(
5575 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5576 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5577 void* pUserData
5578)
5579{
5580 WDI_EventInfoType wdiEventData;
5581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5582
5583 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005585 ------------------------------------------------------------------------*/
5586 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5587 {
5588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5589 "WDI API call before module is initialized - Fail request");
5590
Jeff Johnsone7245742012-09-05 17:12:55 -07005591 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005592 }
5593
5594 /*------------------------------------------------------------------------
5595 Fill in Event data and post to the Main FSM
5596 ------------------------------------------------------------------------*/
5597 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005598 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5599 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5600 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005601 wdiEventData.pUserData = pUserData;
5602
5603 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5604
5605}/*WDI_AggrAddTSReq*/
5606
5607#endif /* WLAN_FEATURE_VOWIFI_11R */
5608
Jeff Johnson295189b2012-06-20 16:38:30 -07005609/**
5610 @brief WDI_FTMCommandReq
5611 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005612
5613 @param ftmCommandReq: FTM Command Body
5614 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005615 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005616
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 @see
5618 @return Result of the function call
5619*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005620WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005621WDI_FTMCommandReq
5622(
5623 WDI_FTMCommandReqType *ftmCommandReq,
5624 WDI_FTMCommandRspCb ftmCommandRspCb,
5625 void *pUserData
5626)
5627{
5628 WDI_EventInfoType wdiEventData;
5629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5630
5631 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005632 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 ------------------------------------------------------------------------*/
5634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5635 {
5636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5637 "WDI API call before module is initialized - Fail request");
5638
Jeff Johnsone7245742012-09-05 17:12:55 -07005639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005640 }
5641
5642 /*------------------------------------------------------------------------
5643 Fill in Event data and post to the Main FSM
5644 ------------------------------------------------------------------------*/
5645 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5646 wdiEventData.pEventData = (void *)ftmCommandReq;
5647 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5648 wdiEventData.pCBfnc = ftmCommandRspCb;
5649 wdiEventData.pUserData = pUserData;
5650
5651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5652}
Jeff Johnson295189b2012-06-20 16:38:30 -07005653/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005655
5656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005658
5659
5660 @param pwdiResumeReqParams: as specified by
5661 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005662
Jeff Johnson295189b2012-06-20 16:38:30 -07005663 wdiResumeReqRspCb: callback for passing back the response of
5664 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005665
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005667 callback
5668
5669 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 @return Result of the function call
5671*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005672WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005673WDI_HostResumeReq
5674(
5675 WDI_ResumeParamsType* pwdiResumeReqParams,
5676 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5677 void* pUserData
5678)
5679{
5680 WDI_EventInfoType wdiEventData;
5681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5682
5683 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 ------------------------------------------------------------------------*/
5686 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5687 {
5688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5689 "WDI API call before module is initialized - Fail request");
5690
Jeff Johnsone7245742012-09-05 17:12:55 -07005691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005692 }
5693
5694 /*------------------------------------------------------------------------
5695 Fill in Event data and post to the Main FSM
5696 ------------------------------------------------------------------------*/
5697 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005698 wdiEventData.pEventData = pwdiResumeReqParams;
5699 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5700 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005701 wdiEventData.pUserData = pUserData;
5702
5703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5704
5705}/*WDI_HostResumeReq*/
5706
5707/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005709
5710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005712
5713
5714 @param pwdiDelStaSelfReqParams: as specified by
5715 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005716
Jeff Johnson295189b2012-06-20 16:38:30 -07005717 wdiDelStaSelfRspCb: callback for passing back the response of
5718 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005719
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005721 callback
5722
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 @see WDI_PostAssocReq
5724 @return Result of the function call
5725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005727WDI_DelSTASelfReq
5728(
5729 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5730 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5731 void* pUserData
5732)
5733{
5734 WDI_EventInfoType wdiEventData;
5735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5736
5737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 ------------------------------------------------------------------------*/
5740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5741 {
5742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5743 "WDI API call before module is initialized - Fail request");
5744
Jeff Johnsone7245742012-09-05 17:12:55 -07005745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005746 }
5747
5748 /*------------------------------------------------------------------------
5749 Fill in Event data and post to the Main FSM
5750 ------------------------------------------------------------------------*/
5751 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005752 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5753 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5754 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005755 wdiEventData.pUserData = pUserData;
5756
5757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5758
5759}/*WDI_AggrAddTSReq*/
5760
5761/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5763 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005764 Upon the call of this API the WLAN DAL will pack
5765 and send a HAL Set Tx Per Tracking request message to the
5766 lower RIVA sub-system if DAL is in state STARTED.
5767
5768 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005770
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005773
Jeff Johnson295189b2012-06-20 16:38:30 -07005774 pwdiSetTxPerTrackingRspCb: callback for passing back the
5775 response of the set Tx PER Tracking configurations operation received
5776 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005777
Jeff Johnson295189b2012-06-20 16:38:30 -07005778 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 callback
5780
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 @return Result of the function call
5782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005784WDI_SetTxPerTrackingReq
5785(
5786 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5787 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5788 void* pUserData
5789)
5790{
5791 WDI_EventInfoType wdiEventData;
5792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5793
5794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 ------------------------------------------------------------------------*/
5797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5798 {
5799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5800 "WDI API call before module is initialized - Fail request");
5801
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 }
5804
5805 /*------------------------------------------------------------------------
5806 Fill in Event data and post to the Main FSM
5807 ------------------------------------------------------------------------*/
5808 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005809 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 wdiEventData.pUserData = pUserData;
5813
5814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5815
5816}/*WDI_SetTxPerTrackingReq*/
5817
5818/**
5819 @brief WDI_SetTmLevelReq
5820 If HW Thermal condition changed, driver should react based on new
5821 HW thermal condition.
5822
5823 @param pwdiSetTmLevelReq: New thermal condition information
5824
5825 pwdiSetTmLevelRspCb: callback
5826
5827 usrData: user data will be passed back with the
5828 callback
5829
5830 @return Result of the function call
5831*/
5832WDI_Status
5833WDI_SetTmLevelReq
5834(
5835 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5836 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5837 void *usrData
5838)
5839{
5840 WDI_EventInfoType wdiEventData;
5841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5842
5843 /*------------------------------------------------------------------------
5844 Sanity Check
5845 ------------------------------------------------------------------------*/
5846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5847 {
5848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5849 "WDI API call before module is initialized - Fail request");
5850
5851 return WDI_STATUS_E_NOT_ALLOWED;
5852 }
5853
5854 /*------------------------------------------------------------------------
5855 Fill in Event data and post to the Main FSM
5856 ------------------------------------------------------------------------*/
5857 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5858 wdiEventData.pEventData = pwdiSetTmLevelReq;
5859 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5860 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5861 wdiEventData.pUserData = usrData;
5862
5863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5864}
5865
5866/**
5867 @brief WDI_HostSuspendInd
5868
5869 Suspend Indication from the upper layer will be sent
5870 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005871
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005873
5874 @see
5875
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 @return Status of the request
5877*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005878WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005879WDI_HostSuspendInd
5880(
5881 WDI_SuspendParamsType* pwdiSuspendIndParams
5882)
5883{
5884
5885 WDI_EventInfoType wdiEventData;
5886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5887
5888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 ------------------------------------------------------------------------*/
5891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5892 {
5893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5894 "WDI API call before module is initialized - Fail request");
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 }
5898
5899 /*------------------------------------------------------------------------
5900 Fill in Event data and post to the Main FSM
5901 ------------------------------------------------------------------------*/
5902 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005903 wdiEventData.pEventData = pwdiSuspendIndParams;
5904 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5905 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 wdiEventData.pUserData = NULL;
5907
5908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5909
5910}/*WDI_HostSuspendInd*/
5911
5912/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005913 @brief WDI_TrafficStatsInd
5914 Traffic Stats from the upper layer will be sent
5915 down to HAL
5916
5917 @param WDI_TrafficStatsIndType
5918
5919 @see
5920
5921 @return Status of the request
5922*/
5923WDI_Status
5924WDI_TrafficStatsInd
5925(
5926 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5927)
5928{
5929
5930 WDI_EventInfoType wdiEventData;
5931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5932
5933 /*------------------------------------------------------------------------
5934 Sanity Check
5935 ------------------------------------------------------------------------*/
5936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5937 {
5938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5939 "WDI API call before module is initialized - Fail request");
5940
5941 return WDI_STATUS_E_NOT_ALLOWED;
5942 }
5943
5944 /*------------------------------------------------------------------------
5945 Fill in Event data and post to the Main FSM
5946 ------------------------------------------------------------------------*/
5947 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5948 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5949 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5950 wdiEventData.pCBfnc = NULL;
5951 wdiEventData.pUserData = NULL;
5952
5953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5954
5955}/*WDI_TrafficStatsInd*/
5956
Chet Lanctota96bb432013-03-18 10:26:30 -07005957#ifdef WLAN_FEATURE_11W
5958/**
5959 @brief WDI_ExcludeUnencryptedInd
5960 Register with HAL to receive/drop unencrypted frames
5961
5962 @param WDI_ExcludeUnencryptIndType
5963
5964 @see
5965
5966 @return Status of the request
5967*/
5968WDI_Status
5969WDI_ExcludeUnencryptedInd
5970(
5971 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5972)
5973{
5974
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
5979 Sanity Check
5980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
5986 return WDI_STATUS_E_NOT_ALLOWED;
5987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5993 wdiEventData.pEventData = pWdiExcUnencParams;
5994 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5995 wdiEventData.pCBfnc = NULL;
5996 wdiEventData.pUserData = NULL;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_TrafficStatsInd*/
6001#endif
6002
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006003/**
Yue Ma365933a2013-08-14 15:59:08 -07006004 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6005
6006 @param addPeriodicTxPtrnParams: Add Pattern parameters
6007
6008 @see
6009
6010 @return Status of the request
6011*/
6012WDI_Status
6013WDI_AddPeriodicTxPtrnInd
6014(
6015 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6016)
6017{
6018 WDI_EventInfoType wdiEventData;
6019
6020 /*-------------------------------------------------------------------------
6021 Sanity Check
6022 ------------------------------------------------------------------------*/
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
6028 return WDI_STATUS_E_NOT_ALLOWED;
6029 }
6030
6031 /*-------------------------------------------------------------------------
6032 Fill in Event data and post to the Main FSM
6033 ------------------------------------------------------------------------*/
6034 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6035 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6036 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6037 wdiEventData.pCBfnc = NULL;
6038 wdiEventData.pUserData = NULL;
6039
6040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6041}
6042
6043/**
6044 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6045
6046 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6047
6048 @see
6049
6050 @return Status of the request
6051*/
6052WDI_Status
6053WDI_DelPeriodicTxPtrnInd
6054(
6055 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6056)
6057{
6058 WDI_EventInfoType wdiEventData;
6059
6060 /*-------------------------------------------------------------------------
6061 Sanity Check
6062 ------------------------------------------------------------------------*/
6063 if (eWLAN_PAL_FALSE == gWDIInitialized)
6064 {
6065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6066 "WDI API call before module is initialized - Fail request!");
6067
6068 return WDI_STATUS_E_NOT_ALLOWED;
6069 }
6070
6071 /*-------------------------------------------------------------------------
6072 Fill in Event data and post to the Main FSM
6073 ------------------------------------------------------------------------*/
6074 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6075 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6076 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6077 wdiEventData.pCBfnc = NULL;
6078 wdiEventData.pUserData = NULL;
6079
6080 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6081}
6082
6083/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006084 @brief WDI_HALDumpCmdReq
6085 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006086
6087 @param halDumpCmdReqParams: Hal Dump Command Body
6088 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006089 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006090
Jeff Johnson295189b2012-06-20 16:38:30 -07006091 @see
6092 @return Result of the function call
6093*/
6094WDI_Status WDI_HALDumpCmdReq
6095(
6096 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6097 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6098 void *pUserData
6099)
6100{
6101 WDI_EventInfoType wdiEventData;
6102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6103
6104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 ------------------------------------------------------------------------*/
6107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6108 {
6109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6110 "WDI API call before module is initialized - Fail request");
6111
Jeff Johnsone7245742012-09-05 17:12:55 -07006112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006113 }
6114
6115 /*------------------------------------------------------------------------
6116 Fill in Event data and post to the Main FSM
6117 ------------------------------------------------------------------------*/
6118 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6119 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6120 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6121 wdiEventData.pCBfnc = halDumpCmdRspCb;
6122 wdiEventData.pUserData = pUserData;
6123
6124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6125}
6126
Jeff Johnsone7245742012-09-05 17:12:55 -07006127/*============================================================================
6128
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 ============================================================================*/
6132
6133/**
6134 @brief Main FSM Start function for all states except BUSY
6135
Jeff Johnsone7245742012-09-05 17:12:55 -07006136
6137 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 wdiEV: event posted to the main DAL FSM
6139 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006140 structure
6141
Jeff Johnson295189b2012-06-20 16:38:30 -07006142 @see
6143 @return Result of the function call
6144*/
6145WDI_Status
6146WDI_PostMainEvent
6147(
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 WDI_ControlBlockType* pWDICtx,
6149 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006150 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006151
Jeff Johnson295189b2012-06-20 16:38:30 -07006152)
6153{
Jeff Johnsone7245742012-09-05 17:12:55 -07006154 WDI_Status wdiStatus;
6155 WDI_MainFuncType pfnWDIMainEvHdlr;
6156 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6158
6159 /*-------------------------------------------------------------------------
6160 Sanity check
6161 -------------------------------------------------------------------------*/
6162 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6163 ( wdiEV >= WDI_MAX_EVENT ))
6164 {
6165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6166 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6167 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006169 }
6170
6171 /*Access to the global state must be locked */
6172 wpalMutexAcquire(&pWDICtx->wptMutex);
6173
6174 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006175 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006176
6177 wdiOldState = pWDICtx->uGlobalState;
6178
6179 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006180 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6181 response comes from CCPU for the request sent by host:
6182 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 -07006183 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 -07006184 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006185 CCPU:
6186 don't change the state */
6187 if ( WDI_RESPONSE_EVENT != wdiEV)
6188 {
6189 /*Transition to BUSY State - the request is now being processed by the FSM,
6190 if the request fails we shall transition back to the old state, if not
6191 the request will manage its own state transition*/
6192 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6193 }
6194 /* If the state function associated with the EV is NULL it means that this
6195 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006196 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 {
6198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006199 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 }
6203 else
6204 {
6205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006206 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006208 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006209 }
6210
6211 /* If a request handles itself well it will end up in a success or in a
6212 pending
6213 Success - means that the request was processed and the proper state
6214 transition already occurred or will occur when the resp is received
6215 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006216
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 Pending - means the request could not be processed at this moment in time
6218 because the FSM was already busy so no state transition or dequeueing
6219 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006220
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 Success for synchronous case means that the transition may occur and
6222 processing of pending requests may continue - so it should go through
6223 and restores the state and continue processing queued requests*/
6224 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6225 ( WDI_STATUS_PENDING != wdiStatus ))
6226 {
6227 if ( WDI_RESPONSE_EVENT != wdiEV)
6228 {
6229 /*The request has failed or could not be processed - transition back to
6230 the old state - check to see if anything was queued and try to execute
6231 The dequeue logic should post a message to a thread and return - no
6232 actual processing can occur */
6233 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6234 }
6235 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006236
Jeff Johnson295189b2012-06-20 16:38:30 -07006237 }
6238
6239 /* we have completed processing the event */
6240 wpalMutexRelease(&pWDICtx->wptMutex);
6241
Jeff Johnsone7245742012-09-05 17:12:55 -07006242 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006243
6244}/*WDI_PostMainEvent*/
6245
6246
6247/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006248 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006249--------------------------------------------------------------------------*/
6250/**
6251 @brief Main FSM Start function for all states except BUSY
6252
Jeff Johnsone7245742012-09-05 17:12:55 -07006253
6254 @param pWDICtx: pointer to the WLAN DAL context
6255 pEventData: pointer to the event information structure
6256
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 @see
6258 @return Result of the function call
6259*/
6260WDI_Status
6261WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006262(
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 WDI_ControlBlockType* pWDICtx,
6264 WDI_EventInfoType* pEventData
6265)
6266{
6267
6268 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 ----------------------------------------------------------------------*/
6271 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6272 {
6273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006274 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006275 pWDICtx, pEventData);
6276 return WDI_STATUS_E_FAILURE;
6277 }
6278
6279 wpalMutexAcquire(&pWDICtx->wptMutex);
6280
6281 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006282 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006283 ----------------------------------------------------------------------*/
6284 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6285 {
6286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6287 "Control Transport not yet Open - queueing the request");
6288
6289 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006291
6292 wpalMutexRelease(&pWDICtx->wptMutex);
6293 return WDI_STATUS_PENDING;
6294 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006295
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 wpalMutexRelease(&pWDICtx->wptMutex);
6297
6298 /*Return Success*/
6299 return WDI_ProcessRequest( pWDICtx, pEventData );
6300
6301}/*WDI_MainStart*/
6302
6303/**
6304 @brief Main FSM Response function for state INIT
6305
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
6307 @param pWDICtx: pointer to the WLAN DAL context
6308 pEventData: pointer to the event information structure
6309
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 @see
6311 @return Result of the function call
6312*/
6313WDI_Status
6314WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006315(
Jeff Johnson295189b2012-06-20 16:38:30 -07006316 WDI_ControlBlockType* pWDICtx,
6317 WDI_EventInfoType* pEventData
6318)
6319{
6320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006323 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006324
6325 /*Return Success*/
6326 return WDI_STATUS_E_NOT_ALLOWED;
6327}/* WDI_MainRspInit */
6328
6329/**
6330 @brief Main FSM Close function for all states except BUSY
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332
6333 @param pWDICtx: pointer to the WLAN DAL context
6334 pEventData: pointer to the event information structure
6335
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 @see
6337 @return Result of the function call
6338*/
6339WDI_Status
6340WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006341(
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 WDI_ControlBlockType* pWDICtx,
6343 WDI_EventInfoType* pEventData
6344)
6345{
6346
6347 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006348 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006349 ----------------------------------------------------------------------*/
6350 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6351 {
6352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006353 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006354 pWDICtx, pEventData);
6355 return WDI_STATUS_E_FAILURE;
6356 }
6357
6358 /*Return Success*/
6359 return WDI_ProcessRequest( pWDICtx, pEventData );
6360
6361}/*WDI_MainClose*/
6362/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006364--------------------------------------------------------------------------*/
6365/**
6366 @brief Main FSM Start function for state STARTED
6367
Jeff Johnsone7245742012-09-05 17:12:55 -07006368
6369 @param pWDICtx: pointer to the WLAN DAL context
6370 pEventData: pointer to the event information structure
6371
Jeff Johnson295189b2012-06-20 16:38:30 -07006372 @see
6373 @return Result of the function call
6374*/
6375WDI_Status
6376WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006377(
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 WDI_ControlBlockType* pWDICtx,
6379 WDI_EventInfoType* pEventData
6380)
6381{
6382 WDI_StartRspCb wdiStartRspCb = NULL;
6383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6384
6385 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 ----------------------------------------------------------------------*/
6388 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6389 {
6390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006391 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006392 pWDICtx, pEventData);
6393 return WDI_STATUS_E_FAILURE;
6394 }
6395
6396 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 ----------------------------------------------------------------------*/
6399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006401
6402 wpalMutexAcquire(&pWDICtx->wptMutex);
6403
6404 /*Transition back to started because the post function transitioned us to
6405 busy*/
6406 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6407
6408 /*Check to see if any request is pending*/
6409 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006410
Jeff Johnson295189b2012-06-20 16:38:30 -07006411 wpalMutexRelease(&pWDICtx->wptMutex);
6412
6413 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006414 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6415
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 /*Notify UMAC*/
6417 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6418
6419 /*Return Success*/
6420 return WDI_STATUS_SUCCESS;
6421
6422}/*WDI_MainStartStarted*/
6423
6424/**
6425 @brief Main FSM Stop function for state STARTED
6426
Jeff Johnsone7245742012-09-05 17:12:55 -07006427
6428 @param pWDICtx: pointer to the WLAN DAL context
6429 pEventData: pointer to the event information structure
6430
Jeff Johnson295189b2012-06-20 16:38:30 -07006431 @see
6432 @return Result of the function call
6433*/
6434WDI_Status
6435WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006436(
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 WDI_ControlBlockType* pWDICtx,
6438 WDI_EventInfoType* pEventData
6439)
6440{
6441 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006442 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 ----------------------------------------------------------------------*/
6444 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6445 {
6446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 pWDICtx, pEventData);
6449 return WDI_STATUS_E_FAILURE;
6450 }
6451
6452 /*State at this point is BUSY - because we enter this state before posting
6453 an event to the FSM in order to prevent potential race conditions*/
6454
6455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6456 "Processing stop request in FSM");
6457
6458 /*Return Success*/
6459 return WDI_ProcessRequest( pWDICtx, pEventData );
6460
6461}/*WDI_MainStopStarted*/
6462/**
6463 @brief Main FSM Request function for state started
6464
Jeff Johnsone7245742012-09-05 17:12:55 -07006465
6466 @param pWDICtx: pointer to the WLAN DAL context
6467 pEventData: pointer to the event information structure
6468
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 @see
6470 @return Result of the function call
6471*/
6472WDI_Status
6473WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006474(
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 WDI_ControlBlockType* pWDICtx,
6476 WDI_EventInfoType* pEventData
6477)
6478{
6479
6480 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 ----------------------------------------------------------------------*/
6483 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6484 {
6485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 pWDICtx, pEventData);
6488 return WDI_STATUS_E_FAILURE;
6489 }
6490
6491 /*State at this point is BUSY - because we enter this state before posting
6492 an event to the FSM in order to prevent potential race conditions*/
6493
6494 /*Return Success*/
6495 return WDI_ProcessRequest( pWDICtx, pEventData );
6496
6497}/*WDI_MainReqStarted*/
6498
6499/**
6500 @brief Main FSM Response function for all states except INIT
6501
Jeff Johnsone7245742012-09-05 17:12:55 -07006502
6503 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006504 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006505
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 @see
6507 @return Result of the function call
6508*/
6509WDI_Status
6510WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006511(
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 WDI_ControlBlockType* pWDICtx,
6513 WDI_EventInfoType* pEventData
6514)
6515{
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 wpt_boolean expectedResponse;
6518
6519 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 ----------------------------------------------------------------------*/
6522 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6523 {
6524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006525 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006526 pWDICtx, pEventData);
6527 return WDI_STATUS_E_FAILURE;
6528 }
6529
6530 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6531 {
6532 /* we received an expected response */
6533 expectedResponse = eWLAN_PAL_TRUE;
6534
6535 /*We expect that we will transition to started after this processing*/
6536 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6537
6538 /* we are no longer expecting a response */
6539 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6540 }
6541 else
6542 {
6543 /* we received an indication or unexpected response */
6544 expectedResponse = eWLAN_PAL_FALSE;
6545 /* for indications no need to update state from what it is right
6546 now, unless it explicitly does it in the indication handler (say
6547 for device failure ind) */
6548 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6549 }
6550
6551 /*Process the response and indication */
6552 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6553
6554 /*Lock the CB as we are about to do a state transition*/
6555 wpalMutexAcquire(&pWDICtx->wptMutex);
6556
6557 /*Transition to the expected state after the response processing
6558 - this should always be started state with the following exceptions:
6559 1. processing of a failed start response
6560 2. device failure detected while processing response
6561 3. stop response received*/
6562 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006563
Jeff Johnson295189b2012-06-20 16:38:30 -07006564 /*Dequeue request that may have been queued while we were waiting for the
6565 response */
6566 if ( expectedResponse )
6567 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006568 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 }
6570
6571 wpalMutexRelease(&pWDICtx->wptMutex);
6572
6573 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006575
6576}/*WDI_MainRsp*/
6577
6578/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006580--------------------------------------------------------------------------*/
6581/**
6582 @brief Main FSM Stop function for state STOPPED
6583
Jeff Johnsone7245742012-09-05 17:12:55 -07006584
6585 @param pWDICtx: pointer to the WLAN DAL context
6586 pEventData: pointer to the event information structure
6587
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 @see
6589 @return Result of the function call
6590*/
6591WDI_Status
6592WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006593(
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 WDI_ControlBlockType* pWDICtx,
6595 WDI_EventInfoType* pEventData
6596)
6597{
6598 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006599 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006600 ----------------------------------------------------------------------*/
6601 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6602 {
6603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006604 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 pWDICtx, pEventData);
6606 return WDI_STATUS_E_FAILURE;
6607 }
6608
6609 /*We should normally not get a STOP request if we are already stopped
6610 since we should normally be stopped by the UMAC. However in some
6611 error situations we put ourselves in the stopped state without the
6612 UMAC knowing, so when we get a STOP request in this state we still
6613 process it since we need to clean up the underlying state */
6614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6615 "Processing stop request while stopped in FSM");
6616
6617 /*Return Success*/
6618 return WDI_ProcessRequest( pWDICtx, pEventData );
6619
6620}/*WDI_MainStopStopped*/
6621
6622/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006624--------------------------------------------------------------------------*/
6625/**
6626 @brief Main FSM Start function for state BUSY
6627
Jeff Johnsone7245742012-09-05 17:12:55 -07006628
6629 @param pWDICtx: pointer to the WLAN DAL context
6630 pEventData: pointer to the event information structure
6631
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 @see
6633 @return Result of the function call
6634*/
6635WDI_Status
6636WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006637(
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 WDI_ControlBlockType* pWDICtx,
6639 WDI_EventInfoType* pEventData
6640)
6641{
6642 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 ----------------------------------------------------------------------*/
6645 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6646 {
6647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 pWDICtx, pEventData);
6650 return WDI_STATUS_E_FAILURE;
6651 }
6652
6653 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006655 ----------------------------------------------------------------------*/
6656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6657 "WDI Busy state - queue start request");
6658
6659 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006660 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006661
6662 /*Return Success*/
6663 return WDI_STATUS_PENDING;
6664}/*WDI_MainStartBusy*/
6665
6666/**
6667 @brief Main FSM Stop function for state BUSY
6668
Jeff Johnsone7245742012-09-05 17:12:55 -07006669
6670 @param pWDICtx: pointer to the WLAN DAL context
6671 pEventData: pointer to the event information structure
6672
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 @see
6674 @return Result of the function call
6675*/
6676WDI_Status
6677WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006678(
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 WDI_ControlBlockType* pWDICtx,
6680 WDI_EventInfoType* pEventData
6681)
6682{
6683 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006685 ----------------------------------------------------------------------*/
6686 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6687 {
6688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 pWDICtx, pEventData);
6691 return WDI_STATUS_E_FAILURE;
6692 }
6693
6694 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006696 ----------------------------------------------------------------------*/
6697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6698 "WDI Busy state - queue stop request");
6699
Jeff Johnsone7245742012-09-05 17:12:55 -07006700 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006702
Jeff Johnson295189b2012-06-20 16:38:30 -07006703}/*WDI_MainStopBusy*/
6704
6705/**
6706 @brief Main FSM Request function for state BUSY
6707
Jeff Johnsone7245742012-09-05 17:12:55 -07006708
6709 @param pWDICtx: pointer to the WLAN DAL context
6710 pEventData: pointer to the event information structure
6711
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 @see
6713 @return Result of the function call
6714*/
6715WDI_Status
6716WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006717(
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 WDI_ControlBlockType* pWDICtx,
6719 WDI_EventInfoType* pEventData
6720)
6721{
6722 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 ----------------------------------------------------------------------*/
6725 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6726 {
6727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 pWDICtx, pEventData);
6730 return WDI_STATUS_E_FAILURE;
6731 }
6732
6733 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006734 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006735 ----------------------------------------------------------------------*/
6736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6737 "WDI Busy state - queue request %d because waiting for response %d",
6738 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6739
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006742
Jeff Johnson295189b2012-06-20 16:38:30 -07006743}/*WDI_MainReqBusy*/
6744/**
6745 @brief Main FSM Close function for state BUSY
6746
Jeff Johnsone7245742012-09-05 17:12:55 -07006747
6748 @param pWDICtx: pointer to the WLAN DAL context
6749 pEventData: pointer to the event information structure
6750
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 @see
6752 @return Result of the function call
6753*/
6754WDI_Status
6755WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006756(
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 WDI_ControlBlockType* pWDICtx,
6758 WDI_EventInfoType* pEventData
6759)
6760{
6761 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 ----------------------------------------------------------------------*/
6764 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 pWDICtx, pEventData);
6769 return WDI_STATUS_E_FAILURE;
6770 }
6771
6772 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 ----------------------------------------------------------------------*/
6775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6776 "WDI Busy state - queue close request");
6777
Jeff Johnsone7245742012-09-05 17:12:55 -07006778 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006780
Jeff Johnson295189b2012-06-20 16:38:30 -07006781}/*WDI_MainCloseBusy*/
6782
6783/**
6784 @brief Main FSM Shutdown function for INIT & STARTED states
6785
6786
6787 @param pWDICtx: pointer to the WLAN DAL context
6788 pEventData: pointer to the event information structure
6789
6790 @see
6791 @return Result of the function call
6792*/
6793WDI_Status
6794WDI_MainShutdown
6795(
6796 WDI_ControlBlockType* pWDICtx,
6797 WDI_EventInfoType* pEventData
6798)
6799{
6800 /*--------------------------------------------------------------------
6801 Sanity Check
6802 ----------------------------------------------------------------------*/
6803 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6804 {
6805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6806 "Invalid parameters on Main Start %x %x",
6807 pWDICtx, pEventData);
6808 return WDI_STATUS_E_FAILURE;
6809 }
6810
6811 /*State at this point is BUSY - because we enter this state before posting
6812 an event to the FSM in order to prevent potential race conditions*/
6813
6814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6815 "Processing shutdown request in FSM");
6816
6817 /*Return Success*/
6818 return WDI_ProcessRequest( pWDICtx, pEventData );
6819
6820}/*WDI_MainShutdown*/
6821
6822/**
6823 @brief Main FSM Shutdown function for BUSY state
6824
6825
6826 @param pWDICtx: pointer to the WLAN DAL context
6827 pEventData: pointer to the event information structure
6828
6829 @see
6830 @return Result of the function call
6831*/
6832WDI_Status
6833WDI_MainShutdownBusy
6834(
6835 WDI_ControlBlockType* pWDICtx,
6836 WDI_EventInfoType* pEventData
6837)
6838{
6839 /*--------------------------------------------------------------------
6840 Sanity Check
6841 ----------------------------------------------------------------------*/
6842 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6843 {
6844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6845 "Invalid parameters on Main Start %x %x",
6846 pWDICtx, pEventData);
6847 return WDI_STATUS_E_FAILURE;
6848 }
6849
6850 /* If you are waiting for a HAL response at this stage, you are not
6851 * going to get it. Riva is already shutdown/crashed.
6852 */
6853 wpalTimerStop(&gWDICb.wptResponseTimer);
6854
6855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6856 "Processing shutdown request in FSM: Busy state ");
6857
6858 return WDI_ProcessRequest( pWDICtx, pEventData );
6859
6860}/*WDI_MainShutdownBusy*/
6861
6862
Jeff Johnsone7245742012-09-05 17:12:55 -07006863/*=======================================================================
6864
Jeff Johnson295189b2012-06-20 16:38:30 -07006865 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006866
Jeff Johnson295189b2012-06-20 16:38:30 -07006867*=======================================================================*/
6868
6869/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006871========================================================================*/
6872/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006875
6876 @param pWDICtx: pointer to the WLAN DAL context
6877 pEventData: pointer to the event information structure
6878
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 @see
6880 @return Result of the function call
6881*/
6882WDI_Status
6883WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006884(
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 WDI_ControlBlockType* pWDICtx,
6886 WDI_EventInfoType* pEventData
6887)
6888{
6889 WDI_StartReqParamsType* pwdiStartParams = NULL;
6890 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006891 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 wpt_uint16 usDataOffset = 0;
6893 wpt_uint16 usSendSize = 0;
6894
Jeff Johnsone7245742012-09-05 17:12:55 -07006895 tHalMacStartReqMsg halStartReq;
6896 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6898
6899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 -------------------------------------------------------------------------*/
6902 if (( NULL == pEventData ) ||
6903 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6904 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6905 {
6906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 }
6911
6912 /*-----------------------------------------------------------------------
6913 Get message buffer
6914 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006915 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 pwdiStartParams->usConfigBufferLen;
6917
Jeff Johnsone7245742012-09-05 17:12:55 -07006918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006919 usLen,
6920 &pSendBuffer, &usDataOffset, &usSendSize))||
6921 ( usSendSize < (usDataOffset + usLen )))
6922 {
6923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6924 "Unable to get send buffer in start req %x %x %x",
6925 pEventData, pwdiStartParams, wdiStartRspCb);
6926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006928 }
6929
6930 /*-----------------------------------------------------------------------
6931 Fill in the message
6932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006933 halStartReq.startReqParams.driverType =
6934 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006935
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 halStartReq.startReqParams.uConfigBufferLen =
6937 pwdiStartParams->usConfigBufferLen;
6938 wpalMemoryCopy( pSendBuffer+usDataOffset,
6939 &halStartReq.startReqParams,
6940 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006941
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 usDataOffset += sizeof(halStartReq.startReqParams);
6943 wpalMemoryCopy( pSendBuffer+usDataOffset,
6944 pwdiStartParams->pConfigBuffer,
6945 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006946
6947 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006949
6950 /*Save Low Level Ind CB and associated user data - it will be used further
6951 on when an indication is coming from the lower MAC*/
6952 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006954
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6961
Jeff Johnsone7245742012-09-05 17:12:55 -07006962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963}/*WDI_ProcessStartReq*/
6964
6965/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006966 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006967 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006968
6969 @param pWDICtx: pointer to the WLAN DAL context
6970 pEventData: pointer to the event information structure
6971
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 @see
6973 @return Result of the function call
6974*/
6975WDI_Status
6976WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006977(
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WDI_ControlBlockType* pWDICtx,
6979 WDI_EventInfoType* pEventData
6980)
6981{
6982 WDI_StopReqParamsType* pwdiStopParams = NULL;
6983 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006984 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006985 wpt_uint16 usDataOffset = 0;
6986 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006987 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6990
6991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 -------------------------------------------------------------------------*/
6994 if (( NULL == pEventData ) ||
6995 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6996 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6997 {
6998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007001 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 }
7003
7004 /*-----------------------------------------------------------------------
7005 Get message buffer
7006 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 sizeof(halStopReq.stopReqParams),
7009 &pSendBuffer, &usDataOffset, &usSendSize))||
7010 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7011 {
7012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7013 "Unable to get send buffer in stop req %x %x %x",
7014 pEventData, pwdiStopParams, wdiStopRspCb);
7015 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007016 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 }
7018
7019 /*-----------------------------------------------------------------------
7020 Fill in the message
7021 -----------------------------------------------------------------------*/
7022 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7023 pwdiStopParams->wdiStopReason);
7024
Jeff Johnsone7245742012-09-05 17:12:55 -07007025 wpalMemoryCopy( pSendBuffer+usDataOffset,
7026 &halStopReq.stopReqParams,
7027 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007028
7029 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007030 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007031
7032 /*! TO DO: stop the data services */
7033 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7034 {
7035 /*Stop the STA Table !UT- check this logic again
7036 It is safer to do it here than on the response - because a stop is imminent*/
7037 WDI_STATableStop(pWDICtx);
7038
7039 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007040 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7041 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007042 {
7043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7044 "WDI Init failed to reset power state event");
7045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007047 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007048 }
7049 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007050 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7051 if( eWLAN_PAL_STATUS_SUCCESS != status )
7052 {
7053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7054 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7055 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007056 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007057 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007059 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007061 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7062 WDI_SET_POWER_STATE_TIMEOUT);
7063 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 {
7065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7066 "WDI Init failed to wait on an event");
7067
Jeff Johnsone7245742012-09-05 17:12:55 -07007068 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007069 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007070 }
7071 }
7072
7073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7078
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007079fail:
7080 // Release the message buffer so we don't leak
7081 wpalMemoryFree(pSendBuffer);
7082
7083failRequest:
7084 //WDA should have failure check to avoid the memory leak
7085 return WDI_STATUS_E_FAILURE;
7086
Jeff Johnson295189b2012-06-20 16:38:30 -07007087}/*WDI_ProcessStopReq*/
7088
7089/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007092
7093 @param pWDICtx: pointer to the WLAN DAL context
7094 pEventData: pointer to the event information structure
7095
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 @see
7097 @return Result of the function call
7098*/
7099WDI_Status
7100WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007101(
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 WDI_ControlBlockType* pWDICtx,
7103 WDI_EventInfoType* pEventData
7104)
7105{
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7108
7109 /*Lock control block for cleanup*/
7110 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007111
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 /*Clear all pending request*/
7113 WDI_ClearPendingRequests(pWDICtx);
7114
7115 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007117
7118 /* Close Data transport*/
7119 /* FTM mode does not open Data Path */
7120 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7121 {
7122 WDTS_Close(pWDICtx);
7123 }
7124
7125 /*Close the STA Table !UT- check this logic again*/
7126 WDI_STATableClose(pWDICtx);
7127
7128 /*close the PAL */
7129 wptStatus = wpalClose(pWDICtx->pPALContext);
7130 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7131 {
7132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7133 "Failed to wpal Close %d", wptStatus);
7134 WDI_ASSERT(0);
7135 }
7136
7137 /*Transition back to init state*/
7138 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7139
7140 wpalMutexRelease(&pWDICtx->wptMutex);
7141
7142 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
Jeff Johnsone7245742012-09-05 17:12:55 -07007145 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007146}/*WDI_ProcessCloseReq*/
7147
7148
7149/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007151===========================================================================*/
7152
7153/**
7154 @brief Process Init Scan Request function (called when Main FSM
7155 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007156
7157 @param pWDICtx: pointer to the WLAN DAL context
7158 pEventData: pointer to the event information structure
7159
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 @see
7161 @return Result of the function call
7162*/
7163WDI_Status
7164WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007165(
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 WDI_ControlBlockType* pWDICtx,
7167 WDI_EventInfoType* pEventData
7168)
7169{
7170 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7171 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 wpt_uint16 usDataOffset = 0;
7174 wpt_uint16 usSendSize = 0;
7175 wpt_uint8 i = 0;
7176
7177 tHalInitScanReqMsg halInitScanReqMsg;
7178
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 * It shold be removed once host and riva changes are in sync*/
7181 tHalInitScanConReqMsg halInitScanConReqMsg;
7182
7183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7184
7185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007187 -------------------------------------------------------------------------*/
7188 if (( NULL == pEventData ) ||
7189 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7190 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7191 {
7192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007196 }
7197
7198#if 0
7199 wpalMutexAcquire(&pWDICtx->wptMutex);
7200 /*-----------------------------------------------------------------------
7201 Check to see if SCAN is already in progress - if so reject the req
7202 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 -----------------------------------------------------------------------*/
7205 if ( pWDICtx->bScanInProgress )
7206 {
7207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7208 "Scan is already in progress - subsequent scan is not allowed"
7209 " until the first scan completes");
7210
7211 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007213 }
7214
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7216 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007217
7218 wpalMutexRelease(&pWDICtx->wptMutex);
7219#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007220 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 * It shold be removed once host and riva changes are in sync*/
7224 /*-----------------------------------------------------------------------
7225 Get message buffer
7226 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 sizeof(halInitScanConReqMsg.initScanParams),
7229 &pSendBuffer, &usDataOffset, &usSendSize))||
7230 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7231 {
7232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7233 "Unable to get send buffer in init scan req %x %x %x",
7234 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 }
7238
7239
7240 /*-----------------------------------------------------------------------
7241 Fill in the message
7242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7245
7246 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7247 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7248
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007253 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7255
7256 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7257 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7258
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7260 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007261
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7264
7265 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7266 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7269 }
7270
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 wpalMemoryCopy( pSendBuffer+usDataOffset,
7272 &halInitScanConReqMsg.initScanParams,
7273 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 }
7275 else
7276 {
7277 /*-----------------------------------------------------------------------
7278 Get message buffer
7279 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007280 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007281 sizeof(halInitScanReqMsg.initScanParams),
7282 &pSendBuffer, &usDataOffset, &usSendSize))||
7283 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7284 {
7285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7286 "Unable to get send buffer in init scan req %x %x %x",
7287 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7288 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
7293 /*-----------------------------------------------------------------------
7294 Fill in the message
7295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7298
7299 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7300 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7301
Jeff Johnsone7245742012-09-05 17:12:55 -07007302 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7308
7309 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7310 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7311
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7314
7315 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7316 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7319 }
7320
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 wpalMemoryCopy( pSendBuffer+usDataOffset,
7322 &halInitScanReqMsg.initScanParams,
7323 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 }
7325
7326 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007328
7329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007330 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7334
7335}/*WDI_ProcessInitScanReq*/
7336
7337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007340
7341 @param pWDICtx: pointer to the WLAN DAL context
7342 pEventData: pointer to the event information structure
7343
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 @see
7345 @return Result of the function call
7346*/
7347WDI_Status
7348WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007349(
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 WDI_ControlBlockType* pWDICtx,
7351 WDI_EventInfoType* pEventData
7352)
7353{
7354 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7355 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 wpt_uint16 usDataOffset = 0;
7358 wpt_uint16 usSendSize = 0;
7359
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7362
7363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 -------------------------------------------------------------------------*/
7366 if (( NULL == pEventData ) ||
7367 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7368 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7369 {
7370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 }
7375
7376#if 0
7377 wpalMutexAcquire(&pWDICtx->wptMutex);
7378 /*-----------------------------------------------------------------------
7379 Check to see if SCAN is already in progress - start scan is only
7380 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007383 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007384 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7385 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7386 {
7387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7388 "Scan start not allowed in this state %d %d",
7389 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007390
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 }
7394
Jeff Johnsone7245742012-09-05 17:12:55 -07007395 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007396
7397 wpalMutexRelease(&pWDICtx->wptMutex);
7398#endif
7399
7400 /*-----------------------------------------------------------------------
7401 Get message buffer
7402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 sizeof(halStartScanReqMsg.startScanParams),
7405 &pSendBuffer, &usDataOffset, &usSendSize))||
7406 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7407 {
7408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7409 "Unable to get send buffer in start scan req %x %x %x",
7410 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 }
7414
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 wpalMemoryCopy( pSendBuffer+usDataOffset,
7418 &halStartScanReqMsg.startScanParams,
7419 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007420
7421 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007422 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007423
7424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7429}/*WDI_ProcessStartScanReq*/
7430
7431
7432/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007435
7436 @param pWDICtx: pointer to the WLAN DAL context
7437 pEventData: pointer to the event information structure
7438
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 @see
7440 @return Result of the function call
7441*/
7442WDI_Status
7443WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007444(
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 WDI_ControlBlockType* pWDICtx,
7446 WDI_EventInfoType* pEventData
7447)
7448{
7449 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7450 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 wpt_uint16 usDataOffset = 0;
7453 wpt_uint16 usSendSize = 0;
7454
Jeff Johnsone7245742012-09-05 17:12:55 -07007455 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7457
7458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 -------------------------------------------------------------------------*/
7461 if (( NULL == pEventData ) ||
7462 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7463 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7464 {
7465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 }
7470
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7472 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 * forwarded to HAL and result in hang*/
7474#if 0
7475 wpalMutexAcquire(&pWDICtx->wptMutex);
7476 /*-----------------------------------------------------------------------
7477 Check to see if SCAN is already in progress - end scan is only
7478 allowed when a scan is ongoing and the state of the scan procedure
7479 is started
7480 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007481 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7483 {
7484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7485 "End start not allowed in this state %d %d",
7486 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007487
Jeff Johnson295189b2012-06-20 16:38:30 -07007488 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 }
7491
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007493
7494 wpalMutexRelease(&pWDICtx->wptMutex);
7495#endif
7496
7497 /*-----------------------------------------------------------------------
7498 Get message buffer
7499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 sizeof(halEndScanReqMsg.endScanParams),
7502 &pSendBuffer, &usDataOffset, &usSendSize))||
7503 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7504 {
7505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7506 "Unable to get send buffer in start scan req %x %x %x",
7507 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 }
7511
7512 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7513
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 wpalMemoryCopy( pSendBuffer+usDataOffset,
7515 &halEndScanReqMsg.endScanParams,
7516 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007517
7518 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007520
7521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7526}/*WDI_ProcessEndScanReq*/
7527
7528
7529/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007532
7533 @param pWDICtx: pointer to the WLAN DAL context
7534 pEventData: pointer to the event information structure
7535
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 @see
7537 @return Result of the function call
7538*/
7539WDI_Status
7540WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007541(
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 WDI_ControlBlockType* pWDICtx,
7543 WDI_EventInfoType* pEventData
7544)
7545{
7546 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7547 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 wpt_uint16 usDataOffset = 0;
7550 wpt_uint16 usSendSize = 0;
7551 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007552 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7555
7556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 -------------------------------------------------------------------------*/
7559 if (( NULL == pEventData ) ||
7560 ( NULL == pEventData->pEventData) ||
7561 ( NULL == pEventData->pCBfnc))
7562 {
7563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 }
7568
7569 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7570 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007571 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7572 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 * forwarded to HAL and result in hang*/
7574#if 0
7575 wpalMutexAcquire(&pWDICtx->wptMutex);
7576 /*-----------------------------------------------------------------------
7577 Check to see if SCAN is already in progress
7578 Finish scan gets invoked any scan states. ie. abort scan
7579 It should be allowed in any states.
7580 -----------------------------------------------------------------------*/
7581 if ( !pWDICtx->bScanInProgress )
7582 {
7583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7584 "Finish start not allowed in this state %d",
7585 pWDICtx->bScanInProgress );
7586
7587 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007588 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 }
7590
7591 /*-----------------------------------------------------------------------
7592 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7596 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 wpalMutexRelease(&pWDICtx->wptMutex);
7598#endif
7599
7600 if ( pWDICtx->bInBmps )
7601 {
7602 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007603 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7604 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7605 {
7606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7607 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7608 WDI_ASSERT(0);
7609 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 }
7611
7612 /*-----------------------------------------------------------------------
7613 Get message buffer
7614 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 sizeof(halFinishScanReqMsg.finishScanParams),
7617 &pSendBuffer, &usDataOffset, &usSendSize))||
7618 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7619 {
7620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7621 "Unable to get send buffer in start scan req %x %x %x",
7622 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 }
7626
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7629
Jeff Johnsone7245742012-09-05 17:12:55 -07007630 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007631 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7632
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7635
7636 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7637 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7638
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7645
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7648
7649 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7650 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7653 }
7654
7655 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7656 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7657
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 wpalMemoryCopy( pSendBuffer+usDataOffset,
7659 &halFinishScanReqMsg.finishScanParams,
7660 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007661
7662 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007664
7665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7670}/*WDI_ProcessFinishScanReq*/
7671
7672
7673/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007675==========================================================================*/
7676/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 @brief Process BSS Join for a given Session
7678
7679 @param pWDICtx: pointer to the WLAN DAL context
7680 pEventData: pointer to the event information structure
7681
Jeff Johnson295189b2012-06-20 16:38:30 -07007682 @see
7683 @return Result of the function call
7684*/
7685WDI_Status
7686WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007687(
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 WDI_ControlBlockType* pWDICtx,
7689 WDI_JoinReqParamsType* pwdiJoinParams,
7690 WDI_JoinRspCb wdiJoinRspCb,
7691 void* pUserData
7692)
7693{
7694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 wpt_uint16 usDataOffset = 0;
7697 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7702
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007703 wpalMutexAcquire(&pWDICtx->wptMutex);
7704
Jeff Johnson295189b2012-06-20 16:38:30 -07007705 /*------------------------------------------------------------------------
7706 Check to see if we have any session with this BSSID already stored, we
7707 should not
7708 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7710 pwdiJoinParams->wdiReqInfo.macBSSID,
7711 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007712
7713 if ( NULL != pBSSSes )
7714 {
7715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007716 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7717 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007718
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007719 /*reset the bAssociationInProgress otherwise the next
7720 *join request will be queued*/
7721 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7722 wpalMutexRelease(&pWDICtx->wptMutex);
7723 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 }
7725
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 if ( NULL == pBSSSes )
7731 {
7732
7733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7734 "DAL has no free sessions - cannot run another join");
7735
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007736 /*reset the bAssociationInProgress otherwise the next
7737 *join request will be queued*/
7738 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 }
7742
7743 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7745 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 WDI_MAC_ADDR_LEN);
7747
7748 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007751
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 wpalMutexRelease(&pWDICtx->wptMutex);
7753
7754 /*-----------------------------------------------------------------------
7755 Get message buffer
7756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 sizeof(halJoinReqMsg.joinReqParams),
7759 &pSendBuffer, &usDataOffset, &usSendSize))||
7760 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7761 {
7762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7763 "Unable to get send buffer in join req %x %x %x",
7764 pUserData, pwdiJoinParams, wdiJoinRspCb);
7765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 }
7768
7769 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007771
7772 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 pwdiJoinParams->wdiReqInfo.macSTASelf,
7774 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007775
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7778
7779 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7780
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007781#ifdef WLAN_FEATURE_VOWIFI
7782 halJoinReqMsg.joinReqParams.maxTxPower =
7783 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7784#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7787#endif
7788
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7791 wdiSecondaryChannelOffset);
7792
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 wpalMemoryCopy( pSendBuffer+usDataOffset,
7794 &halJoinReqMsg.joinReqParams,
7795 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007796
7797 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007798 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007799
7800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7804 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007805
7806}/*WDI_ProcessBSSSessionJoinReq*/
7807
7808/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007809 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007811
7812 @param pWDICtx: pointer to the WLAN DAL context
7813 pEventData: pointer to the event information structure
7814
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 @see
7816 @return Result of the function call
7817*/
7818WDI_Status
7819WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007820(
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 WDI_ControlBlockType* pWDICtx,
7822 WDI_EventInfoType* pEventData
7823)
7824{
7825 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7826 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7827 WDI_JoinRspCb wdiJoinRspCb = NULL;
7828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7829
7830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 -------------------------------------------------------------------------*/
7833 if (( NULL == pEventData ) ||
7834 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7835 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7836 {
7837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007842
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 /*-------------------------------------------------------------------------
7844 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 -------------------------------------------------------------------------*/
7847 wpalMutexAcquire(&pWDICtx->wptMutex);
7848
7849 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7850 {
7851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7852 "Association is currently in progress, queueing new join req");
7853
7854 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 pwdiJoinParams->wdiReqInfo.macBSSID);
7857
7858 wpalMutexRelease(&pWDICtx->wptMutex);
7859
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 }
7862
7863 /*Starting a new association */
7864 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7865 wpalMutexRelease(&pWDICtx->wptMutex);
7866
7867 /*Process the Join Request*/
7868 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7869 wdiJoinRspCb,pEventData->pUserData);
7870
7871}/*WDI_ProcessJoinReq*/
7872
7873
7874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007877
7878 @param pWDICtx: pointer to the WLAN DAL context
7879 pEventData: pointer to the event information structure
7880
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 @see
7882 @return Result of the function call
7883*/
7884WDI_Status
7885WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007886(
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 WDI_ControlBlockType* pWDICtx,
7888 WDI_EventInfoType* pEventData
7889)
7890{
7891 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7892 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007895 wpt_uint16 uMsgSize = 0;
7896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 wpt_uint16 usDataOffset = 0;
7898 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007900
Jeff Johnsone7245742012-09-05 17:12:55 -07007901 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7903
7904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 -------------------------------------------------------------------------*/
7907 if (( NULL == pEventData ) ||
7908 ( NULL == pEventData->pEventData ) ||
7909 ( NULL == pEventData->pCBfnc ))
7910 {
7911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 }
7916
7917 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7918 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7919 /*-------------------------------------------------------------------------
7920 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 -------------------------------------------------------------------------*/
7923 wpalMutexAcquire(&pWDICtx->wptMutex);
7924
7925 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7929 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7930 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007931
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 {
7934#ifdef WLAN_FEATURE_VOWIFI_11R
7935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 if ( NULL == pBSSSes )
7940 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007941
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7943 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007944
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007948
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7951 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007953
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7957#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 * Request in case of IBSS*/
7960 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7961 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7962 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7963 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7964 {
7965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007968 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007969 if ( NULL == pBSSSes )
7970 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007971
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7973 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007974
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007978
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7981 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007983
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7987 }
7988 else
7989 {
7990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7992 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7993 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7994
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 /* for IBSS testing */
7996 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 }
7999#endif
8000 }
8001
8002 /*------------------------------------------------------------------------
8003 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 ------------------------------------------------------------------------*/
8006 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8007 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8009 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8010 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8011 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008012
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008014
8015 wpalMutexRelease(&pWDICtx->wptMutex);
8016
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 }
8019
8020 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8022 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 sizeof(pWDICtx->wdiCachedConfigBssReq));
8024
8025 wpalMutexRelease(&pWDICtx->wptMutex);
8026
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8028#ifdef WLAN_FEATURE_11AC
8029 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008030 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 else
8032#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008033 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008034
8035 /*-----------------------------------------------------------------------
8036 Get message buffer
8037 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8040 ( usSendSize < (usDataOffset + uMsgSize )))
8041 {
8042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8043 "Unable to get send buffer in config bss req %x %x %x",
8044 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 }
8048
8049 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008050#ifdef WLAN_FEATURE_11AC
8051 if (WDI_getFwWlanFeatCaps(DOT11AC))
8052 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8053 &pwdiConfigBSSParams->wdiReqInfo);
8054 else
8055#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 &pwdiConfigBSSParams->wdiReqInfo);
8058
8059 /* Need to fill in the STA Index to invalid, since at this point we have not
8060 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008062
8063 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8065
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008066#ifdef WLAN_FEATURE_11AC
8067 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8068 wpalMemoryCopy( pSendBuffer+usDataOffset,
8069 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8070 uMsgSize);
8071 }else
8072#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008073 {
8074 if ( uMsgSize <= sizeof(tConfigBssParams) )
8075 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008076 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008077 &halConfigBssReqMsg.uBssParams.configBssParams,
8078 uMsgSize);
8079 }
8080 else
8081 {
8082 return WDI_STATUS_E_FAILURE;
8083 }
8084 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008085
8086 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088
8089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8093 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 WDI_CONFIG_BSS_RESP);
8095
8096}/*WDI_ProcessConfigBSSReq*/
8097
8098
8099/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008102
8103 @param pWDICtx: pointer to the WLAN DAL context
8104 pEventData: pointer to the event information structure
8105
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 @see
8107 @return Result of the function call
8108*/
8109WDI_Status
8110WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008111(
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 WDI_ControlBlockType* pWDICtx,
8113 WDI_EventInfoType* pEventData
8114)
8115{
8116 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8117 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008121 wpt_uint16 usDataOffset = 0;
8122 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008124
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8127
8128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 -------------------------------------------------------------------------*/
8131 if (( NULL == pEventData ) ||
8132 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8133 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8134 {
8135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 }
8140
8141 /*-------------------------------------------------------------------------
8142 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 -------------------------------------------------------------------------*/
8145 wpalMutexAcquire(&pWDICtx->wptMutex);
8146
8147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8151 pwdiDelBSSParams->ucBssIdx,
8152 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008153
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 {
8156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 "%s: BSS does not yet exist. ucBssIdx %d",
8158 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008159
8160 wpalMutexRelease(&pWDICtx->wptMutex);
8161
8162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008164
8165 /*------------------------------------------------------------------------
8166 Check if this BSS is being currently processed or queued,
8167 if queued - queue the new request as well
8168 ------------------------------------------------------------------------*/
8169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8172 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8173 __func__, pwdiDelBSSParams->ucBssIdx);
8174
8175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8176
8177 wpalMutexRelease(&pWDICtx->wptMutex);
8178
8179 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008181
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 /*-----------------------------------------------------------------------
8183 If we receive a Del BSS request for an association that is already in
8184 progress, it indicates that the assoc has failed => we no longer have
8185 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 -----------------------------------------------------------------------*/
8188 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8189 {
8190 /*We can switch to false here because even if a subsequent Join comes in
8191 it will only be processed when DAL transitions out of BUSY state which
8192 happens when the Del BSS request comes */
8193 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8194
8195 /*Former association is complete - prepare next pending assoc for
8196 processing */
8197 WDI_DequeueAssocRequest(pWDICtx);
8198 }
8199
8200 wpalMutexRelease(&pWDICtx->wptMutex);
8201 /*-----------------------------------------------------------------------
8202 Get message buffer
8203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 sizeof(halBssReqMsg.deleteBssParams),
8206 &pSendBuffer, &usDataOffset, &usSendSize))||
8207 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8208 {
8209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8210 "Unable to get send buffer in start req %x %x %x",
8211 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 }
8215
8216 /*Fill in the message request structure*/
8217
8218 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008219 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008220
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 wpalMemoryCopy( pSendBuffer+usDataOffset,
8222 &halBssReqMsg.deleteBssParams,
8223 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008224
8225 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008227
Jeff Johnsone7245742012-09-05 17:12:55 -07008228
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8234
Jeff Johnsone7245742012-09-05 17:12:55 -07008235
Jeff Johnson295189b2012-06-20 16:38:30 -07008236}/*WDI_ProcessDelBSSReq*/
8237
8238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008241
8242 @param pWDICtx: pointer to the WLAN DAL context
8243 pEventData: pointer to the event information structure
8244
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 @see
8246 @return Result of the function call
8247*/
8248WDI_Status
8249WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008250(
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 WDI_ControlBlockType* pWDICtx,
8252 WDI_EventInfoType* pEventData
8253)
8254{
8255 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8256 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 wpt_uint16 usDataOffset = 0;
8261 wpt_uint16 usSendSize = 0;
8262 wpt_uint16 uMsgSize = 0;
8263 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8268
8269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 -------------------------------------------------------------------------*/
8272 if (( NULL == pEventData ) ||
8273 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8274 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8275 {
8276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 }
8281
8282 /*-------------------------------------------------------------------------
8283 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 -------------------------------------------------------------------------*/
8286 wpalMutexAcquire(&pWDICtx->wptMutex);
8287
8288 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8292 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8293 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008294
8295 if ( NULL == pBSSSes )
8296 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8298 "%s: Association sequence for this BSS does not yet exist - "
8299 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8300 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008301
8302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 }
8305
8306 /*------------------------------------------------------------------------
8307 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 ------------------------------------------------------------------------*/
8310 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8313 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8314 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008315
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008317
8318 wpalMutexRelease(&pWDICtx->wptMutex);
8319
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008321 }
8322
8323 /*-----------------------------------------------------------------------
8324 If Post Assoc was not yet received - the current association must
8325 be in progress
8326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8329 {
8330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8331 "Association sequence for this BSS association no longer in "
8332 "progress - not allowed");
8333
8334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 }
8337
8338 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 -----------------------------------------------------------------------*/
8341 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8342 {
8343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8344 "Post Assoc not allowed before JOIN - failing request");
8345
8346 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 }
8349
8350 wpalMutexRelease(&pWDICtx->wptMutex);
8351
8352 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8353 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8354 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8359 ( usSendSize < (usDataOffset + uMsgSize )))
8360 {
8361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8362 "Unable to get send buffer in start req %x %x %x",
8363 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 }
8367
8368 /*Copy the STA parameters */
8369 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8370 &pwdiPostAssocParams->wdiSTAParams );
8371
8372 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 WDI_STATableFindStaidByAddr(pWDICtx,
8375 pwdiPostAssocParams->wdiSTAParams.macSTA,
8376 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8377 {
8378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8379 "This station does not exist in the WDI Station Table %d");
8380 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008381 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 }
8384
8385 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 pBSSSes->ucBSSIdx;
8388
8389 /*Copy the BSS parameters */
8390 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8391 &pwdiPostAssocParams->wdiBSSParams);
8392
8393 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 WDI_STATableFindStaidByAddr(pWDICtx,
8396 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 {
8399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8400 "This station does not exist in the WDI Station Table %d");
8401 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008402 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 }
8405
8406 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 pBSSSes->ucBSSIdx;
8409
Jeff Johnsone7245742012-09-05 17:12:55 -07008410
8411 wpalMemoryCopy( pSendBuffer+usDataOffset,
8412 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8413 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008414
8415 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8416
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8418 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8419 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008420
Jeff Johnsone7245742012-09-05 17:12:55 -07008421
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
Jeff Johnsone7245742012-09-05 17:12:55 -07008425
8426 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008429
8430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8435
Jeff Johnsone7245742012-09-05 17:12:55 -07008436
Jeff Johnson295189b2012-06-20 16:38:30 -07008437}/*WDI_ProcessPostAssocReq*/
8438
8439/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008442
8443 @param pWDICtx: pointer to the WLAN DAL context
8444 pEventData: pointer to the event information structure
8445
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 @see
8447 @return Result of the function call
8448*/
8449WDI_Status
8450WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008451(
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 WDI_ControlBlockType* pWDICtx,
8453 WDI_EventInfoType* pEventData
8454)
8455{
8456 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8457 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 wpt_uint16 usDataOffset = 0;
8462 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8465
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8468
8469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 -------------------------------------------------------------------------*/
8472 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8473 ( NULL == pEventData->pCBfnc ))
8474 {
8475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 }
8480
8481 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8482 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8483 /*-------------------------------------------------------------------------
8484 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 -------------------------------------------------------------------------*/
8487 wpalMutexAcquire(&pWDICtx->wptMutex);
8488
8489 /*------------------------------------------------------------------------
8490 Find the BSS for which the request is made and identify WDI session
8491 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8493 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 &macBSSID))
8495 {
8496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8497 "This station does not exist in the WDI Station Table %d");
8498 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 }
8501
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8503 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8506 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8507 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008508
8509 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 }
8512
8513 /*------------------------------------------------------------------------
8514 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 ------------------------------------------------------------------------*/
8517 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8518 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8520 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8521 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008522
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 }
8527
8528 wpalMutexRelease(&pWDICtx->wptMutex);
8529 /*-----------------------------------------------------------------------
8530 Get message buffer
8531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 sizeof(halDelStaReqMsg.delStaParams),
8534 &pSendBuffer, &usDataOffset, &usSendSize))||
8535 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8536 {
8537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8538 "Unable to get send buffer in start req %x %x %x",
8539 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 }
8543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8545 wpalMemoryCopy( pSendBuffer+usDataOffset,
8546 &halDelStaReqMsg.delStaParams,
8547 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008551
8552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8557
8558}/*WDI_ProcessDelSTAReq*/
8559
8560
8561/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008563==========================================================================*/
8564/**
8565 @brief Process Set BSS Key Request function (called when Main FSM
8566 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008567
8568 @param pWDICtx: pointer to the WLAN DAL context
8569 pEventData: pointer to the event information structure
8570
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 @see
8572 @return Result of the function call
8573*/
8574WDI_Status
8575WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008576(
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_ControlBlockType* pWDICtx,
8578 WDI_EventInfoType* pEventData
8579)
8580{
8581 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8582 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 wpt_uint16 usDataOffset = 0;
8587 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8590 wpt_uint8 keyIndex = 0;
8591
8592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8593
8594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 -------------------------------------------------------------------------*/
8597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8598 ( NULL == pEventData->pCBfnc ))
8599 {
8600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 }
8605
8606 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8607 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8608 /*-------------------------------------------------------------------------
8609 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 -------------------------------------------------------------------------*/
8612 wpalMutexAcquire(&pWDICtx->wptMutex);
8613
8614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8618 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8619 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008620
Jeff Johnsone7245742012-09-05 17:12:55 -07008621 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 {
8623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8625 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008626
8627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 }
8630
8631 /*------------------------------------------------------------------------
8632 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 ------------------------------------------------------------------------*/
8635 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8636 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8638 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8639 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008640
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 }
8645
8646
8647 wpalMutexRelease(&pWDICtx->wptMutex);
8648 /*-----------------------------------------------------------------------
8649 Get message buffer
8650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8653 &pSendBuffer, &usDataOffset, &usSendSize))||
8654 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8655 {
8656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8657 "Unable to get send buffer in set bss key req %x %x %x",
8658 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 }
8662
8663 /*-----------------------------------------------------------------------
8664 Copy the Key parameters into the HAL message
8665 -----------------------------------------------------------------------*/
8666
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008668
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8671
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8674
8675 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8676 keyIndex++)
8677 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8680 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8681 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8682 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8683 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8684 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8691 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 WDI_MAX_KEY_LENGTH);
8694 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008695
8696 wpalMemoryCopy( pSendBuffer+usDataOffset,
8697 &halSetBssKeyReqMsg.setBssKeyParams,
8698 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008699
8700 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
8703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8707 wdiSetBSSKeyRspCb, pEventData->pUserData,
8708 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008709
8710}/*WDI_ProcessSetBssKeyReq*/
8711
8712/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008715
8716 @param pWDICtx: pointer to the WLAN DAL context
8717 pEventData: pointer to the event information structure
8718
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 @see
8720 @return Result of the function call
8721*/
8722WDI_Status
8723WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008724(
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 WDI_ControlBlockType* pWDICtx,
8726 WDI_EventInfoType* pEventData
8727)
8728{
8729 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8730 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008732 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 wpt_uint16 usDataOffset = 0;
8735 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8739
8740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 -------------------------------------------------------------------------*/
8743 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8744 ( NULL == pEventData->pCBfnc ))
8745 {
8746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 }
8751
8752 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8753 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8754 /*-------------------------------------------------------------------------
8755 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 -------------------------------------------------------------------------*/
8758 wpalMutexAcquire(&pWDICtx->wptMutex);
8759
8760 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8764 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8765 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008766
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 {
8769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8771 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008772
8773 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 }
8776
8777 /*------------------------------------------------------------------------
8778 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 ------------------------------------------------------------------------*/
8781 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8782 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8784 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8785 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008786
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 }
8791
8792
8793 wpalMutexRelease(&pWDICtx->wptMutex);
8794
8795 /*-----------------------------------------------------------------------
8796 Get message buffer
8797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8800 &pSendBuffer, &usDataOffset, &usSendSize))||
8801 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8802 {
8803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8804 "Unable to get send buffer in set bss key req %x %x %x",
8805 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 }
8809 /*-----------------------------------------------------------------------
8810 Copy the Key parameters into the HAL message
8811 -----------------------------------------------------------------------*/
8812 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8813
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8816
8817 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8818
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8821
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 wpalMemoryCopy( pSendBuffer+usDataOffset,
8823 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8824 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008825
8826 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008828
8829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008835}/*WDI_ProcessRemoveBssKeyReq*/
8836
8837/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008840
8841 @param pWDICtx: pointer to the WLAN DAL context
8842 pEventData: pointer to the event information structure
8843
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 @see
8845 @return Result of the function call
8846*/
8847WDI_Status
8848WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008849(
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 WDI_ControlBlockType* pWDICtx,
8851 WDI_EventInfoType* pEventData
8852)
8853{
8854 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8855 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8856 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 wpt_uint16 usDataOffset = 0;
8859 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8864 wpt_uint8 keyIndex = 0;
8865
8866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8867
8868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 -------------------------------------------------------------------------*/
8871 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8872 ( NULL == pEventData->pCBfnc ))
8873 {
8874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 }
8879
8880 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8881 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8882 /*-------------------------------------------------------------------------
8883 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 -------------------------------------------------------------------------*/
8886 wpalMutexAcquire(&pWDICtx->wptMutex);
8887
8888 /*------------------------------------------------------------------------
8889 Find the BSS for which the request is made and identify WDI session
8890 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8892 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 &macBSSID))
8894 {
8895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8896 "This station does not exist in the WDI Station Table %d");
8897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 }
8900
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8902 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8905 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8906 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008907
8908 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008911
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 /*------------------------------------------------------------------------
8913 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 ------------------------------------------------------------------------*/
8916 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8917 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8919 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8920 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008921
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 }
8926
8927
8928 wpalMutexRelease(&pWDICtx->wptMutex);
8929 /*-----------------------------------------------------------------------
8930 Get message buffer
8931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8934 &pSendBuffer, &usDataOffset, &usSendSize))||
8935 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8936 {
8937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8938 "Unable to get send buffer in set bss key req %x %x %x",
8939 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 }
8943 /*-----------------------------------------------------------------------
8944 Copy the STA Key parameters into the HAL message
8945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8948
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8951
8952 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8953
8954 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8955
8956 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8957
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8959 keyIndex++)
8960 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8963 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8964 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8965 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8966 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8967 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8974 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 WDI_MAX_KEY_LENGTH);
8977 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008978
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 wpalMemoryCopy( pSendBuffer+usDataOffset,
8980 &halSetStaKeyReqMsg.setStaKeyParams,
8981 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008982
8983 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008985
8986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8990 wdiSetSTAKeyRspCb, pEventData->pUserData,
8991 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008992
8993}/*WDI_ProcessSetSTAKeyReq*/
8994
8995/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008998
8999 @param pWDICtx: pointer to the WLAN DAL context
9000 pEventData: pointer to the event information structure
9001
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 @see
9003 @return Result of the function call
9004*/
9005WDI_Status
9006WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009007(
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 WDI_ControlBlockType* pWDICtx,
9009 WDI_EventInfoType* pEventData
9010)
9011{
9012 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9013 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9014 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 wpt_uint16 usDataOffset = 0;
9017 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 wpt_macAddr macBSSID;
9020 wpt_uint8 ucCurrentBSSSesIdx;
9021 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9023
9024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 -------------------------------------------------------------------------*/
9027 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9028 ( NULL == pEventData->pCBfnc ))
9029 {
9030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 }
9035
9036 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9037 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9038 /*-------------------------------------------------------------------------
9039 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 -------------------------------------------------------------------------*/
9042 wpalMutexAcquire(&pWDICtx->wptMutex);
9043
9044 /*------------------------------------------------------------------------
9045 Find the BSS for which the request is made and identify WDI session
9046 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9048 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 &macBSSID))
9050 {
9051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9052 "This station does not exist in the WDI Station Table %d");
9053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 }
9056
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9058 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9061 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9062 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009063
9064 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009067
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 /*------------------------------------------------------------------------
9069 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 ------------------------------------------------------------------------*/
9072 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9073 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9075 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9076 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009077
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 }
9082
9083
9084
9085 wpalMutexRelease(&pWDICtx->wptMutex);
9086 /*-----------------------------------------------------------------------
9087 Get message buffer
9088 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9091 &pSendBuffer, &usDataOffset, &usSendSize))||
9092 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9093 {
9094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9095 "Unable to get send buffer in set bss key req %x %x %x",
9096 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 }
9100
9101 /*-----------------------------------------------------------------------
9102 Copy the Key parameters into the HAL message
9103 -----------------------------------------------------------------------*/
9104
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9110
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9113
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9116
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 wpalMemoryCopy( pSendBuffer+usDataOffset,
9118 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9119 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
9121 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009123
9124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009130
9131}/*WDI_ProcessRemoveSTAKeyReq*/
9132
9133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009136
9137 @param pWDICtx: pointer to the WLAN DAL context
9138 pEventData: pointer to the event information structure
9139
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 @see
9141 @return Result of the function call
9142*/
9143WDI_Status
9144WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009145(
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 WDI_ControlBlockType* pWDICtx,
9147 WDI_EventInfoType* pEventData
9148)
9149{
9150 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9151 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 wpt_uint16 usDataOffset = 0;
9155 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9160 wpt_uint8 keyIndex = 0;
9161
9162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9163
9164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 -------------------------------------------------------------------------*/
9167 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9168 ( NULL == pEventData->pCBfnc ))
9169 {
9170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 }
9175
9176 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9177 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9178 /*-------------------------------------------------------------------------
9179 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 -------------------------------------------------------------------------*/
9182 wpalMutexAcquire(&pWDICtx->wptMutex);
9183
9184 /*------------------------------------------------------------------------
9185 Find the BSS for which the request is made and identify WDI session
9186 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9188 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 &macBSSID))
9190 {
9191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9192 "This station does not exist in the WDI Station Table %d");
9193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 }
9196
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9198 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 {
9200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9202 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009203
9204 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009207
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 /*------------------------------------------------------------------------
9209 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 ------------------------------------------------------------------------*/
9212 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9213 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9215 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9216 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009217
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 }
9222
9223
9224 wpalMutexRelease(&pWDICtx->wptMutex);
9225 /*-----------------------------------------------------------------------
9226 Get message buffer
9227 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9230 &pSendBuffer, &usDataOffset, &usSendSize))||
9231 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9232 {
9233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9234 "Unable to get send buffer in set bss key req %x %x %x",
9235 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 }
9239 /*-----------------------------------------------------------------------
9240 Copy the STA Key parameters into the HAL message
9241 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9244
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9247
9248 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9249
9250 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9251
9252 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9253
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9255 keyIndex++)
9256 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9259 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9260 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9261 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9262 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9263 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9270 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 WDI_MAX_KEY_LENGTH);
9273 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009274
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 wpalMemoryCopy( pSendBuffer+usDataOffset,
9276 &halSetStaKeyReqMsg.setStaKeyParams,
9277 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009278
9279 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009281
9282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9286 wdiSetSTAKeyRspCb, pEventData->pUserData,
9287 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009288
9289}/*WDI_ProcessSetSTABcastKeyReq*/
9290
9291/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009294
9295 @param pWDICtx: pointer to the WLAN DAL context
9296 pEventData: pointer to the event information structure
9297
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 @see
9299 @return Result of the function call
9300*/
9301WDI_Status
9302WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009303(
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 WDI_ControlBlockType* pWDICtx,
9305 WDI_EventInfoType* pEventData
9306)
9307{
9308 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9309 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9310 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 wpt_uint16 usDataOffset = 0;
9313 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 wpt_macAddr macBSSID;
9316 wpt_uint8 ucCurrentBSSSesIdx;
9317 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9319
9320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 -------------------------------------------------------------------------*/
9323 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9324 ( NULL == pEventData->pCBfnc ))
9325 {
9326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009327 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 }
9331
9332 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9333 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9334 /*-------------------------------------------------------------------------
9335 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 -------------------------------------------------------------------------*/
9338 wpalMutexAcquire(&pWDICtx->wptMutex);
9339
9340 /*------------------------------------------------------------------------
9341 Find the BSS for which the request is made and identify WDI session
9342 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9344 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 &macBSSID))
9346 {
9347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9348 "This station does not exist in the WDI Station Table %d");
9349 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 }
9352
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9354 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9357 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9358 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009359
9360 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009363
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 /*------------------------------------------------------------------------
9365 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 ------------------------------------------------------------------------*/
9368 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9369 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9371 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9372 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009373
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009377 }
9378
9379
9380
9381 wpalMutexRelease(&pWDICtx->wptMutex);
9382 /*-----------------------------------------------------------------------
9383 Get message buffer
9384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009386 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9387 &pSendBuffer, &usDataOffset, &usSendSize))||
9388 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9389 {
9390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9391 "Unable to get send buffer in set bss key req %x %x %x",
9392 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 }
9396
9397 /*-----------------------------------------------------------------------
9398 Copy the Key parameters into the HAL message
9399 -----------------------------------------------------------------------*/
9400
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9403
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9406
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9409
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9412
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 wpalMemoryCopy( pSendBuffer+usDataOffset,
9414 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9415 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009416
9417 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
9420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426
9427}/*WDI_ProcessRemoveSTABcastKeyReq*/
9428
9429/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009431==========================================================================*/
9432/**
9433 @brief Process Add TSpec Request function (called when Main FSM
9434 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009435
9436 @param pWDICtx: pointer to the WLAN DAL context
9437 pEventData: pointer to the event information structure
9438
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 @see
9440 @return Result of the function call
9441*/
9442WDI_Status
9443WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009444(
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 WDI_ControlBlockType* pWDICtx,
9446 WDI_EventInfoType* pEventData
9447)
9448{
9449 WDI_AddTSReqParamsType* pwdiAddTSParams;
9450 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009453 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 wpt_uint16 usDataOffset = 0;
9455 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 wpt_macAddr macBSSID;
9458 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009459
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9461
9462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 -------------------------------------------------------------------------*/
9465 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9466 ( NULL == pEventData->pCBfnc ))
9467 {
9468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 }
9473
9474 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9475 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9476 /*-------------------------------------------------------------------------
9477 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 -------------------------------------------------------------------------*/
9480 wpalMutexAcquire(&pWDICtx->wptMutex);
9481
9482 /*------------------------------------------------------------------------
9483 Find the BSS for which the request is made and identify WDI session
9484 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9486 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 &macBSSID))
9488 {
9489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9490 "This station does not exist in the WDI Station Table %d");
9491 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 }
9494
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9496 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9499 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9500 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009501
9502 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009505
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 /*------------------------------------------------------------------------
9507 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 ------------------------------------------------------------------------*/
9510 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9511 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9513 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9514 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009515
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 }
9520
9521 wpalMutexRelease(&pWDICtx->wptMutex);
9522 /*-----------------------------------------------------------------------
9523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9527 sizeof(halAddTsParams),
9528 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 &usSendSize))||
9530 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9531 {
9532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9533 "Unable to get send buffer in set bss key req %x %x %x",
9534 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 }
9538
9539 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9540 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9541
9542 //TSPEC IE
9543 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9544 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009559 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009560 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9575
9576 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9591
9592 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9597
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 wpalMemoryCopy( pSendBuffer+usDataOffset,
9599 &halAddTsParams,
9600 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009601
9602 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
9605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009611}/*WDI_ProcessAddTSpecReq*/
9612
9613
9614/**
9615 @brief Process Del TSpec Request function (called when Main FSM
9616 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009617
9618 @param pWDICtx: pointer to the WLAN DAL context
9619 pEventData: pointer to the event information structure
9620
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 @see
9622 @return Result of the function call
9623*/
9624WDI_Status
9625WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009626(
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 WDI_ControlBlockType* pWDICtx,
9628 WDI_EventInfoType* pEventData
9629)
9630{
9631 WDI_DelTSReqParamsType* pwdiDelTSParams;
9632 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009635 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009636 wpt_uint16 usDataOffset = 0;
9637 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9640
9641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 -------------------------------------------------------------------------*/
9644 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9645 ( NULL == pEventData->pCBfnc ))
9646 {
9647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 }
9652
9653 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9654 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9655
9656 /*-------------------------------------------------------------------------
9657 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 -------------------------------------------------------------------------*/
9660 wpalMutexAcquire(&pWDICtx->wptMutex);
9661
9662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9666 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9667 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009668
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9672 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9673 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9674
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 }
9678
9679 /*------------------------------------------------------------------------
9680 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 ------------------------------------------------------------------------*/
9683 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9684 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9686 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9687 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009688
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 }
9693
9694
9695 wpalMutexRelease(&pWDICtx->wptMutex);
9696 /*-----------------------------------------------------------------------
9697 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9702 &pSendBuffer, &usDataOffset, &usSendSize))||
9703 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9704 {
9705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9706 "Unable to get send buffer in set bss key req %x %x %x",
9707 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 }
9711
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 wpalMemoryCopy( pSendBuffer+usDataOffset,
9713 &pwdiDelTSParams->wdiDelTSInfo,
9714 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009715
9716 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718
9719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9723 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009724}/*WDI_ProcessDelTSpecReq*/
9725
9726/**
9727 @brief Process Update EDCA Params Request function (called when
9728 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009729
9730 @param pWDICtx: pointer to the WLAN DAL context
9731 pEventData: pointer to the event information structure
9732
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 @see
9734 @return Result of the function call
9735*/
9736WDI_Status
9737WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009738(
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 WDI_ControlBlockType* pWDICtx,
9740 WDI_EventInfoType* pEventData
9741)
9742{
9743 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9744 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 wpt_uint16 usDataOffset = 0;
9749 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9752
9753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 -------------------------------------------------------------------------*/
9756 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9757 ( NULL == pEventData->pCBfnc ))
9758 {
9759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 }
9764
9765 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9766 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9767 /*-------------------------------------------------------------------------
9768 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 -------------------------------------------------------------------------*/
9771 wpalMutexAcquire(&pWDICtx->wptMutex);
9772
9773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9777 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9778 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009779
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 {
9782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9784 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009785
9786 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 }
9789
9790 /*------------------------------------------------------------------------
9791 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 ------------------------------------------------------------------------*/
9794 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9795 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9797 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9798 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009799
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 }
9804
9805
9806 wpalMutexRelease(&pWDICtx->wptMutex);
9807 /*-----------------------------------------------------------------------
9808 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009812 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9813 &pSendBuffer, &usDataOffset, &usSendSize))||
9814 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9815 {
9816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9817 "Unable to get send buffer in set bss key req %x %x %x",
9818 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 }
9822
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 wpalMemoryCopy( pSendBuffer+usDataOffset,
9824 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9825 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009826
9827 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9834 wdiUpdateEDCARspCb, pEventData->pUserData,
9835 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009836}/*WDI_ProcessUpdateEDCAParamsReq*/
9837
9838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009841
9842 @param pWDICtx: pointer to the WLAN DAL context
9843 pEventData: pointer to the event information structure
9844
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 @see
9846 @return Result of the function call
9847*/
9848WDI_Status
9849WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009850(
Jeff Johnson295189b2012-06-20 16:38:30 -07009851 WDI_ControlBlockType* pWDICtx,
9852 WDI_EventInfoType* pEventData
9853)
9854{
9855 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9856 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 wpt_uint16 usDataOffset = 0;
9861 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 wpt_macAddr macBSSID;
9864
9865 tAddBASessionReqMsg halAddBASessionReq;
9866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9867
9868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 -------------------------------------------------------------------------*/
9871 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9872 ( NULL == pEventData->pCBfnc ))
9873 {
9874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 }
9879
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9884 /*-------------------------------------------------------------------------
9885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 -------------------------------------------------------------------------*/
9888 wpalMutexAcquire(&pWDICtx->wptMutex);
9889
9890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9894 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 &macBSSID))
9896 {
9897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9898 "This station does not exist in the WDI Station Table %d");
9899 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 }
9902
9903
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009905
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9909 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9910 __func__, MAC_ADDR_ARRAY(macBSSID));
9911
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 }
9915
9916 /*------------------------------------------------------------------------
9917 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 ------------------------------------------------------------------------*/
9920 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9921 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9923 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9924 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009925
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 }
9930
9931
9932 wpalMutexRelease(&pWDICtx->wptMutex);
9933 /*-----------------------------------------------------------------------
9934 Get message buffer
9935 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9937 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 sizeof(halAddBASessionReq.addBASessionParams),
9939 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9942 {
9943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9944 "Unable to get send buffer in Add BA session req %x %x %x",
9945 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 }
9949
9950 halAddBASessionReq.addBASessionParams.staIdx =
9951 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9952 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9953 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9954 WDI_MAC_ADDR_LEN);
9955 halAddBASessionReq.addBASessionParams.baTID =
9956 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9957 halAddBASessionReq.addBASessionParams.baPolicy =
9958 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9959 halAddBASessionReq.addBASessionParams.baBufferSize =
9960 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9961 halAddBASessionReq.addBASessionParams.baTimeout =
9962 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9963 halAddBASessionReq.addBASessionParams.baSSN =
9964 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9965 halAddBASessionReq.addBASessionParams.baDirection =
9966 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9967
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 wpalMemoryCopy( pSendBuffer+usDataOffset,
9969 &halAddBASessionReq.addBASessionParams,
9970 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009971
9972 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974
9975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9979 wdiAddBASessionRspCb, pEventData->pUserData,
9980 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009981}/*WDI_ProcessAddBASessionReq*/
9982
9983/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009986
9987 @param pWDICtx: pointer to the WLAN DAL context
9988 pEventData: pointer to the event information structure
9989
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 @see
9991 @return Result of the function call
9992*/
9993WDI_Status
9994WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009995(
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 WDI_ControlBlockType* pWDICtx,
9997 WDI_EventInfoType* pEventData
9998)
9999{
10000 WDI_DelBAReqParamsType* pwdiDelBAParams;
10001 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 wpt_uint16 usDataOffset = 0;
10006 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 wpt_macAddr macBSSID;
10009 tDelBAParams halDelBAparam;
10010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10011
10012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 -------------------------------------------------------------------------*/
10015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10016 ( NULL == pEventData->pCBfnc ))
10017 {
10018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 }
10023
10024 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10025 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10026 /*-------------------------------------------------------------------------
10027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 -------------------------------------------------------------------------*/
10030 wpalMutexAcquire(&pWDICtx->wptMutex);
10031
10032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10036 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 &macBSSID))
10038 {
10039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10040 "This station does not exist in the WDI Station Table %d");
10041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 }
10044
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10050 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10051 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010052
10053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 }
10056
10057 /*------------------------------------------------------------------------
10058 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 ------------------------------------------------------------------------*/
10061 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10062 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10064 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10065 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010066
Jeff Johnsone7245742012-09-05 17:12:55 -070010067 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 }
10071
10072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 sizeof(halDelBAparam),
10075 &pSendBuffer, &usDataOffset, &usSendSize))||
10076 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10077 {
10078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10079 "Unable to get send buffer for DEL BA req %x %x %x",
10080 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 }
10084
10085 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10086 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10087 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10088
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 wpalMemoryCopy( pSendBuffer+usDataOffset,
10090 &halDelBAparam,
10091 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010092
10093 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010095
10096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10100 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010101}/*WDI_ProcessDelBAReq*/
10102
10103#ifdef FEATURE_WLAN_CCX
10104
10105WDI_Status
10106WDI_ProcessTSMStatsReq
10107(
10108 WDI_ControlBlockType* pWDICtx,
10109 WDI_EventInfoType* pEventData
10110)
10111{
10112 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10113 WDI_TsmRspCb wdiTSMRspCb;
10114 wpt_uint8 ucCurrentBSSSesIdx = 0;
10115 WDI_BSSSessionType* pBSSSes = NULL;
10116 wpt_uint8* pSendBuffer = NULL;
10117 wpt_uint16 usDataOffset = 0;
10118 wpt_uint16 usSendSize = 0;
10119 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10120 tTsmStatsParams halTsmStatsReqParams = {0};
10121
10122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10123
10124 /*-------------------------------------------------------------------------
10125 Sanity check
10126 -------------------------------------------------------------------------*/
10127 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10128 ( NULL == pEventData->pCBfnc ))
10129 {
10130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 WDI_ASSERT(0);
10133 return WDI_STATUS_E_FAILURE;
10134 }
10135
10136 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10137 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10138 /*-------------------------------------------------------------------------
10139 Check to see if we are in the middle of an association, if so queue, if
10140 not it means it is free to process request
10141 -------------------------------------------------------------------------*/
10142 wpalMutexAcquire(&pWDICtx->wptMutex);
10143
10144 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10145 if ( NULL == pBSSSes )
10146 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10148 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10149 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010150
10151 wpalMutexRelease(&pWDICtx->wptMutex);
10152 return WDI_STATUS_E_NOT_ALLOWED;
10153 }
10154
10155 /*------------------------------------------------------------------------
10156 Check if this BSS is being currently processed or queued,
10157 if queued - queue the new request as well
10158 ------------------------------------------------------------------------*/
10159 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10160 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10162 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10163 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010164
10165 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10166 wpalMutexRelease(&pWDICtx->wptMutex);
10167 return wdiStatus;
10168 }
10169
10170 wpalMutexRelease(&pWDICtx->wptMutex);
10171 /*-----------------------------------------------------------------------
10172 Get message buffer
10173 ! TO DO : proper conversion into the HAL Message Request Format
10174 -----------------------------------------------------------------------*/
10175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10176 sizeof(halTsmStatsReqParams),
10177 &pSendBuffer, &usDataOffset, &usSendSize))||
10178 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10179 {
10180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10181 "Unable to get send buffer in set bss key req %x %x %x",
10182 pEventData, pwdiTSMParams, wdiTSMRspCb);
10183 WDI_ASSERT(0);
10184 return WDI_STATUS_E_FAILURE;
10185 }
10186
10187 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10188 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10189 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10190 WDI_MAC_ADDR_LEN);
10191 wpalMemoryCopy( pSendBuffer+usDataOffset,
10192 &halTsmStatsReqParams,
10193 sizeof(halTsmStatsReqParams));
10194
10195 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10196 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10197
10198 /*-------------------------------------------------------------------------
10199 Send TSM Stats Request to HAL
10200 -------------------------------------------------------------------------*/
10201 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10202 wdiTSMRspCb, pEventData->pUserData,
10203 WDI_TSM_STATS_RESP);
10204}/*WDI_ProcessTSMStatsReq*/
10205
10206#endif
10207
10208
10209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010212
10213 @param pWDICtx: pointer to the WLAN DAL context
10214 pEventData: pointer to the event information structure
10215
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 @see
10217 @return Result of the function call
10218*/
10219WDI_Status
10220WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010221(
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 WDI_ControlBlockType* pWDICtx,
10223 WDI_EventInfoType* pEventData
10224)
10225{
10226 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10227 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 wpt_uint16 usDataOffset = 0;
10230 wpt_uint16 usSendSize = 0;
10231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10232
10233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010235 -------------------------------------------------------------------------*/
10236 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10237 ( NULL == pEventData->pCBfnc ))
10238 {
10239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 }
10244
10245 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10246 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10247 /*-----------------------------------------------------------------------
10248 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10253 &pSendBuffer, &usDataOffset, &usSendSize))||
10254 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10255 {
10256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10257 "Unable to get send buffer in set bss key req %x %x %x",
10258 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 }
10262
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 wpalMemoryCopy( pSendBuffer+usDataOffset,
10264 &pwdiFlushAcParams->wdiFlushAcInfo,
10265 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010266
10267 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269
10270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10274 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010275}/*WDI_ProcessFlushAcReq*/
10276
10277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010280
10281 @param pWDICtx: pointer to the WLAN DAL context
10282 pEventData: pointer to the event information structure
10283
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 @see
10285 @return Result of the function call
10286*/
10287WDI_Status
10288WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010289(
Jeff Johnson295189b2012-06-20 16:38:30 -070010290 WDI_ControlBlockType* pWDICtx,
10291 WDI_EventInfoType* pEventData
10292)
10293{
10294 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10295 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 wpt_uint16 usDataOffset = 0;
10298 wpt_uint16 usSendSize = 0;
10299
10300 tBtAmpEventMsg haltBtAmpEventMsg;
10301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10302
10303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 -------------------------------------------------------------------------*/
10306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10307 ( NULL == pEventData->pCBfnc ))
10308 {
10309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 }
10314
10315 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10316 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10317 /*-----------------------------------------------------------------------
10318 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10323 &pSendBuffer, &usDataOffset, &usSendSize))||
10324 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10325 {
10326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10327 "Unable to get send buffer in BT AMP event req %x %x %x",
10328 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 }
10332
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 wpalMemoryCopy( pSendBuffer+usDataOffset,
10336 &haltBtAmpEventMsg.btAmpEventParams,
10337 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010338
10339 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
10342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10346 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010347}/*WDI_ProcessBtAmpEventReq*/
10348
10349/**
10350 @brief Process Add STA self Request function (called when Main FSM
10351 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010352
10353 @param pWDICtx: pointer to the WLAN DAL context
10354 pEventData: pointer to the event information structure
10355
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 @see
10357 @return Result of the function call
10358*/
10359WDI_Status
10360WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010361(
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 WDI_ControlBlockType* pWDICtx,
10363 WDI_EventInfoType* pEventData
10364)
10365{
10366 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10367 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 wpt_uint16 usDataOffset = 0;
10370 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010371 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10373
10374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 -------------------------------------------------------------------------*/
10377 if (( NULL == pEventData ) ||
10378 ( NULL == pEventData->pEventData) ||
10379 ( NULL == pEventData->pCBfnc))
10380 {
10381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 }
10386
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10391 /*-----------------------------------------------------------------------
10392 Get message buffer
10393 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10395 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010396 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010398 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 {
10400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10401 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10402 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 }
10406
10407 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10410
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010412 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10413 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10414 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10415 {
10416 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10417 }
10418 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10419 VOS_P2P_CLIENT_MODE) ||
10420 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10421 VOS_P2P_DEVICE))
10422 {
10423 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10424 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010426 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010427
10428 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430
10431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10435 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10436 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010437}/*WDI_ProcessAddSTASelfReq*/
10438
10439
10440
10441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010444
10445 @param pWDICtx: pointer to the WLAN DAL context
10446 pEventData: pointer to the event information structure
10447
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 @see
10449 @return Result of the function call
10450*/
10451WDI_Status
10452WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010453(
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 WDI_ControlBlockType* pWDICtx,
10455 WDI_EventInfoType* pEventData
10456)
10457{
10458 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10459 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 wpt_uint16 usDataOffset = 0;
10462 wpt_uint16 usSendSize = 0;
10463 tDelStaSelfParams halSetDelSelfSTAParams;
10464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10465
10466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 -------------------------------------------------------------------------*/
10469 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10470 ( NULL == pEventData->pCBfnc ))
10471 {
10472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 }
10477
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10480 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10481
10482 /*-----------------------------------------------------------------------
10483 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10488 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10491 {
10492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10493 "Unable to get send buffer in Del Sta Self req %x %x %x",
10494 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 }
10498
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10501
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10503 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010504
10505 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010507
10508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10512 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 WDI_DEL_STA_SELF_RESP);
10514
10515}
10516
Jeff Johnsone7245742012-09-05 17:12:55 -070010517#ifdef FEATURE_OEM_DATA_SUPPORT
10518/**
10519 @brief Process Start Oem Data Request function (called when Main
10520 FSM allows it)
10521
10522 @param pWDICtx: pointer to the WLAN DAL context
10523 pEventData: pointer to the event information structure
10524
10525 @see
10526 @return Result of the function call
10527*/
10528WDI_Status
10529WDI_ProcessStartOemDataReq
10530(
10531 WDI_ControlBlockType* pWDICtx,
10532 WDI_EventInfoType* pEventData
10533)
10534{
10535 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10536 WDI_oemDataRspCb wdiOemDataRspCb;
10537 wpt_uint8* pSendBuffer = NULL;
10538 wpt_uint16 usDataOffset = 0;
10539 wpt_uint16 usSendSize = 0;
10540 wpt_uint16 reqLen;
10541 tStartOemDataReqParams* halStartOemDataReqParams;
10542
10543 /*-------------------------------------------------------------------------
10544 Sanity check
10545 -------------------------------------------------------------------------*/
10546 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10547 ( NULL == pEventData->pCBfnc ))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010550 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 WDI_ASSERT(0);
10552 return WDI_STATUS_E_FAILURE;
10553 }
10554
10555 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10556 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10557
10558 /*-----------------------------------------------------------------------
10559 Get message buffer
10560 -----------------------------------------------------------------------*/
10561
10562 reqLen = sizeof(tStartOemDataReqParams);
10563
10564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10565 WDI_START_OEM_DATA_REQ, reqLen,
10566 &pSendBuffer, &usDataOffset, &usSendSize))||
10567 (usSendSize < (usDataOffset + reqLen)))
10568 {
10569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10570 "Unable to get send buffer in Start Oem Data req %x %x %x",
10571 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10572 WDI_ASSERT(0);
10573 return WDI_STATUS_E_FAILURE;
10574 }
10575
10576 //copying WDI OEM DATA REQ PARAMS to shared memory
10577 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10578
10579 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10580 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10581
10582 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10583 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10584
10585 /*-------------------------------------------------------------------------
10586 Send Start Request to HAL
10587 -------------------------------------------------------------------------*/
10588 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10589 wdiOemDataRspCb, pEventData->pUserData,
10590 WDI_START_OEM_DATA_RESP);
10591}/*WDI_ProcessStartOemDataReq*/
10592#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010593
10594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010597
10598 @param pWDICtx: pointer to the WLAN DAL context
10599 pEventData: pointer to the event information structure
10600
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 @see
10602 @return Result of the function call
10603*/
10604WDI_Status
10605WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010606(
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 WDI_ControlBlockType* pWDICtx,
10608 WDI_EventInfoType* pEventData
10609)
10610{
10611 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10612 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 wpt_uint16 usDataOffset = 0;
10615 wpt_uint16 usSendSize = 0;
10616 tHalWlanHostResumeReqParam halResumeReqParams;
10617
10618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10619
10620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 -------------------------------------------------------------------------*/
10623 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10624 ( NULL == pEventData->pCBfnc ))
10625 {
10626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010627 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 }
10631
10632 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10633 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10634
10635 /*-----------------------------------------------------------------------
10636 Get message buffer
10637 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10640 &pSendBuffer, &usDataOffset, &usSendSize))||
10641 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10642 {
10643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 }
10649
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010652
10653 wpalMemoryCopy( pSendBuffer+usDataOffset,
10654 &halResumeReqParams,
10655 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010656
10657 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010659
10660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010662 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10664 wdiHostResumeRspCb, pEventData->pUserData,
10665 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010666}/*WDI_ProcessHostResumeReq*/
10667
10668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010671
10672 @param pWDICtx: pointer to the WLAN DAL context
10673 pEventData: pointer to the event information structure
10674
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 @see
10676 @return Result of the function call
10677*/
10678WDI_Status
10679WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010680(
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 WDI_ControlBlockType* pWDICtx,
10682 WDI_EventInfoType* pEventData
10683)
10684{
10685 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10686 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010688 wpt_uint16 usDataOffset = 0;
10689 wpt_uint16 usSendSize = 0;
10690 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10692
10693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010695 -------------------------------------------------------------------------*/
10696 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10697 ( NULL == pEventData->pCBfnc ))
10698 {
10699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010700 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 }
10704
10705 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10706 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010707
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 /*-----------------------------------------------------------------------
10709 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 sizeof(halTxPerTrackingReqParam),
10714 &pSendBuffer, &usDataOffset, &usSendSize))||
10715 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10716 {
10717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10718 "Unable to get send buffer in set tx per tracking req %x %x %x",
10719 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010723
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10725 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10726 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10727 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010728
10729 wpalMemoryCopy( pSendBuffer+usDataOffset,
10730 &halTxPerTrackingReqParam,
10731 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010732
10733 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010735
10736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10740 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010741}/*WDI_ProcessSetTxPerTrackingReq*/
10742
10743/*=========================================================================
10744 Indications
10745=========================================================================*/
10746
10747/**
10748 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010749
10750 @param pWDICtx: pointer to the WLAN DAL context
10751 pEventData: pointer to the event information structure
10752
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 @see
10754 @return Result of the function call
10755*/
10756WDI_Status
10757WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010758(
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 WDI_ControlBlockType* pWDICtx,
10760 WDI_EventInfoType* pEventData
10761)
10762{
10763 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 wpt_uint16 usDataOffset = 0;
10766 wpt_uint16 usSendSize = 0;
10767 WDI_Status wdiStatus;
10768 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10770
10771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 -------------------------------------------------------------------------*/
10774 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10775 {
10776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010777 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 }
10781
10782 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10783
10784 /*-----------------------------------------------------------------------
10785 Get message buffer
10786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10788 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 sizeof(halWlanSuspendIndparams),
10790 &pSendBuffer, &usDataOffset, &usSendSize))||
10791 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10792 {
10793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10794 "Unable to get send buffer in Suspend Ind ");
10795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 }
10798
10799 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10800 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10801
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010803 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010804
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10806 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010807
10808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 -------------------------------------------------------------------------*/
10811 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010813
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10816}/*WDI_ProcessHostSuspendInd*/
10817
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010818
10819
10820/**
10821 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10822
10823 @param pWDICtx: pointer to the WLAN DAL context
10824 pEventData: pointer to the event information structure
10825
10826 @see
10827 @return Result of the function call
10828*/
10829WDI_Status
10830WDI_ProcessTrafficStatsInd
10831(
10832 WDI_ControlBlockType* pWDICtx,
10833 WDI_EventInfoType* pEventData
10834)
10835{
10836 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10837 wpt_uint8* pSendBuffer = NULL;
10838 wpt_uint16 usDataOffset = 0;
10839 wpt_uint16 usSendSize = 0;
10840 WDI_Status wdiStatus;
10841 tStatsClassBIndParams* pStatsClassBIndParams;
10842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10843
10844 /*-------------------------------------------------------------------------
10845 Sanity check
10846 -------------------------------------------------------------------------*/
10847 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10848 {
10849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10850 "%s: Invalid parameters in Traffic Stats ind",__func__);
10851 WDI_ASSERT(0);
10852 return WDI_STATUS_E_FAILURE;
10853 }
10854
10855 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10856
10857 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10858 {
10859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10860 "%s: Invalid parameters in Traffic Stats ind",__func__);
10861 WDI_ASSERT(0);
10862 return WDI_STATUS_E_FAILURE;
10863 }
10864
10865 /*-----------------------------------------------------------------------
10866 Get message buffer
10867 -----------------------------------------------------------------------*/
10868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10869 WDI_TRAFFIC_STATS_IND,
10870 sizeof(tStatsClassBIndParams),
10871 &pSendBuffer, &usDataOffset, &usSendSize))||
10872 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10873 {
10874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10875 "Unable to get send buffer in Traffic Stats Ind ");
10876 WDI_ASSERT(0);
10877 return WDI_STATUS_E_FAILURE;
10878 }
10879
10880 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10881
10882 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10883
10884 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10885 pTrafficStatsIndParams->pTrafficStats,
10886 pTrafficStatsIndParams->length);
10887
10888 /*-------------------------------------------------------------------------
10889 Send Suspend Request to HAL
10890 -------------------------------------------------------------------------*/
10891 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10892 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10893
10894 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10895 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10896}/*WDI_ProcessTrafficStatsInd*/
10897
Chet Lanctota96bb432013-03-18 10:26:30 -070010898#ifdef WLAN_FEATURE_11W
10899/**
10900 @brief Process Exclude Unencrypted Indications function (called
10901 when Main FSM allows it)
10902
10903 @param pWDICtx: pointer to the WLAN DAL context
10904 pEventData: pointer to the event information structure
10905
10906 @see
10907 @return Result of the function call
10908*/
10909WDI_Status
10910WDI_ProcessExcludeUnencryptInd
10911(
10912 WDI_ControlBlockType* pWDICtx,
10913 WDI_EventInfoType* pEventData
10914)
10915{
10916 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10917 wpt_uint8* pSendBuffer = NULL;
10918 wpt_uint16 usDataOffset = 0;
10919 wpt_uint16 usSendSize = 0;
10920 WDI_Status wdiStatus;
10921 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10923
10924 /*-------------------------------------------------------------------------
10925 Sanity check
10926 -------------------------------------------------------------------------*/
10927 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10928 {
10929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10930 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10931 WDI_ASSERT(0);
10932 return WDI_STATUS_E_FAILURE;
10933 }
10934
10935 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10936
10937 /*-----------------------------------------------------------------------
10938 Get message buffer
10939 -----------------------------------------------------------------------*/
10940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10941 WDI_EXCLUDE_UNENCRYPTED_IND,
10942 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10943 &pSendBuffer, &usDataOffset, &usSendSize))||
10944 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10945 {
10946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10947 "Unable to get send buffer in Exclude Unencrypted Ind ");
10948 WDI_ASSERT(0);
10949 return WDI_STATUS_E_FAILURE;
10950 }
10951
10952 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10953
10954 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10955
10956 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10957 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10958
10959 /*-------------------------------------------------------------------------
10960 Send Suspend Request to HAL
10961 -------------------------------------------------------------------------*/
10962 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10963 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10964
10965 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10966 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10967}/*WDI_ProcessExcludeUnencryptInd*/
10968#endif
10969
Yue Ma365933a2013-08-14 15:59:08 -070010970/**
10971 @brief Process Add Periodic Tx Pattern Indication function (called when
10972 Main FSM allows it)
10973
10974 @param pWDICtx: pointer to the WLAN DAL context
10975 pEventData: pointer to the event information structure
10976
10977 @see
10978 @return Result of the function call
10979*/
10980WDI_Status
10981WDI_ProcessAddPeriodicTxPtrnInd
10982(
10983 WDI_ControlBlockType* pWDICtx,
10984 WDI_EventInfoType* pEventData
10985)
10986{
10987 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
10988 wpt_uint8* pSendBuffer = NULL;
10989 wpt_uint16 usDataOffset = 0;
10990 wpt_uint16 usSendSize = 0;
10991 WDI_Status wdiStatus;
10992 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
10993 wpt_uint8 selfStaIdx = 0;
10994
10995 /*-------------------------------------------------------------------------
10996 Sanity check
10997 -------------------------------------------------------------------------*/
10998 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
10999 {
11000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11001 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11002 WDI_ASSERT(0);
11003 return WDI_STATUS_E_FAILURE;
11004 }
11005
11006 pAddPeriodicTxPtrnParams =
11007 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11008
11009 /*------------------------------------------------------------------------
11010 Get message buffer
11011 ------------------------------------------------------------------------*/
11012 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11013 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11014 &pSendBuffer, &usDataOffset, &usSendSize))||
11015 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11016 {
11017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11018 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11019 __func__);
11020 WDI_ASSERT(0);
11021 return WDI_STATUS_E_FAILURE;
11022 }
11023
11024 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11025
11026 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11027 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11028 &selfStaIdx))
11029 {
11030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11031 "%s: Failed to get selfStaIdx!", __func__);
11032
11033 return WDI_STATUS_E_FAILURE;
11034 }
11035
11036 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11037 halAddPeriodicTxPtrn->ucPtrnId =
11038 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11039 halAddPeriodicTxPtrn->usPtrnSize =
11040 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11041 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11042 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11043
11044 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11045 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11046 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11047
11048 /*-------------------------------------------------------------------------
11049 Send Indication to HAL
11050 -------------------------------------------------------------------------*/
11051 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11052 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11053
11054 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11055
11056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11057 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11058
11059 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11060} /* WDI_ProcessAddPeriodicTxPtrnInd */
11061
11062/**
11063 @brief Process Delete Periodic Tx Pattern Indication function (called when
11064 Main FSM allows it)
11065
11066 @param pWDICtx: pointer to the WLAN DAL context
11067 pEventData: pointer to the event information structure
11068
11069 @see
11070 @return Result of the function call
11071*/
11072WDI_Status
11073WDI_ProcessDelPeriodicTxPtrnInd
11074(
11075 WDI_ControlBlockType* pWDICtx,
11076 WDI_EventInfoType* pEventData
11077)
11078{
11079 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11080 wpt_uint8* pSendBuffer = NULL;
11081 wpt_uint16 usDataOffset = 0;
11082 wpt_uint16 usSendSize = 0;
11083 WDI_Status wdiStatus;
11084 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11085 wpt_uint8 selfStaIdx = 0;
11086
11087 /*-------------------------------------------------------------------------
11088 Sanity check
11089 -------------------------------------------------------------------------*/
11090 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11091 {
11092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11093 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11094 WDI_ASSERT(0);
11095 return WDI_STATUS_E_FAILURE;
11096 }
11097
11098 pDelPeriodicTxPtrnParams =
11099 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11100
11101 /*------------------------------------------------------------------------
11102 Get message buffer
11103 ------------------------------------------------------------------------*/
11104 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11105 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11106 &pSendBuffer, &usDataOffset, &usSendSize))||
11107 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11108 {
11109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11110 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11111 __func__);
11112 WDI_ASSERT(0);
11113 return WDI_STATUS_E_FAILURE;
11114 }
11115
11116 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11117
11118 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11119 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11120 &selfStaIdx))
11121 {
11122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11123 "%s: Failed to get selfStaIdx!", __func__);
11124
11125 return WDI_STATUS_E_FAILURE;
11126 }
11127
11128 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11129 halDelPeriodicTxPtrn->uPatternIdBitmap =
11130 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11131
11132 /*-------------------------------------------------------------------------
11133 Send Indication to HAL
11134 -------------------------------------------------------------------------*/
11135 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11136 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11137
11138 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11139
11140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11141 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11142
11143 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11144} /* WDI_ProcessDelPeriodicTxPtrnInd */
11145
Jeff Johnson295189b2012-06-20 16:38:30 -070011146/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011148==========================================================================*/
11149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011152
11153 @param pWDICtx: pointer to the WLAN DAL context
11154 pEventData: pointer to the event information structure
11155
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 @see
11157 @return Result of the function call
11158*/
11159WDI_Status
11160WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011161(
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 WDI_ControlBlockType* pWDICtx,
11163 WDI_EventInfoType* pEventData
11164)
11165{
11166 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11167 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 wpt_uint16 usDataOffset = 0;
11170 wpt_uint16 usSendSize = 0;
11171 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11173
11174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 -------------------------------------------------------------------------*/
11177 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11178 ( NULL == pEventData->pCBfnc ))
11179 {
11180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 }
11185
11186 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11187 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11188 /*-----------------------------------------------------------------------
11189 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011190 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011191 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 sizeof(halSwitchChannelReq.switchChannelParams),
11194 &pSendBuffer, &usDataOffset, &usSendSize))||
11195 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11196 {
11197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11198 "Unable to get send buffer in channel switch req %x %x %x",
11199 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 }
11203
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011206#ifndef WLAN_FEATURE_VOWIFI
11207 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11209#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011210 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11212
11213#ifdef WLAN_FEATURE_VOWIFI
11214 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11217 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11218 WDI_MAC_ADDR_LEN);
11219 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11220 pwdiSwitchChParams->wdiChInfo.macBSSId,
11221 WDI_MAC_ADDR_LEN);
11222#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 wpalMemoryCopy( pSendBuffer+usDataOffset,
11224 &halSwitchChannelReq.switchChannelParams,
11225 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011226
11227 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011229
11230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11234 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011235}/*WDI_ProcessChannelSwitchReq*/
11236
11237/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011240
11241 @param pWDICtx: pointer to the WLAN DAL context
11242 pEventData: pointer to the event information structure
11243
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 @see
11245 @return Result of the function call
11246*/
11247WDI_Status
11248WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011249(
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 WDI_ControlBlockType* pWDICtx,
11251 WDI_EventInfoType* pEventData
11252)
11253{
11254 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11255 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 wpt_uint16 usDataOffset = 0;
11260 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 tConfigStaReqMsg halConfigStaReqMsg;
11264 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11266
11267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 -------------------------------------------------------------------------*/
11270 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11271 ( NULL == pEventData->pCBfnc ))
11272 {
11273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011277 }
11278
11279 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11280 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11281 /*-------------------------------------------------------------------------
11282 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 -------------------------------------------------------------------------*/
11285 wpalMutexAcquire(&pWDICtx->wptMutex);
11286
11287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11291 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11292 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011293
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11297 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11298 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011299
11300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 }
11303
11304 /*------------------------------------------------------------------------
11305 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 ------------------------------------------------------------------------*/
11308 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11309 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11311 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11312 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011313
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 }
11318
11319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011320
11321 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11322#ifdef WLAN_FEATURE_11AC
11323 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011324 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 else
11326#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011327 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011328
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 /*-----------------------------------------------------------------------
11330 Get message buffer
11331 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11333 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 {
11337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11338 "Unable to get send buffer in config sta req %x %x %x",
11339 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 }
11343
11344 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 &pwdiConfigSTAParams->wdiReqInfo);
11347
11348 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11349 {
11350 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 WDI_STATableFindStaidByAddr(pWDICtx,
11353 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011355 {
11356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11357 "This station does not exist in the WDI Station Table %d");
11358 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011359 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 }
11362 }
11363 else
11364 {
11365 /* Need to fill in the STA Index to invalid, since at this point we have not
11366 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011367 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 }
11369
11370 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011372
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 wpalMemoryCopy( pSendBuffer+usDataOffset,
11374 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011375 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011376
11377 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011379
Jeff Johnsone7245742012-09-05 17:12:55 -070011380 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11381 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 sizeof(pWDICtx->wdiCachedConfigStaReq));
11383
11384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11388 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011389}/*WDI_ProcessConfigStaReq*/
11390
11391
11392/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011395
11396 @param pWDICtx: pointer to the WLAN DAL context
11397 pEventData: pointer to the event information structure
11398
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 @see
11400 @return Result of the function call
11401*/
11402WDI_Status
11403WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011404(
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 WDI_ControlBlockType* pWDICtx,
11406 WDI_EventInfoType* pEventData
11407)
11408{
11409 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11410 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 wpt_uint16 usDataOffset = 0;
11415 wpt_uint16 usSendSize = 0;
11416 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11419
11420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 -------------------------------------------------------------------------*/
11423 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11424 ( NULL == pEventData->pCBfnc ))
11425 {
11426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011430 }
11431
11432 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11433 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11434 /*-------------------------------------------------------------------------
11435 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 -------------------------------------------------------------------------*/
11438 wpalMutexAcquire(&pWDICtx->wptMutex);
11439
11440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11444 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11445 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011446
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11451 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 }
11453 else
11454 {
11455 /*------------------------------------------------------------------------
11456 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 ------------------------------------------------------------------------*/
11459 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11460 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11462 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11463 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11464
11465 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011467 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011468 }
11469 }
11470 /* If the link is set to enter IDLE - the Session allocated for this BSS
11471 will be deleted on the Set Link State response coming from HAL
11472 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11475
11476 wpalMutexRelease(&pWDICtx->wptMutex);
11477 /*-----------------------------------------------------------------------
11478 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011480 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011481
11482 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 sizeof(halLinkStateReqMsg),
11484 &pSendBuffer, &usDataOffset, &usSendSize))||
11485 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11486 {
11487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11488 "Unable to get send buffer in set bss key req %x %x %x",
11489 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 }
11493
11494 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11495 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11496
11497 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11498 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11499
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11502
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 wpalMemoryCopy( pSendBuffer+usDataOffset,
11504 &halLinkStateReqMsg,
11505 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011506
11507 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011509
11510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11514 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011515}/*WDI_ProcessSetLinkStateReq*/
11516
11517
11518/**
11519 @brief Process Get Stats Request function (called when Main FSM
11520 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011521
11522 @param pWDICtx: pointer to the WLAN DAL context
11523 pEventData: pointer to the event information structure
11524
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 @see
11526 @return Result of the function call
11527*/
11528WDI_Status
11529WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011530(
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 WDI_ControlBlockType* pWDICtx,
11532 WDI_EventInfoType* pEventData
11533)
11534{
11535 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11536 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 wpt_uint16 usDataOffset = 0;
11539 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 WDI_BSSSessionType* pBSSSes = NULL;
11542 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 tHalStatsReqMsg halStatsReqMsg;
11545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11546
11547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 -------------------------------------------------------------------------*/
11550 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11551 ( NULL == pEventData->pCBfnc ) )
11552 {
11553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 }
11558
11559 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11560 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11561
11562 /*-------------------------------------------------------------------------
11563 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 -------------------------------------------------------------------------*/
11566 wpalMutexAcquire(&pWDICtx->wptMutex);
11567
11568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11572 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 &macBSSID))
11574 {
11575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11576 "This station does not exist in the WDI Station Table %d");
11577 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 }
11580
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11582 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11585 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11586 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011587
11588 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 }
11591
11592 /*------------------------------------------------------------------------
11593 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 ------------------------------------------------------------------------*/
11596 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11597 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11599 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11600 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011601
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 }
11606
11607
11608 wpalMutexRelease(&pWDICtx->wptMutex);
11609
11610 /*-----------------------------------------------------------------------
11611 Get message buffer
11612 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 sizeof(halStatsReqMsg.statsReqParams),
11615 &pSendBuffer, &usDataOffset, &usSendSize))||
11616 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11617 {
11618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11619 "Unable to get send buffer in set bss key req %x %x %x",
11620 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 }
11624
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 wpalMemoryCopy( pSendBuffer+usDataOffset,
11630 &halStatsReqMsg.statsReqParams,
11631 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
11633 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635
11636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11640 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011641}/*WDI_ProcessGetStatsReq*/
11642
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011643#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11644/**
11645 @brief Process Get Roam Rssi Request function (called when Main FSM
11646 allows it)
11647
11648 @param pWDICtx: pointer to the WLAN DAL context
11649 pEventData: pointer to the event information structure
11650
11651 @see
11652 @return Result of the function call
11653*/
11654WDI_Status
11655WDI_ProcessGetRoamRssiReq
11656(
11657 WDI_ControlBlockType* pWDICtx,
11658 WDI_EventInfoType* pEventData
11659)
11660{
11661 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11662 WDI_GetStatsRspCb wdiGetStatsRspCb;
11663 wpt_uint8* pSendBuffer = NULL;
11664 wpt_uint16 usDataOffset = 0;
11665 wpt_uint16 usSendSize = 0;
11666 wpt_uint8 ucCurrentBSSSesIdx = 0;
11667 WDI_BSSSessionType* pBSSSes = NULL;
11668 wpt_macAddr macBSSID;
11669 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11670 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11672 /*-------------------------------------------------------------------------
11673 Sanity check
11674 -------------------------------------------------------------------------*/
11675 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11676 ( NULL == pEventData->pCBfnc ) )
11677 {
11678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11679 "%s: Invalid parameters", __func__);
11680 WDI_ASSERT(0);
11681 return WDI_STATUS_E_FAILURE;
11682 }
11683
11684 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11685 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11686
11687 /*-------------------------------------------------------------------------
11688 Check to see if we are in the middle of an association, if so queue, if
11689 not it means it is free to process request
11690 -------------------------------------------------------------------------*/
11691 wpalMutexAcquire(&pWDICtx->wptMutex);
11692
11693 /*------------------------------------------------------------------------
11694 Find the BSS for which the request is made
11695 ------------------------------------------------------------------------*/
11696 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11697 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11698 &macBSSID))
11699 {
11700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11701 "This station does not exist in the WDI Station Table %d");
11702 wpalMutexRelease(&pWDICtx->wptMutex);
11703 return WDI_STATUS_E_FAILURE;
11704 }
11705
11706 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11707 if ( NULL == pBSSSes )
11708 {
11709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11710 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11711 __func__, MAC_ADDR_ARRAY(macBSSID));
11712
11713 wpalMutexRelease(&pWDICtx->wptMutex);
11714 return WDI_STATUS_E_NOT_ALLOWED;
11715 }
11716
11717 /*------------------------------------------------------------------------
11718 Check if this BSS is being currently processed or queued,
11719 if queued - queue the new request as well
11720 ------------------------------------------------------------------------*/
11721 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11722 {
11723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11724 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11725 __func__, MAC_ADDR_ARRAY(macBSSID));
11726
11727 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11728 wpalMutexRelease(&pWDICtx->wptMutex);
11729 return wdiStatus;
11730 }
11731
11732 wpalMutexRelease(&pWDICtx->wptMutex);
11733
11734 /*-----------------------------------------------------------------------
11735 Get message buffer
11736 -----------------------------------------------------------------------*/
11737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11738 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11739 &pSendBuffer, &usDataOffset, &usSendSize))||
11740 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11741 {
11742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11743 "Unable to get send buffer in set bss key req %x %x %x",
11744 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11745 WDI_ASSERT(0);
11746 return WDI_STATUS_E_FAILURE;
11747 }
11748
11749 halRssiRoamReqMsg.roamRssiReqParams.staId =
11750 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11751 wpalMemoryCopy( pSendBuffer+usDataOffset,
11752 &halRssiRoamReqMsg.roamRssiReqParams,
11753 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11754
11755 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11756 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11757
11758 /*-------------------------------------------------------------------------
11759 Send Get STA Request to HAL
11760 -------------------------------------------------------------------------*/
11761 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11762 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11763}/*WDI_ProcessGetRoamRssiReq*/
11764#endif
11765
Jeff Johnson295189b2012-06-20 16:38:30 -070011766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011767 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011768 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011769
11770 @param pWDICtx: pointer to the WLAN DAL context
11771 pEventData: pointer to the event information structure
11772
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 @see
11774 @return Result of the function call
11775*/
11776WDI_Status
11777WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011778(
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 WDI_ControlBlockType* pWDICtx,
11780 WDI_EventInfoType* pEventData
11781)
11782{
11783 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11784 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11785
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 wpt_uint16 usDataOffset = 0;
11788 wpt_uint16 usSendSize = 0;
11789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11790
11791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 -------------------------------------------------------------------------*/
11794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11795 ( NULL == pEventData->pCBfnc))
11796 {
11797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 }
11802
11803 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11804 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11805
11806 /*-----------------------------------------------------------------------
11807 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 -----------------------------------------------------------------------*/
11810
Jeff Johnsone7245742012-09-05 17:12:55 -070011811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11813 &pSendBuffer, &usDataOffset, &usSendSize))||
11814 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11815 {
11816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11817 "Unable to get send buffer in set bss key req %x %x %x",
11818 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 }
11822
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 wpalMemoryCopy( pSendBuffer+usDataOffset,
11824 &pwdiUpdateCfgParams->uConfigBufferLen,
11825 sizeof(wpt_uint32));
11826 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11827 pwdiUpdateCfgParams->pConfigBuffer,
11828 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011829
11830 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011832
11833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011834 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011835 -------------------------------------------------------------------------*/
11836
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11838 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011839
11840}/*WDI_ProcessUpdateCfgReq*/
11841
11842
11843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011844 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011846
11847 @param pWDICtx: pointer to the WLAN DAL context
11848 pEventData: pointer to the event information structure
11849
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 @see
11851 @return Result of the function call
11852*/
11853WDI_Status
11854WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011855(
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 WDI_ControlBlockType* pWDICtx,
11857 WDI_EventInfoType* pEventData
11858)
11859{
11860 WDI_AddBAReqParamsType* pwdiAddBAParams;
11861 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 wpt_uint16 usDataOffset = 0;
11866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 wpt_macAddr macBSSID;
11869
11870 tAddBAReqMsg halAddBAReq;
11871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11872
11873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 -------------------------------------------------------------------------*/
11876 if (( NULL == pEventData ) ||
11877 ( NULL == pEventData->pEventData) ||
11878 ( NULL == pEventData->pCBfnc ))
11879 {
11880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 }
11885
11886 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11887 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11888
11889 /*-------------------------------------------------------------------------
11890 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 -------------------------------------------------------------------------*/
11893 wpalMutexAcquire(&pWDICtx->wptMutex);
11894
11895 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11899 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 &macBSSID))
11901 {
11902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11903 "This station does not exist in the WDI Station Table %d");
11904 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011906 }
11907
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11909 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11912 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11913 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011914
11915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 }
11918
11919 /*------------------------------------------------------------------------
11920 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 ------------------------------------------------------------------------*/
11923 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11924 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11926 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11927 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011928
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 }
11933
11934
11935 wpalMutexRelease(&pWDICtx->wptMutex);
11936 /*-----------------------------------------------------------------------
11937 Get message buffer
11938 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 sizeof(halAddBAReq.addBAParams),
11941 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11944 {
11945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11946 "Unable to get send buffer in Add BA req %x %x %x",
11947 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 }
11951
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11954 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11955#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11958#endif
11959
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 wpalMemoryCopy( pSendBuffer+usDataOffset,
11961 &halAddBAReq.addBAParams,
11962 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011963
11964 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011966
11967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11971 wdiAddBARspCb, pEventData->pUserData,
11972 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011973}/*WDI_ProcessAddBAReq*/
11974
11975
11976
11977/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011980
11981 @param pWDICtx: pointer to the WLAN DAL context
11982 pEventData: pointer to the event information structure
11983
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 @see
11985 @return Result of the function call
11986*/
11987WDI_Status
11988WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011989(
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 WDI_ControlBlockType* pWDICtx,
11991 WDI_EventInfoType* pEventData
11992)
11993{
11994 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11995 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 wpt_uint16 usDataOffset = 0;
12000 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 wpt_uint16 index;
12003 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 tTriggerBAReqMsg halTriggerBAReq;
12006 tTriggerBaReqCandidate* halTriggerBACandidate;
12007 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12009
12010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 -------------------------------------------------------------------------*/
12013 if (( NULL == pEventData ) ||
12014 ( NULL == pEventData->pEventData ) ||
12015 ( NULL == pEventData->pCBfnc ))
12016 {
12017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 }
12022
12023 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12024 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12025 /*-------------------------------------------------------------------------
12026 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 -------------------------------------------------------------------------*/
12029 wpalMutexAcquire(&pWDICtx->wptMutex);
12030
12031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12035 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 &macBSSID))
12037 {
12038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12039 "This station does not exist in the WDI Station Table %d");
12040 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 }
12043
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12045 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12048 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12049 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012050
12051 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 }
12054
12055 /*------------------------------------------------------------------------
12056 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 ------------------------------------------------------------------------*/
12059 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12060 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12062 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12063 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012064
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012067 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012068 }
12069
12070
12071 wpalMutexRelease(&pWDICtx->wptMutex);
12072 /*-----------------------------------------------------------------------
12073 Get message buffer
12074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12076 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12080 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12085 {
12086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12087 "Unable to get send buffer in Trigger BA req %x %x %x",
12088 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 }
12092
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12097
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 wpalMemoryCopy( pSendBuffer+usDataOffset,
12099 &halTriggerBAReq.triggerBAParams,
12100 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012101
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12104 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12105 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012106
12107 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 index++)
12109 {
12110 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12111 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12112 halTriggerBACandidate++;
12113 wdiTriggerBACandidate++;
12114 }
12115
12116 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012118
12119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12123 wdiTriggerBARspCb, pEventData->pUserData,
12124 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012125}/*WDI_ProcessTriggerBAReq*/
12126
12127
12128
12129/**
12130 @brief Process Update Beacon Params Request function (called when Main FSM
12131 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012132
12133 @param pWDICtx: pointer to the WLAN DAL context
12134 pEventData: pointer to the event information structure
12135
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 @see
12137 @return Result of the function call
12138*/
12139WDI_Status
12140WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012141(
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 WDI_ControlBlockType* pWDICtx,
12143 WDI_EventInfoType* pEventData
12144)
12145{
12146 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12147 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 wpt_uint16 usDataOffset = 0;
12150 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12153
12154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 -------------------------------------------------------------------------*/
12157 if (( NULL == pEventData ) ||
12158 ( NULL == pEventData->pEventData) ||
12159 ( NULL == pEventData->pCBfnc))
12160 {
12161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 }
12166
12167 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12168 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12169 /*-----------------------------------------------------------------------
12170 Get message buffer
12171 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012172 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 sizeof(halUpdateBeaconParams),
12174 &pSendBuffer, &usDataOffset, &usSendSize))||
12175 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12176 {
12177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12178 "Unable to get send buffer in set bss key req %x %x %x",
12179 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 }
12183
12184 /*BSS Index of the BSS*/
12185 halUpdateBeaconParams.bssIdx =
12186 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12187 /*shortPreamble mode. HAL should update all the STA rates when it
12188 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12191 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12194 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12197
12198 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012201 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12211 halUpdateBeaconParams.fRIFSMode =
12212 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012213 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012214 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12215
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12217 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012218
12219 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012221
12222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12226 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012227}/*WDI_ProcessUpdateBeaconParamsReq*/
12228
12229
12230
12231/**
12232 @brief Process Send Beacon template Request function (called when Main FSM
12233 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012234
12235 @param pWDICtx: pointer to the WLAN DAL context
12236 pEventData: pointer to the event information structure
12237
Jeff Johnson295189b2012-06-20 16:38:30 -070012238 @see
12239 @return Result of the function call
12240*/
12241WDI_Status
12242WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012243(
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 WDI_ControlBlockType* pWDICtx,
12245 WDI_EventInfoType* pEventData
12246)
12247{
12248 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12249 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012251 wpt_uint16 usDataOffset = 0;
12252 wpt_uint16 usSendSize = 0;
12253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12254
12255 tSendBeaconReqMsg halSendBeaconReq;
12256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 -------------------------------------------------------------------------*/
12259 if (( NULL == pEventData ) ||
12260 ( NULL == pEventData->pEventData ) ||
12261 ( NULL == pEventData->pCBfnc ))
12262 {
12263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 }
12268
12269 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12270 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12271 /*-----------------------------------------------------------------------
12272 Get message buffer
12273 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 sizeof(halSendBeaconReq.sendBeaconParam),
12276 &pSendBuffer, &usDataOffset, &usSendSize))||
12277 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12278 {
12279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12280 "Unable to get send buffer in send beacon req %x %x %x",
12281 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 }
12285
12286 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12287 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12288 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12291 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12292 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12293 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012296 /* usP2PIeOffset should be atleast greater than timIeOffset */
12297 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12298 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12299 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12300 {
12301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12302 "Invalid usP2PIeOffset %hu",
12303 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12304 WDI_ASSERT(0);
12305 return WDI_STATUS_E_FAILURE;
12306 }
12307
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012310
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 wpalMemoryCopy( pSendBuffer+usDataOffset,
12312 &halSendBeaconReq.sendBeaconParam,
12313 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012314
12315 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012317
12318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12322 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012323}/*WDI_ProcessSendBeaconParamsReq*/
12324
12325/**
12326 @brief Process Update Beacon Params Request function (called when Main FSM
12327 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012328
12329 @param pWDICtx: pointer to the WLAN DAL context
12330 pEventData: pointer to the event information structure
12331
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 @see
12333 @return Result of the function call
12334*/
12335WDI_Status
12336WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012337(
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 WDI_ControlBlockType* pWDICtx,
12339 WDI_EventInfoType* pEventData
12340)
12341{
12342 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12343 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012345 wpt_uint16 usDataOffset = 0;
12346 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12349
12350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 -------------------------------------------------------------------------*/
12353 if (( NULL == pEventData ) ||
12354 ( NULL == pEventData->pEventData) ||
12355 ( NULL == pEventData->pCBfnc))
12356 {
12357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 }
12362
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12367 /*-----------------------------------------------------------------------
12368 Get message buffer
12369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 sizeof(halUpdateProbeRspTmplParams),
12372 &pSendBuffer, &usDataOffset, &usSendSize))||
12373 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12374 {
12375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12376 "Unable to get send buffer in set bss key req %x %x %x",
12377 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 }
12381
12382 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 WDI_MAC_ADDR_LEN);
12385
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12388
12389 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12390 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012392
12393
12394 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12395 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12396 WDI_PROBE_REQ_BITMAP_IE_LEN);
12397
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 wpalMemoryCopy( pSendBuffer+usDataOffset,
12399 &halUpdateProbeRspTmplParams,
12400 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012401
12402 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012404
12405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12409 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12410 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012411}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12412
12413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012416
12417 @param pWDICtx: pointer to the WLAN DAL context
12418 pEventData: pointer to the event information structure
12419
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 @see
12421 @return Result of the function call
12422*/
12423WDI_Status
12424WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012425(
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 WDI_ControlBlockType* pWDICtx,
12427 WDI_EventInfoType* pEventData
12428)
12429{
12430
12431 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12432 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12433
12434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 -------------------------------------------------------------------------*/
12437 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12442 {
12443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 }
12448
12449 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12452
12453 /*cache the wdi nv request message here if the the first fragment
12454 * To issue the request to HAL for the next fragment */
12455 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12456 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12458 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12460
12461 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12462 pWDICtx->pRspCBUserData = pEventData->pUserData;
12463 }
12464
12465 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12466}
12467
12468/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012471
12472 @param pWDICtx: pointer to the WLAN DAL context
12473 pEventData: pointer to the event information structure
12474
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 @see
12476 @return Result of the function call
12477*/
12478WDI_Status WDI_ProcessSetMaxTxPowerReq
12479(
12480 WDI_ControlBlockType* pWDICtx,
12481 WDI_EventInfoType* pEventData
12482)
12483{
12484 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12485 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 wpt_uint16 usDataOffset = 0;
12488 wpt_uint16 usSendSize = 0;
12489 tSetMaxTxPwrReq halSetMaxTxPower;
12490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12491
12492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 -------------------------------------------------------------------------*/
12495 if (( NULL == pEventData ) ||
12496 ( NULL == pEventData->pEventData ) ||
12497 ( NULL == pEventData->pCBfnc ))
12498 {
12499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12508
12509 /*-----------------------------------------------------------------------
12510 Get message buffer
12511 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012512if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12514 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012516)))
12517 {
12518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12519 "Unable to get Set Max Tx Power req %x %x %x",
12520 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 }
12524
12525 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12526 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12527 WDI_MAC_ADDR_LEN);
12528
12529 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12530 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12531 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012534
12535 wpalMemoryCopy( pSendBuffer+usDataOffset,
12536 &halSetMaxTxPower.setMaxTxPwrParams,
12537 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012538
12539 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012541
12542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12546 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12547 WDI_SET_MAX_TX_POWER_RESP);
12548
Jeff Johnson295189b2012-06-20 16:38:30 -070012549}
12550
schangd82195a2013-03-13 18:41:24 -070012551/**
12552 @brief Process Set Tx Power Request function (called when Main
12553 FSM allows it)
12554
12555 @param pWDICtx: pointer to the WLAN DAL context
12556 pEventData: pointer to the event information structure
12557
12558 @see
12559 @return Result of the function call
12560*/
12561WDI_Status WDI_ProcessSetTxPowerReq
12562(
12563 WDI_ControlBlockType* pWDICtx,
12564 WDI_EventInfoType* pEventData
12565)
12566{
12567 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12568 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12569 wpt_uint8* pSendBuffer = NULL;
12570 wpt_uint16 usDataOffset = 0;
12571 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012572 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12574
12575 /*-------------------------------------------------------------------------
12576 Sanity check
12577 -------------------------------------------------------------------------*/
12578 if (( NULL == pEventData ) ||
12579 ( NULL == pEventData->pEventData ) ||
12580 ( NULL == pEventData->pCBfnc ))
12581 {
12582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12583 "%s: Invalid parameters", __func__);
12584 WDI_ASSERT(0);
12585 return WDI_STATUS_E_FAILURE;
12586 }
12587
12588 pwdiSetTxPowerParams =
12589 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12590 wdiSetTxPowerRspCb =
12591 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12592
12593 /*-----------------------------------------------------------------------
12594 Get message buffer
12595 -----------------------------------------------------------------------*/
12596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12597 sizeof(tSetTxPwrReqParams),
12598 &pSendBuffer, &usDataOffset, &usSendSize))||
12599 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12600 )))
12601 {
12602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12603 "Unable to get Set Max Tx Power req %x %x %x",
12604 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12605 WDI_ASSERT(0);
12606 return WDI_STATUS_E_FAILURE;
12607 }
12608
Leo Changa37e2a92013-03-25 17:39:58 -070012609 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12610 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12611 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012612
12613 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12614 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12615
12616 /*-------------------------------------------------------------------------
12617 Send Set Tx Power Request to HAL
12618 -------------------------------------------------------------------------*/
12619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12620 wdiSetTxPowerRspCb, pEventData->pUserData,
12621 WDI_SET_TX_POWER_RESP);
12622}
Jeff Johnson295189b2012-06-20 16:38:30 -070012623
12624/**
12625 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12626 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012627
12628 @param pWDICtx: pointer to the WLAN DAL context
12629 pEventData: pointer to the event information structure
12630
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 @see
12632 @return Result of the function call
12633*/
12634WDI_Status
12635WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012636(
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 WDI_ControlBlockType* pWDICtx,
12638 WDI_EventInfoType* pEventData
12639)
12640{
12641 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12642 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 wpt_uint16 usDataOffset = 0;
12645 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12648
12649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 -------------------------------------------------------------------------*/
12652 if (( NULL == pEventData ) ||
12653 ( NULL == pEventData->pEventData) ||
12654 ( NULL == pEventData->pCBfnc))
12655 {
12656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 }
12661
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12666 /*-----------------------------------------------------------------------
12667 Get message buffer
12668 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12670 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 sizeof(halSetP2PGONOAParams),
12672 &pSendBuffer, &usDataOffset, &usSendSize))||
12673 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12674 {
12675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12676 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12677 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 }
12681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12686 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12695
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 wpalMemoryCopy( pSendBuffer+usDataOffset,
12697 &halSetP2PGONOAParams,
12698 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012699
12700 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012702
12703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12707 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12708 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012709}/*WDI_ProcessP2PGONOAReq*/
12710
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012711#ifdef FEATURE_WLAN_TDLS
12712
12713/**
12714 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12715 allows it)
12716
12717 @param pWDICtx: pointer to the WLAN DAL context
12718 pEventData: pointer to the event information structure
12719
12720 @see
12721 @return Result of the function call
12722*/
12723WDI_Status
12724WDI_ProcessTdlsLinkEstablishReq
12725(
12726 WDI_ControlBlockType* pWDICtx,
12727 WDI_EventInfoType* pEventData
12728)
12729{
12730 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12731 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12732 wpt_uint8* pSendBuffer = NULL;
12733 wpt_uint16 usDataOffset = 0;
12734 wpt_uint16 usSendSize = 0;
12735
12736 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12738
12739 /*-------------------------------------------------------------------------
12740 Sanity check
12741 -------------------------------------------------------------------------*/
12742 if (( NULL == pEventData ) ||
12743 ( NULL == pEventData->pEventData) ||
12744 ( NULL == pEventData->pCBfnc))
12745 {
12746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12747 "%s: Invalid parameters", __func__);
12748 WDI_ASSERT(0);
12749 return WDI_STATUS_E_FAILURE;
12750 }
12751 pwdiTDLSLinkEstablishReqParams =
12752 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12753 wdiTDLSLinkEstablishReqRspCb =
12754 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12755
12756
12757 /*-----------------------------------------------------------------------
12758 Get message buffer
12759 -----------------------------------------------------------------------*/
12760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12761 WDI_TDLS_LINK_ESTABLISH_REQ,
12762 sizeof(halSetTDLSLinkEstablishParams),
12763 &pSendBuffer, &usDataOffset, &usSendSize))||
12764 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12765 {
12766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12767 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12768 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12769 WDI_ASSERT(0);
12770 return WDI_STATUS_E_FAILURE;
12771 }
12772
12773 halSetTDLSLinkEstablishParams.staIdx =
12774 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12775 halSetTDLSLinkEstablishParams.bIsResponder =
12776 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12777 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12778 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12779 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12780 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12781 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12782 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12783 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12784 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12785 halSetTDLSLinkEstablishParams.aAck = 0;
12786 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12787 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12788 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12789
12790 wpalMemoryCopy( pSendBuffer+usDataOffset,
12791 &halSetTDLSLinkEstablishParams,
12792 sizeof(halSetTDLSLinkEstablishParams));
12793
12794 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12795 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12796
12797 /*-------------------------------------------------------------------------
12798 Send Update Probe Resp Template Request to HAL
12799 -------------------------------------------------------------------------*/
12800 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12801 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12802 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12803 return 0;
12804}/*WDI_ProcessTdlsLinkEstablishReq*/
12805
12806
12807#endif
12808
Jeff Johnson295189b2012-06-20 16:38:30 -070012809
12810
12811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 @param None
12815
12816 @see
12817 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012818*/
12819void
12820WDI_SetPowerStateCb
12821(
12822 wpt_status status,
12823 unsigned int dxePhyAddr,
12824 void *pContext
12825)
12826{
12827 wpt_status wptStatus;
12828 WDI_ControlBlockType *pCB = NULL;
12829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12830 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12831 {
12832 //it shouldn't happen, put an error msg
12833 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 /*
12835 * Trigger the event to bring the Enter BMPS req function to come
12836 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012837*/
12838 if( NULL != pContext )
12839 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 }
12842 else
12843 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012844 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 pCB = &gWDICb;
12846 }
12847 pCB->dxePhyAddr = dxePhyAddr;
12848 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12849 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12850 {
12851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12852 "Failed to set an event");
12853
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 }
12856 return;
12857}
12858
12859
12860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012863
12864 @param pWDICtx: pointer to the WLAN DAL context
12865 pEventData: pointer to the event information structure
12866
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 @see
12868 @return Result of the function call
12869*/
12870WDI_Status
12871WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012872(
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 WDI_ControlBlockType* pWDICtx,
12874 WDI_EventInfoType* pEventData
12875)
12876{
Jeff Johnson43971f52012-07-17 12:26:56 -070012877 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 wpt_uint16 usDataOffset = 0;
12881 wpt_uint16 usSendSize = 0;
12882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12883
12884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 -------------------------------------------------------------------------*/
12887 if (( NULL == pEventData ) ||
12888 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12889 {
12890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012893 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 }
12895
12896 /*-----------------------------------------------------------------------
12897 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 0,
12902 &pSendBuffer, &usDataOffset, &usSendSize))||
12903 ( usSendSize < (usDataOffset )))
12904 {
12905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12906 "Unable to get send buffer in Enter IMPS req %x %x",
12907 pEventData, wdiEnterImpsRspCb);
12908 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012909 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 }
12911
12912 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012913 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12914 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 {
12916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12917 "WDI Init failed to reset an event");
12918
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012920 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 }
12922
12923 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012924 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12925 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12927 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12928 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012929 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012930 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012931
12932 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012935 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12936 WDI_SET_POWER_STATE_TIMEOUT);
12937 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 {
12939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12940 "WDI Init failed to wait on an event");
12941
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012943 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012944 }
12945
12946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012947 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12950 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012951
12952fail:
12953 // Release the message buffer so we don't leak
12954 wpalMemoryFree(pSendBuffer);
12955
12956failRequest:
12957 //WDA should have failure check to avoid the memory leak
12958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959}/*WDI_ProcessEnterImpsReq*/
12960
12961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012964
12965 @param pWDICtx: pointer to the WLAN DAL context
12966 pEventData: pointer to the event information structure
12967
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 @see
12969 @return Result of the function call
12970*/
12971WDI_Status
12972WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012973(
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 WDI_ControlBlockType* pWDICtx,
12975 WDI_EventInfoType* pEventData
12976)
12977{
12978 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 wpt_uint16 usDataOffset = 0;
12981 wpt_uint16 usSendSize = 0;
12982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12983
12984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 -------------------------------------------------------------------------*/
12987 if (( NULL == pEventData ) ||
12988 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12989 {
12990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 }
12995
12996 /*-----------------------------------------------------------------------
12997 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012998 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 0,
13002 &pSendBuffer, &usDataOffset, &usSendSize))||
13003 ( usSendSize < (usDataOffset )))
13004 {
13005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13006 "Unable to get send buffer in Exit IMPS req %x %x",
13007 pEventData, wdiExitImpsRspCb);
13008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 }
13011
13012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13016 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013017}/*WDI_ProcessExitImpsReq*/
13018
13019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013022
13023 @param pWDICtx: pointer to the WLAN DAL context
13024 pEventData: pointer to the event information structure
13025
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 @see
13027 @return Result of the function call
13028*/
13029WDI_Status
13030WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013031(
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 WDI_ControlBlockType* pWDICtx,
13033 WDI_EventInfoType* pEventData
13034)
13035{
13036 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13037 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 wpt_uint16 usDataOffset = 0;
13040 wpt_uint16 usSendSize = 0;
13041 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013042 wpt_status wptStatus;
13043
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13045
13046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 -------------------------------------------------------------------------*/
13049 if (( NULL == pEventData ) ||
13050 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13051 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13052 {
13053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013056 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 }
13058
13059 /*-----------------------------------------------------------------------
13060 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 sizeof(enterBmpsReq),
13065 &pSendBuffer, &usDataOffset, &usSendSize))||
13066 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13067 {
13068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13069 "Unable to get send buffer in Enter BMPS req %x %x %x",
13070 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13071 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013072 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 }
13074
13075 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013076 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13077 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 {
13079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13080 "WDI Init failed to reset an event");
13081
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013083 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 }
13085
13086 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013087 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13088 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13089 {
13090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13091 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13092 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013093 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013094 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013095
13096/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013099 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13100 WDI_SET_POWER_STATE_TIMEOUT);
13101 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 {
13103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13104 "WDI Init failed to wait on an event");
13105
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013107 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 }
13109
13110 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13111
13112 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13113 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13114 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13115 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13116
13117 // For CCX and 11R Roaming
13118 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13119 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13120 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13121
13122 wpalMemoryCopy( pSendBuffer+usDataOffset,
13123 &enterBmpsReq,
13124 sizeof(enterBmpsReq));
13125
13126 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013127 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013128
13129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013132 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13133 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013134
13135fail:
13136 // Release the message buffer so we don't leak
13137 wpalMemoryFree(pSendBuffer);
13138
13139failRequest:
13140 //WDA should have failure check to avoid the memory leak
13141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013142}/*WDI_ProcessEnterBmpsReq*/
13143
13144/**
13145 @brief Process Exit BMPS Request function (called when Main FSM
13146 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013147
13148 @param pWDICtx: pointer to the WLAN DAL context
13149 pEventData: pointer to the event information structure
13150
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 @see
13152 @return Result of the function call
13153*/
13154WDI_Status
13155WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013156(
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 WDI_ControlBlockType* pWDICtx,
13158 WDI_EventInfoType* pEventData
13159)
13160{
13161 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13162 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013164 wpt_uint16 usDataOffset = 0;
13165 wpt_uint16 usSendSize = 0;
13166 tHalExitBmpsReqParams exitBmpsReq;
13167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13168
13169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 -------------------------------------------------------------------------*/
13172 if (( NULL == pEventData ) ||
13173 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13174 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13175 {
13176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 }
13181
13182 /*-----------------------------------------------------------------------
13183 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 sizeof(exitBmpsReq),
13188 &pSendBuffer, &usDataOffset, &usSendSize))||
13189 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13190 {
13191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13192 "Unable to get send buffer in Exit BMPS req %x %x %x",
13193 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 }
13197 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13198
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13200
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 wpalMemoryCopy( pSendBuffer+usDataOffset,
13202 &exitBmpsReq,
13203 sizeof(exitBmpsReq));
13204
13205 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013207
13208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13212 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013213}/*WDI_ProcessExitBmpsReq*/
13214
13215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013218
13219 @param pWDICtx: pointer to the WLAN DAL context
13220 pEventData: pointer to the event information structure
13221
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 @see
13223 @return Result of the function call
13224*/
13225WDI_Status
13226WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013227(
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 WDI_ControlBlockType* pWDICtx,
13229 WDI_EventInfoType* pEventData
13230)
13231{
13232 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13233 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 wpt_uint16 usDataOffset = 0;
13236 wpt_uint16 usSendSize = 0;
13237 tUapsdReqParams enterUapsdReq;
13238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13239
13240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 -------------------------------------------------------------------------*/
13243 if (( NULL == pEventData ) ||
13244 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13245 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13246 {
13247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 }
13252
13253 /*-----------------------------------------------------------------------
13254 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013258 sizeof(enterUapsdReq),
13259 &pSendBuffer, &usDataOffset, &usSendSize))||
13260 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13261 {
13262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13263 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13264 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 }
13268
13269 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13270 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13271 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13272 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13273 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13274 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13275 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13276 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013278
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 wpalMemoryCopy( pSendBuffer+usDataOffset,
13280 &enterUapsdReq,
13281 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013282
13283 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013285
13286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13290 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013291}/*WDI_ProcessEnterUapsdReq*/
13292
13293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013296
13297 @param pWDICtx: pointer to the WLAN DAL context
13298 pEventData: pointer to the event information structure
13299
Jeff Johnson295189b2012-06-20 16:38:30 -070013300 @see
13301 @return Result of the function call
13302*/
13303WDI_Status
13304WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013305(
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 WDI_ControlBlockType* pWDICtx,
13307 WDI_EventInfoType* pEventData
13308)
13309{
13310 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 wpt_uint16 usDataOffset = 0;
13313 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013314 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13315 wpt_uint8 bssIdx = 0;
13316
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13318
13319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 -------------------------------------------------------------------------*/
13322 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013323 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13325 {
13326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013327 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013330 }
13331
13332 /*-----------------------------------------------------------------------
13333 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013334 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013337 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013339 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013340 {
13341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13342 "Unable to get send buffer in Exit UAPSD req %x %x",
13343 pEventData, wdiExitUapsdRspCb);
13344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 }
13347
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013348 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13349
13350 wpalMemoryCopy( pSendBuffer+usDataOffset,
13351 &bssIdx,
13352 sizeof(wpt_uint8));
13353
13354 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13355 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13356
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13361 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013362}/*WDI_ProcessExitUapsdReq*/
13363
13364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013367
13368 @param pWDICtx: pointer to the WLAN DAL context
13369 pEventData: pointer to the event information structure
13370
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 @see
13372 @return Result of the function call
13373*/
13374WDI_Status
13375WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013376(
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 WDI_ControlBlockType* pWDICtx,
13378 WDI_EventInfoType* pEventData
13379)
13380{
13381 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13382 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 wpt_uint16 usDataOffset = 0;
13385 wpt_uint16 usSendSize = 0;
13386 tUapsdInfo uapsdAcParamsReq;
13387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13388
13389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 -------------------------------------------------------------------------*/
13392 if (( NULL == pEventData ) ||
13393 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13394 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13395 {
13396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 }
13401
13402 /*-----------------------------------------------------------------------
13403 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 sizeof(uapsdAcParamsReq),
13408 &pSendBuffer, &usDataOffset, &usSendSize))||
13409 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13410 {
13411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13412 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13413 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 }
13417
13418 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13419 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13420 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13421 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13422 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13423 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13424
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 wpalMemoryCopy( pSendBuffer+usDataOffset,
13426 &uapsdAcParamsReq,
13427 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013428
13429 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013431
13432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13436 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013437}/*WDI_ProcessSetUapsdAcParamsReq*/
13438
13439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013442
13443 @param pWDICtx: pointer to the WLAN DAL context
13444 pEventData: pointer to the event information structure
13445
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 @see
13447 @return Result of the function call
13448*/
13449WDI_Status
13450WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013451(
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 WDI_ControlBlockType* pWDICtx,
13453 WDI_EventInfoType* pEventData
13454)
13455{
13456 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13457 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 wpt_uint16 usDataOffset = 0;
13460 wpt_uint16 usSendSize = 0;
13461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13462
13463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 -------------------------------------------------------------------------*/
13466 if (( NULL == pEventData ) ||
13467 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13468 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13469 {
13470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 }
13475
13476 /*-----------------------------------------------------------------------
13477 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13482 &pSendBuffer, &usDataOffset, &usSendSize))||
13483 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13484 {
13485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13486 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13487 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 }
13491
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 wpalMemoryCopy( pSendBuffer+usDataOffset,
13493 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13494 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013495
13496 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498
13499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13503 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013504}/*WDI_ProcessUpdateUapsdParamsReq*/
13505
13506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013507 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013509
13510 @param pWDICtx: pointer to the WLAN DAL context
13511 pEventData: pointer to the event information structure
13512
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 @see
13514 @return Result of the function call
13515*/
13516WDI_Status
13517WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013518(
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 WDI_ControlBlockType* pWDICtx,
13520 WDI_EventInfoType* pEventData
13521)
13522{
13523 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13524 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 wpt_uint16 usDataOffset = 0;
13527 wpt_uint16 usSendSize = 0;
13528 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13529
13530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13531
13532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 -------------------------------------------------------------------------*/
13535 if (( NULL == pEventData ) ||
13536 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13537 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13538 {
13539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 }
13544
13545 /*-----------------------------------------------------------------------
13546 Get message buffer
13547 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013548 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 sizeof(halRxpFilterParams),
13550 &pSendBuffer, &usDataOffset, &usSendSize))||
13551 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13552 {
13553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13554 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13555 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 }
13559
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013562 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13564
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 wpalMemoryCopy( pSendBuffer+usDataOffset,
13566 &halRxpFilterParams,
13567 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013568
13569 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013571
13572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13576 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013577}/*WDI_ProcessConfigureRxpFilterReq*/
13578
13579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013582
13583 @param pWDICtx: pointer to the WLAN DAL context
13584 pEventData: pointer to the event information structure
13585
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 @see
13587 @return Result of the function call
13588*/
13589WDI_Status
13590WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013591(
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 WDI_ControlBlockType* pWDICtx,
13593 WDI_EventInfoType* pEventData
13594)
13595{
13596 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13597 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 wpt_uint16 usDataOffset = 0;
13600 wpt_uint16 usSendSize = 0;
13601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13602
13603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 -------------------------------------------------------------------------*/
13606 if (( NULL == pEventData ) ||
13607 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13608 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13609 {
13610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 }
13615
13616 /*-----------------------------------------------------------------------
13617 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13622 &pSendBuffer, &usDataOffset, &usSendSize))||
13623 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13624 {
13625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13626 "Unable to get send buffer in Set beacon filter req %x %x %x",
13627 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 }
13631
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wpalMemoryCopy( pSendBuffer+usDataOffset,
13633 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13634 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13635 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13636 &pwdiBeaconFilterParams->aFilters[0],
13637 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013638
13639 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013641
13642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013643 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13646 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013647}/*WDI_ProcessSetBeaconFilterReq*/
13648
13649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013652
13653 @param pWDICtx: pointer to the WLAN DAL context
13654 pEventData: pointer to the event information structure
13655
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 @see
13657 @return Result of the function call
13658*/
13659WDI_Status
13660WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013661(
Jeff Johnson295189b2012-06-20 16:38:30 -070013662 WDI_ControlBlockType* pWDICtx,
13663 WDI_EventInfoType* pEventData
13664)
13665{
13666 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13667 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 wpt_uint16 usDataOffset = 0;
13670 wpt_uint16 usSendSize = 0;
13671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13672
13673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 -------------------------------------------------------------------------*/
13676 if (( NULL == pEventData ) ||
13677 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13678 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13679 {
13680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 }
13685
13686 /*-----------------------------------------------------------------------
13687 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13692 &pSendBuffer, &usDataOffset, &usSendSize))||
13693 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13694 {
13695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13696 "Unable to get send buffer in remove beacon filter req %x %x %x",
13697 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 }
13701
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 wpalMemoryCopy( pSendBuffer+usDataOffset,
13703 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13704 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013705
13706 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013708
13709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13713 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013714}
13715
13716/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013717 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013718 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013719
13720 @param pWDICtx: pointer to the WLAN DAL context
13721 pEventData: pointer to the event information structure
13722
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 @see
13724 @return Result of the function call
13725*/
13726WDI_Status
13727WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013728(
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 WDI_ControlBlockType* pWDICtx,
13730 WDI_EventInfoType* pEventData
13731)
13732{
13733 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13734 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 wpt_uint16 usDataOffset = 0;
13737 wpt_uint16 usSendSize = 0;
13738 tHalRSSIThresholds rssiThresholdsReq;
13739 WDI_Status ret_status = 0;
13740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13741
13742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 -------------------------------------------------------------------------*/
13745 if (( NULL == pEventData ) ||
13746 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13747 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13748 {
13749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 }
13754
13755 /*-----------------------------------------------------------------------
13756 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 sizeof(rssiThresholdsReq),
13761 &pSendBuffer, &usDataOffset, &usSendSize))||
13762 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13763 {
13764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13765 "Unable to get send buffer in remove beacon filter req %x %x %x",
13766 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 }
13770
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013773 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013778 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13791
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 wpalMemoryCopy( pSendBuffer+usDataOffset,
13793 &rssiThresholdsReq,
13794 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013795
13796 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013798
13799 /*-------------------------------------------------------------------------
13800 Send Set threshold req to HAL
13801 -------------------------------------------------------------------------*/
13802 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13803 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13804 {
13805 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13806 // req. Then as a result of processing the threshold cross ind, we trigger
13807 // a Set threshold req, then we need to indicate to WDI that it needs to
13808 // go to busy state as a result of the indication as we sent a req in the
13809 // same WDI context.
13810 // Hence expected state transition is to busy.
13811 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13812 }
13813
13814 return ret_status;
13815}
13816
13817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013820
13821 @param pWDICtx: pointer to the WLAN DAL context
13822 pEventData: pointer to the event information structure
13823
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 @see
13825 @return Result of the function call
13826*/
13827WDI_Status
13828WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013829(
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 WDI_ControlBlockType* pWDICtx,
13831 WDI_EventInfoType* pEventData
13832)
13833{
13834 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13835 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 wpt_uint16 usDataOffset = 0;
13838 wpt_uint16 usSendSize = 0;
13839 tHalHostOffloadReq hostOffloadParams;
13840 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013841 wpt_uint8 ucCurrentBSSSesIdx = 0;
13842 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013843
13844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13845
13846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 -------------------------------------------------------------------------*/
13849 if (( NULL == pEventData ) ||
13850 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13851 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13852 {
13853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013856 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 }
13858
13859 /*-----------------------------------------------------------------------
13860 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13865 &pSendBuffer, &usDataOffset, &usSendSize))||
13866 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13867 {
13868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13869 "Unable to get send buffer in host offload req %x %x %x",
13870 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13871 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013872 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 }
13874
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013875 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13876 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13877 &pBSSSes);
13878 if ( NULL == pBSSSes )
13879 {
13880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013881 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13882 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013883 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013884 }
13885
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13887 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013888
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13890 {
13891 // ARP Offload
13892 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13893 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13894 4);
13895 }
13896 else
13897 {
13898 // NS Offload
13899 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13900 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13901 16);
13902
13903#ifdef WLAN_NS_OFFLOAD
13904 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13905 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13906 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13907 16);
13908 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13909 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13910 16);
13911 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13912 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13913 16);
13914 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13915 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13916 16);
13917 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13918 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13919 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013920 nsOffloadParams.srcIPv6AddrValid =
13921 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13922
13923 nsOffloadParams.targetIPv6Addr1Valid =
13924 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13925
13926 nsOffloadParams.targetIPv6Addr2Valid =
13927 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13928
13929 nsOffloadParams.slotIndex =
13930 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932#endif // WLAN_NS_OFFLOAD
13933 }
13934
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013935 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13936
Jeff Johnson295189b2012-06-20 16:38:30 -070013937 // copy hostOffloadParams into pSendBuffer
13938 wpalMemoryCopy( pSendBuffer+usDataOffset,
13939 &hostOffloadParams,
13940 sizeof(hostOffloadParams));
13941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013942 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013944 // copy nsOffloadParams into pSendBuffer
13945 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 &nsOffloadParams,
13947 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013948 }
13949 else
13950 {
13951#ifdef WLAN_NS_OFFLOAD
13952 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13953 {
13954 // copy nsOffloadParams into pSendBuffer
13955 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13956 &nsOffloadParams,
13957 sizeof(nsOffloadParams));
13958 }
13959#endif
13960 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013961
13962 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013964
13965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13969 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013970
13971fail:
13972 // Release the message buffer so we don't leak
13973 wpalMemoryFree(pSendBuffer);
13974
13975failRequest:
13976 //WDA should have failure check to avoid the memory leak
13977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978}/*WDI_ProcessHostOffloadReq*/
13979
13980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013983
13984 @param pWDICtx: pointer to the WLAN DAL context
13985 pEventData: pointer to the event information structure
13986
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 @see
13988 @return Result of the function call
13989*/
13990WDI_Status
13991WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013992(
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 WDI_ControlBlockType* pWDICtx,
13994 WDI_EventInfoType* pEventData
13995)
13996{
13997 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13998 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 wpt_uint16 usDataOffset = 0;
14001 wpt_uint16 usSendSize = 0;
14002 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014003 wpt_uint8 ucCurrentBSSSesIdx = 0;
14004 WDI_BSSSessionType* pBSSSes = NULL;
14005
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14007
14008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 -------------------------------------------------------------------------*/
14011 if (( NULL == pEventData ) ||
14012 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14013 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14014 {
14015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14016 "Invalid parameters in Keep Alive req");
14017 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014018 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 }
14020
14021 /*-----------------------------------------------------------------------
14022 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014023 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 sizeof(keepAliveReq),
14027 &pSendBuffer, &usDataOffset, &usSendSize))||
14028 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14029 {
14030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14031 "Unable to get send buffer in keep alive req %x %x %x",
14032 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14033 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014034 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 }
14036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014037 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14038 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14039 &pBSSSes);
14040 if ( NULL == pBSSSes )
14041 {
14042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014043 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014044 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014045 }
14046
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14048 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14049
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014050 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014051
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14053 {
14054 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14055 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14056 HAL_IPV4_ADDR_LEN);
14057 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14058 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 wpalMemoryCopy(keepAliveReq.destMacAddr,
14061 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14062 HAL_MAC_ADDR_LEN);
14063 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014064
14065 wpalMemoryCopy( pSendBuffer+usDataOffset,
14066 &keepAliveReq,
14067 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014068
14069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14070 "Process keep alive req %d",sizeof(keepAliveReq));
14071
14072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14073 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14074
14075 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014077
14078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14079 "Sending keep alive req to HAL");
14080
14081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14085 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014086
14087fail:
14088 // Release the message buffer so we don't leak
14089 wpalMemoryFree(pSendBuffer);
14090
14091failRequest:
14092 //WDA should have failure check to avoid the memory leak
14093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014094}/*WDI_ProcessKeepAliveReq*/
14095
14096
14097/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014100
14101 @param pWDICtx: pointer to the WLAN DAL context
14102 pEventData: pointer to the event information structure
14103
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 @see
14105 @return Result of the function call
14106*/
14107WDI_Status
14108WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014109(
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 WDI_ControlBlockType* pWDICtx,
14111 WDI_EventInfoType* pEventData
14112)
14113{
14114 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14115 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014116 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014117 wpt_uint16 usDataOffset = 0;
14118 wpt_uint16 usSendSize = 0;
14119 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014120 wpt_uint8 ucCurrentBSSSesIdx = 0;
14121 WDI_BSSSessionType* pBSSSes = NULL;
14122
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14124
14125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 -------------------------------------------------------------------------*/
14128 if (( NULL == pEventData ) ||
14129 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14130 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14131 {
14132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014135 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 }
14137
14138 /*-----------------------------------------------------------------------
14139 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 sizeof(wowlAddBcPtrnReq),
14144 &pSendBuffer, &usDataOffset, &usSendSize))||
14145 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14146 {
14147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14148 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14149 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14150 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014151 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 }
14153
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014154 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14155 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14156 &pBSSSes);
14157 if ( NULL == pBSSSes )
14158 {
14159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014160 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014161 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014162 }
14163
Jeff Johnsone7245742012-09-05 17:12:55 -070014164 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014165 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14172
14173 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14174 {
14175 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14176 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14177 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14178 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14179 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14180 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14181 }
14182 else
14183 {
14184 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14185 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14186 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14187 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14188 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14189 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14190
14191 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14192 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14193 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14194 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14195 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14196 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14197 }
14198
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014199 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14200
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 wpalMemoryCopy( pSendBuffer+usDataOffset,
14202 &wowlAddBcPtrnReq,
14203 sizeof(wowlAddBcPtrnReq));
14204
14205 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014206 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014207
14208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14212 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014213fail:
14214 // Release the message buffer so we don't leak
14215 wpalMemoryFree(pSendBuffer);
14216
14217failRequest:
14218 //WDA should have failure check to avoid the memory leak
14219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014220}/*WDI_ProcessWowlAddBcPtrnReq*/
14221
14222/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014223 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014225
14226 @param pWDICtx: pointer to the WLAN DAL context
14227 pEventData: pointer to the event information structure
14228
Jeff Johnson295189b2012-06-20 16:38:30 -070014229 @see
14230 @return Result of the function call
14231*/
14232WDI_Status
14233WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014234(
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 WDI_ControlBlockType* pWDICtx,
14236 WDI_EventInfoType* pEventData
14237)
14238{
14239 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14240 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014241 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 wpt_uint16 usDataOffset = 0;
14243 wpt_uint16 usSendSize = 0;
14244 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014245 wpt_uint8 ucCurrentBSSSesIdx = 0;
14246 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14248
14249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 -------------------------------------------------------------------------*/
14252 if (( NULL == pEventData ) ||
14253 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14254 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14255 {
14256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014259 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 }
14261
14262 /*-----------------------------------------------------------------------
14263 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 sizeof(wowlDelBcPtrnReq),
14268 &pSendBuffer, &usDataOffset, &usSendSize))||
14269 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14270 {
14271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14272 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14273 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14274 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014275 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 }
14277
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014278 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14279 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14280 &pBSSSes);
14281 if ( NULL == pBSSSes )
14282 {
14283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014284 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014285 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014286 }
14287
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014290
14291 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14292
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 wpalMemoryCopy( pSendBuffer+usDataOffset,
14294 &wowlDelBcPtrnReq,
14295 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014296
14297 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014299
14300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14304 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014305
14306fail:
14307 // Release the message buffer so we don't leak
14308 wpalMemoryFree(pSendBuffer);
14309
14310failRequest:
14311 //WDA should have failure check to avoid the memory leak
14312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014313}/*WDI_ProcessWowlDelBcPtrnReq*/
14314
14315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014318
14319 @param pWDICtx: pointer to the WLAN DAL context
14320 pEventData: pointer to the event information structure
14321
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 @see
14323 @return Result of the function call
14324*/
14325WDI_Status
14326WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014327(
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 WDI_ControlBlockType* pWDICtx,
14329 WDI_EventInfoType* pEventData
14330)
14331{
14332 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14333 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 wpt_uint16 usDataOffset = 0;
14336 wpt_uint16 usSendSize = 0;
14337 tHalWowlEnterParams wowlEnterReq;
14338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14339
14340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 -------------------------------------------------------------------------*/
14343 if (( NULL == pEventData ) ||
14344 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14345 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14346 {
14347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 }
14352
14353 /*-----------------------------------------------------------------------
14354 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 sizeof(wowlEnterReq),
14359 &pSendBuffer, &usDataOffset, &usSendSize))||
14360 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14361 {
14362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14363 "Unable to get send buffer in Wowl enter req %x %x %x",
14364 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014367 }
14368
Kumar Anand21a26022013-07-22 14:35:34 -070014369 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14370
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14387
14388#ifdef WLAN_WAKEUP_EVENTS
14389 wowlEnterReq.ucWoWEAPIDRequestEnable =
14390 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14391
14392 wowlEnterReq.ucWoWEAPOL4WayEnable =
14393 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14394
14395 wowlEnterReq.ucWowNetScanOffloadMatch =
14396 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14397
14398 wowlEnterReq.ucWowGTKRekeyError =
14399 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14400
14401 wowlEnterReq.ucWoWBSSConnLoss =
14402 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14403#endif // WLAN_WAKEUP_EVENTS
14404
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014405 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14406
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14408 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14409 sizeof(tSirMacAddr));
14410
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 wpalMemoryCopy( pSendBuffer+usDataOffset,
14412 &wowlEnterReq,
14413 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014414
14415 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014417
14418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14422 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014423}/*WDI_ProcessWowlEnterReq*/
14424
14425/**
14426 @brief Process Wowl exit Request function (called when Main FSM
14427 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014428
14429 @param pWDICtx: pointer to the WLAN DAL context
14430 pEventData: pointer to the event information structure
14431
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 @see
14433 @return Result of the function call
14434*/
14435WDI_Status
14436WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014437(
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 WDI_ControlBlockType* pWDICtx,
14439 WDI_EventInfoType* pEventData
14440)
14441{
14442 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014443 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 wpt_uint16 usDataOffset = 0;
14446 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014447 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14449
14450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 -------------------------------------------------------------------------*/
14453 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014454 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14456 {
14457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 }
14462
14463 /*-----------------------------------------------------------------------
14464 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014468 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014470 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 {
14472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14473 "Unable to get send buffer in Wowl Exit req %x %x",
14474 pEventData, wdiWowlExitCb);
14475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 }
14478
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014479 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14480
14481 wpalMemoryCopy( pSendBuffer+usDataOffset,
14482 &wowlExitparams,
14483 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14488 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014489}/*WDI_ProcessWowlExitReq*/
14490
14491/**
14492 @brief Process Configure Apps Cpu Wakeup State Request function
14493 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014494
14495 @param pWDICtx: pointer to the WLAN DAL context
14496 pEventData: pointer to the event information structure
14497
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 @see
14499 @return Result of the function call
14500*/
14501WDI_Status
14502WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014503(
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 WDI_ControlBlockType* pWDICtx,
14505 WDI_EventInfoType* pEventData
14506)
14507{
14508 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14509 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 wpt_uint16 usDataOffset = 0;
14512 wpt_uint16 usSendSize = 0;
14513 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14515
14516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 -------------------------------------------------------------------------*/
14519 if (( NULL == pEventData ) ||
14520 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14521 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14522 {
14523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 }
14528
14529 /*-----------------------------------------------------------------------
14530 Get message buffer
14531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 sizeof(halCfgAppsCpuWakeupStateReqParams),
14534 &pSendBuffer, &usDataOffset, &usSendSize))||
14535 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14536 {
14537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14538 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14539 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 }
14543
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14546
Jeff Johnsone7245742012-09-05 17:12:55 -070014547 wpalMemoryCopy( pSendBuffer+usDataOffset,
14548 &halCfgAppsCpuWakeupStateReqParams,
14549 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014550
14551 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014553
14554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14558 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14559 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014560}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14561
14562#ifdef WLAN_FEATURE_VOWIFI_11R
14563/**
14564 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14565 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014566
14567 @param pWDICtx: pointer to the WLAN DAL context
14568 pEventData: pointer to the event information structure
14569
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 @see
14571 @return Result of the function call
14572*/
14573WDI_Status
14574WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014575(
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 WDI_ControlBlockType* pWDICtx,
14577 WDI_EventInfoType* pEventData
14578)
14579{
14580 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14581 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 wpt_uint16 usDataOffset = 0;
14586 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 wpt_macAddr macBSSID;
14589 tAggrAddTsReq halAggrAddTsReq;
14590 int i;
14591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14592
14593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 -------------------------------------------------------------------------*/
14596 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14597 ( NULL == pEventData->pCBfnc ))
14598 {
14599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 }
14604 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14605 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14606 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14607 /*-------------------------------------------------------------------------
14608 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 -------------------------------------------------------------------------*/
14611 wpalMutexAcquire(&pWDICtx->wptMutex);
14612
14613 /*------------------------------------------------------------------------
14614 Find the BSS for which the request is made and identify WDI session
14615 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14617 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 &macBSSID))
14619 {
14620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14621 "This station does not exist in the WDI Station Table %d");
14622 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 }
14625
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14627 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14630 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14631 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014632
14633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014636
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 /*------------------------------------------------------------------------
14638 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014639 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 ------------------------------------------------------------------------*/
14641 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14642 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14644 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14645 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014646
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 }
14651
14652 wpalMutexRelease(&pWDICtx->wptMutex);
14653 /*-----------------------------------------------------------------------
14654 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 sizeof(tAggrAddTsParams),
14659 &pSendBuffer, &usDataOffset, &usSendSize))||
14660 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14661 {
14662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14663 "Unable to get send buffer in set bss key req %x %x %x",
14664 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 }
14668
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14673
14674 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14675 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14682 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14685 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14688 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14691 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14694 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14697 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14700 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14703 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014708
14709
14710 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014714 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014715 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14740 }
14741
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 wpalMemoryCopy( pSendBuffer+usDataOffset,
14743 &halAggrAddTsReq,
14744 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014745
14746 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014748
14749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014755}/*WDI_ProcessAggrAddTSpecReq*/
14756#endif /* WLAN_FEATURE_VOWIFI_11R */
14757
14758/**
14759 @brief Process Shutdown Request function (called when Main FSM
14760 allows it)
14761
14762 @param pWDICtx: pointer to the WLAN DAL context
14763 pEventData: pointer to the event information structure
14764
14765 @see
14766 @return Result of the function call
14767*/
14768WDI_Status
14769WDI_ProcessShutdownReq
14770(
14771 WDI_ControlBlockType* pWDICtx,
14772 WDI_EventInfoType* pEventData
14773 )
14774{
14775 wpt_status wptStatus;
14776
14777
14778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14779
14780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 -------------------------------------------------------------------------*/
14783 if ( NULL == pEventData )
14784 {
14785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 WDI_ASSERT(0);
14788 return WDI_STATUS_E_FAILURE;
14789 }
14790
14791 wpalMutexAcquire(&pWDICtx->wptMutex);
14792
14793
14794 gWDIInitialized = eWLAN_PAL_FALSE;
14795 /*! TO DO: stop the data services */
14796 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14797 {
14798 /*Stop the STA Table !UT- check this logic again
14799 It is safer to do it here than on the response - because a stop is imminent*/
14800 WDI_STATableStop(pWDICtx);
14801
14802 /* Stop Transport Driver, DXE */
14803 WDTS_Stop(pWDICtx);
14804 }
14805
14806 /*Clear all pending request*/
14807 WDI_ClearPendingRequests(pWDICtx);
14808 /* Close Data transport*/
14809 /* FTM mode does not open Data Path */
14810 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14811 {
14812 WDTS_Close(pWDICtx);
14813 }
14814 /*Close the STA Table !UT- check this logic again*/
14815 WDI_STATableClose(pWDICtx);
14816 /*close the PAL */
14817 wptStatus = wpalClose(pWDICtx->pPALContext);
14818 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14819 {
14820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14821 "Failed to wpal Close %d", wptStatus);
14822 WDI_ASSERT(0);
14823 }
14824
14825 /*Transition back to init state*/
14826 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14827
14828 wpalMutexRelease(&pWDICtx->wptMutex);
14829
14830 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014832
14833
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014835}/*WDI_ProcessShutdownReq*/
14836
14837/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014839========================================================================*/
14840
14841/**
14842 @brief Process Start Response function (called when a response
14843 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
14845 @param pWDICtx: pointer to the WLAN DAL context
14846 pEventData: pointer to the event information structure
14847
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 @see
14849 @return Result of the function call
14850*/
14851WDI_Status
14852WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014853(
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 WDI_ControlBlockType* pWDICtx,
14855 WDI_EventInfoType* pEventData
14856)
14857{
14858 WDI_StartRspParamsType wdiRspParams;
14859 WDI_StartRspCb wdiStartRspCb = NULL;
14860
14861 tHalMacStartRspParams* startRspParams;
14862
14863#ifndef HAL_SELF_STA_PER_BSS
14864 WDI_AddStaParams wdiAddSTAParam = {0};
14865#endif
14866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14867
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 -------------------------------------------------------------------------*/
14872 if (( NULL == pEventData ) ||
14873 ( NULL == pEventData->pEventData) ||
14874 ( NULL == wdiStartRspCb ))
14875 {
14876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 }
14881
14882 /*-------------------------------------------------------------------------
14883 Extract response and send it to UMAC
14884 -------------------------------------------------------------------------*/
14885 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14886 {
14887 // not enough data was received
14888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14889 "Invalid response length in Start Resp Expect %x Rcvd %x",
14890 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 }
14894
14895 /*-------------------------------------------------------------------------
14896 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 -------------------------------------------------------------------------*/
14899 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14900
14901 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14902 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14903 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14904 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14905 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14906 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14907 wdiRspParams.wlanReportedVersion.major =
14908 startRspParams->wcnssWlanVersion.major;
14909 wdiRspParams.wlanReportedVersion.minor =
14910 startRspParams->wcnssWlanVersion.minor;
14911 wdiRspParams.wlanReportedVersion.version =
14912 startRspParams->wcnssWlanVersion.version;
14913 wdiRspParams.wlanReportedVersion.revision =
14914 startRspParams->wcnssWlanVersion.revision;
14915 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14916 startRspParams->wcnssCrmVersionString,
14917 sizeof(wdiRspParams.wcnssSoftwareVersion));
14918 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14919 startRspParams->wcnssWlanVersionString,
14920 sizeof(wdiRspParams.wcnssHardwareVersion));
14921 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14922
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014923 /*Save the HAL Version*/
14924 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14925
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 wpalMutexAcquire(&pWDICtx->wptMutex);
14927 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14928 {
14929 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14930
14931 /*Cache the start response for further use*/
14932 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 sizeof(pWDICtx->wdiCachedStartRspParams));
14935
14936 }
14937 else
14938 {
14939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14940 "Failed to start device with status %s(%d)",
14941 WDI_getHALStatusMsgString(startRspParams->status),
14942 startRspParams->status);
14943
14944 /*Set the expected state transition to stopped - because the start has
14945 failed*/
14946 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14947
14948 wpalMutexRelease(&pWDICtx->wptMutex);
14949
14950 /*Notify UMAC*/
14951 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014952
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14954
14955 /*Although the response is an error - it was processed by our function
14956 so as far as the caller is concerned this is a succesful reponse processing*/
14957 return WDI_STATUS_SUCCESS;
14958 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014959
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 wpalMutexRelease(&pWDICtx->wptMutex);
14961
14962 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14963 {
14964 /* FTM mode does not need to execute below */
14965 /* Notify UMAC */
14966 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14967 return WDI_STATUS_SUCCESS;
14968 }
14969
14970 /* START the Data transport */
14971 WDTS_startTransport(pWDICtx);
14972
14973 /*Start the STA Table !- check this logic again*/
14974 WDI_STATableStart(pWDICtx);
14975
14976#ifndef HAL_SELF_STA_PER_BSS
14977 /* Store the Self STA Index */
14978 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14979
14980 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14981 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14982 WDI_MAC_ADDR_LEN);
14983
14984 /* At this point add the self-STA */
14985
14986 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14987 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14988 /*! TO DO: wdiAddSTAParam.dpuSig */
14989 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14990 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14991 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14992
14993 //all DPU indices are the same for self STA
14994 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14995 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014996 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14998 WDI_MAC_ADDR_LEN);
14999 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15000 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15001
15002 /* Note: Since we don't get an explicit config STA request for self STA, we
15003 add the self STA upon receiving the Start response message. But the
15004 self STA entry in the table is deleted when WDI gets an explicit delete STA
15005 request */
15006 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15007#endif
15008
15009 /*Notify UMAC*/
15010 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15011
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015013}/*WDI_ProcessStartRsp*/
15014
15015
15016/**
15017 @brief Process Stop Response function (called when a response
15018 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015019
15020 @param pWDICtx: pointer to the WLAN DAL context
15021 pEventData: pointer to the event information structure
15022
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 @see
15024 @return Result of the function call
15025*/
15026WDI_Status
15027WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015028(
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 WDI_ControlBlockType* pWDICtx,
15030 WDI_EventInfoType* pEventData
15031)
15032{
15033 WDI_Status wdiStatus;
15034 WDI_StopRspCb wdiStopRspCb = NULL;
15035
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15038
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 -------------------------------------------------------------------------*/
15043 if (( NULL == pEventData ) ||
15044 ( NULL == pEventData->pEventData) ||
15045 ( NULL == wdiStopRspCb ))
15046 {
15047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 }
15052
15053 /*-------------------------------------------------------------------------
15054 Extract response and send it to UMAC
15055 -------------------------------------------------------------------------*/
15056 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15057 {
15058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15059 "Invalid response length in Stop Resp %x %x",
15060 pEventData->uEventDataSize);
15061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 }
15064
15065 /*-------------------------------------------------------------------------
15066 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015067 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15070 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 sizeof(halMacStopRspMsg.stopRspParams));
15072
Jeff Johnsone7245742012-09-05 17:12:55 -070015073 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015074
15075 wpalMutexAcquire(&pWDICtx->wptMutex);
15076
15077 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 --------------------------------------------------------------------------*/
15080 if ( WDI_STATUS_SUCCESS != wdiStatus )
15081 {
15082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15083 "Failed to stop the device with status %s (%d)",
15084 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15085 halMacStopRspMsg.stopRspParams.status);
15086
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15088
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015092
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15094
15095 /*Transition now as WDI may get preempted imediately after it sends
15096 up the Stop Response and it will not get to process the state transition
15097 from Main Rsp function*/
15098 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15099 wpalMutexRelease(&pWDICtx->wptMutex);
15100
15101 /*! TO DO: - STOP the Data transport */
15102
15103 /*Notify UMAC*/
15104 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15105
Jeff Johnsone7245742012-09-05 17:12:55 -070015106 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107}/*WDI_ProcessStopRsp*/
15108
15109/**
15110 @brief Process Close Rsp function (called when a response
15111 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015112
15113 @param pWDICtx: pointer to the WLAN DAL context
15114 pEventData: pointer to the event information structure
15115
Jeff Johnson295189b2012-06-20 16:38:30 -070015116 @see
15117 @return Result of the function call
15118*/
15119WDI_Status
15120WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015121(
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 WDI_ControlBlockType* pWDICtx,
15123 WDI_EventInfoType* pEventData
15124)
15125{
15126 /*There is no close response comming from HAL - function just kept for
15127 simmetry */
15128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015130}/*WDI_ProcessCloseRsp*/
15131
15132
15133/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015135============================================================================*/
15136
15137/**
15138 @brief Process Init Scan Rsp function (called when a response
15139 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015140
15141 @param pWDICtx: pointer to the WLAN DAL context
15142 pEventData: pointer to the event information structure
15143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 @see
15145 @return Result of the function call
15146*/
15147WDI_Status
15148WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015149(
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 WDI_ControlBlockType* pWDICtx,
15151 WDI_EventInfoType* pEventData
15152)
15153{
15154 WDI_Status wdiStatus;
15155 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015157 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15159
15160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 -------------------------------------------------------------------------*/
15163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15164 ( NULL == pEventData->pEventData))
15165 {
15166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 }
15171
15172 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15173 if( NULL == wdiInitScanRspCb)
15174 {
15175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015176 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 }
15180
15181 /*-------------------------------------------------------------------------
15182 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015185 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15186 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 sizeof(halInitScanRspMsg.initScanRspParams));
15188
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015190
15191 if ( pWDICtx->bInBmps )
15192 {
15193 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015194 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15195 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15197 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15198 WDI_ASSERT(0);
15199 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 }
15201
15202 /*Notify UMAC*/
15203 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15204
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206}/*WDI_ProcessInitScanRsp*/
15207
15208
15209/**
15210 @brief Process Start Scan Rsp function (called when a response
15211 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015212
15213 @param pWDICtx: pointer to the WLAN DAL context
15214 pEventData: pointer to the event information structure
15215
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 @see
15217 @return Result of the function call
15218*/
15219WDI_Status
15220WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015221(
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 WDI_ControlBlockType* pWDICtx,
15223 WDI_EventInfoType* pEventData
15224)
15225{
15226 WDI_StartScanRspParamsType wdiStartScanParams;
15227 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015228
15229 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15231
15232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 -------------------------------------------------------------------------*/
15235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15236 ( NULL == pEventData->pEventData))
15237 {
15238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 }
15243
15244 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15245 if( NULL == wdiStartScanRspCb)
15246 {
15247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015248 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 }
15252
15253 /*-------------------------------------------------------------------------
15254 Extract response and send it to UMAC
15255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15257 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 sizeof(halStartScanRspMsg.startScanRspParams));
15259
15260 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15261 halStartScanRspMsg.startScanRspParams.status);
15262#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 halStartScanRspMsg.startScanRspParams.startTSF,
15267 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015268#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015269
15270 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15271 {
15272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15273 "Start scan failed with status %s (%d)",
15274 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15275 halStartScanRspMsg.startScanRspParams.status);
15276 /* send the status to UMAC, don't return from here*/
15277 }
15278
15279 /*Notify UMAC*/
15280 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15281
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015283
15284}/*WDI_ProcessStartScanRsp*/
15285
15286
15287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015290
15291 @param pWDICtx: pointer to the WLAN DAL context
15292 pEventData: pointer to the event information structure
15293
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 @see
15295 @return Result of the function call
15296*/
15297WDI_Status
15298WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015299(
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 WDI_ControlBlockType* pWDICtx,
15301 WDI_EventInfoType* pEventData
15302)
15303{
15304 WDI_Status wdiStatus;
15305 tHalEndScanRspMsg halEndScanRspMsg;
15306 WDI_EndScanRspCb wdiEndScanRspCb;
15307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15308
15309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 -------------------------------------------------------------------------*/
15312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15313 ( NULL == pEventData->pEventData))
15314 {
15315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 }
15320
15321 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15322
15323 /*-------------------------------------------------------------------------
15324 Extract response and send it to UMAC
15325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15327 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 sizeof(halEndScanRspMsg.endScanRspParams));
15329
Jeff Johnsone7245742012-09-05 17:12:55 -070015330 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015331
15332 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15333 {
15334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15335 "End Scan failed with status %s (%d )",
15336 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15337 halEndScanRspMsg.endScanRspParams.status);
15338 /* send the status to UMAC, don't return from here*/
15339 }
15340
15341 /*Notify UMAC*/
15342 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15343
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015345}/*WDI_ProcessEndScanRsp*/
15346
15347
15348/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015351
15352 @param pWDICtx: pointer to the WLAN DAL context
15353 pEventData: pointer to the event information structure
15354
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 @see
15356 @return Result of the function call
15357*/
15358WDI_Status
15359WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015360(
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 WDI_ControlBlockType* pWDICtx,
15362 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015363)
Jeff Johnson295189b2012-06-20 16:38:30 -070015364{
15365 WDI_Status wdiStatus;
15366 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015367
15368 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15370
15371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 -------------------------------------------------------------------------*/
15374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15375 ( NULL == pEventData->pEventData))
15376 {
15377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 }
15382
15383 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15384
15385 /*-------------------------------------------------------------------------
15386 Extract response and send it to UMAC
15387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15391
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015393
15394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 halFinishScanRspMsg.finishScanRspParams.status);
15397
15398 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15399 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15400 {
15401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15402 "Finish Scan failed with status %s (%d)",
15403 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15404 halFinishScanRspMsg.finishScanRspParams.status);
15405 /* send the status to UMAC, don't return from here*/
15406 }
15407
15408 /*Notify UMAC*/
15409 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15410
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015412}/*WDI_ProcessFinishScanRsp*/
15413
15414/**
15415 @brief Process Join Response function (called when a response
15416 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015417
15418 @param pWDICtx: pointer to the WLAN DAL context
15419 pEventData: pointer to the event information structure
15420
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 @see
15422 @return Result of the function call
15423*/
15424WDI_Status
15425WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015426(
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_ControlBlockType* pWDICtx,
15428 WDI_EventInfoType* pEventData
15429)
15430{
15431 WDI_Status wdiStatus;
15432 WDI_JoinRspCb wdiJoinRspCb;
15433 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015434
15435 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15437
15438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 -------------------------------------------------------------------------*/
15441 if (( NULL == pWDICtx ) ||
15442 ( NULL == pWDICtx->pfncRspCB ) ||
15443 ( NULL == pEventData ) ||
15444 ( NULL == pEventData->pEventData))
15445 {
15446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 }
15451
15452 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15453
15454 /*-------------------------------------------------------------------------
15455 Extract response and send it to UMAC
15456 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15458 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 sizeof(halJoinRspMsg.joinRspParams));
15460
Jeff Johnsone7245742012-09-05 17:12:55 -070015461 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015462
15463 wpalMutexAcquire(&pWDICtx->wptMutex);
15464
15465 /*-----------------------------------------------------------------------
15466 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015470 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15471 {
15472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15474 "association no longer in progress %d - mysterious HAL response",
15475 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015476
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 }
15481
15482 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15483
15484 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 -----------------------------------------------------------------------*/
15487 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15488 {
15489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15490 "Join only allowed in Joining state - failure state is %d "
15491 "strange HAL response", pBSSSes->wdiAssocState);
15492
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15494
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 }
15498
15499
15500 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 -----------------------------------------------------------------------*/
15503 if ( WDI_STATUS_SUCCESS != wdiStatus )
15504 {
15505 /*Association was failed by HAL - remove session*/
15506 WDI_DeleteSession(pWDICtx, pBSSSes);
15507
15508 /*Association no longer in progress */
15509 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15510
15511 /*Association no longer in progress - prepare pending assoc for processing*/
15512 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015513
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 }
15515 else
15516 {
15517 /*Transition to state Joining - this may be redundant as we are supposed
15518 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015519 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 }
15521
15522 wpalMutexRelease(&pWDICtx->wptMutex);
15523
15524 /*Notify UMAC*/
15525 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15526
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015528}/*WDI_ProcessJoinRsp*/
15529
15530
15531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015534
15535 @param pWDICtx: pointer to the WLAN DAL context
15536 pEventData: pointer to the event information structure
15537
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 @see
15539 @return Result of the function call
15540*/
15541WDI_Status
15542WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015543(
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 WDI_ControlBlockType* pWDICtx,
15545 WDI_EventInfoType* pEventData
15546)
15547{
15548 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15549 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 WDI_BSSSessionType* pBSSSes = NULL;
15552
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15555 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015556
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15558
15559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 -------------------------------------------------------------------------*/
15562 if (( NULL == pEventData ) ||
15563 ( NULL == pEventData->pEventData))
15564 {
15565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 }
15570
15571 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15572
15573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15577 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 sizeof(halConfigBssRspMsg.configBssRspParams));
15579
15580 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15581 halConfigBssRspMsg.configBssRspParams.status);
15582 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15583 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15586 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015587
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015589
15590 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015592
15593 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015595
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015597
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15601 #endif
15602 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15603 halConfigBssRspMsg.configBssRspParams.staMac,
15604 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015605
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 wpalMutexAcquire(&pWDICtx->wptMutex);
15607 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015610 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15611 wdiConfigBSSParams.macBSSID,
15612 &pBSSSes);
15613
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 /*-----------------------------------------------------------------------
15615 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 -----------------------------------------------------------------------*/
15618 if ( NULL == pBSSSes )
15619 {
15620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15621 "Association sequence for this BSS does not yet exist "
15622 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15625
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015629
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 /*Save data for this BSS*/
15631 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15632 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15643 pBSSSes->bcastStaIdx =
15644 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015647
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 /*-------------------------------------------------------------------------
15649 Add Peer STA
15650 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15653 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015654
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 wdiAddSTAParam.ucHTCapable =
15659 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15660 wdiAddSTAParam.ucStaType =
15661 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15662
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015664 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15665 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015667
15668 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15669 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15670 WDI_MAC_ADDR_LEN);
15671
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015685
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15687 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015688
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15690 /*-------------------------------------------------------------------------
15691 Add Broadcast STA only in AP mode
15692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015694 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 {
15696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15697 "Add BCAST STA to table for index: %d",
15698 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015699
15700 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015702
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15704 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15705 }
15706 wpalMutexRelease(&pWDICtx->wptMutex);
15707 }
15708 else
15709 {
15710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15711 "Config BSS RSP failed with status : %s(%d)",
15712 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 halConfigBssRspMsg.configBssRspParams.status);
15715
Jeff Johnsone7245742012-09-05 17:12:55 -070015716
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 /*Association was failed by HAL - remove session*/
15718 WDI_DeleteSession(pWDICtx, pBSSSes);
15719
15720 /*Association no longer in progress */
15721 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15722
15723 /*Association no longer in progress - prepare pending assoc for processing*/
15724 WDI_DequeueAssocRequest(pWDICtx);
15725
15726 }
15727
15728 /*Notify UMAC*/
15729 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15730
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015732}/*WDI_ProcessConfigBSSRsp*/
15733
15734
15735/**
15736 @brief Process Del BSS Response function (called when a response
15737 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015738
15739 @param pWDICtx: pointer to the WLAN DAL context
15740 pEventData: pointer to the event information structure
15741
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 @see
15743 @return Result of the function call
15744*/
15745WDI_Status
15746WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015747(
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 WDI_ControlBlockType* pWDICtx,
15749 WDI_EventInfoType* pEventData
15750)
15751{
15752 WDI_DelBSSRspParamsType wdiDelBSSParams;
15753 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015754 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 WDI_BSSSessionType* pBSSSes = NULL;
15756
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15759
15760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 -------------------------------------------------------------------------*/
15763 if (( NULL == pEventData ) ||
15764 ( NULL == pEventData->pEventData))
15765 {
15766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 }
15771
15772 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15773
15774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15778 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 sizeof(halDelBssRspMsg.deleteBssRspParams));
15780
15781
15782 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015784
15785 wpalMutexAcquire(&pWDICtx->wptMutex);
15786
15787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15791 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15792 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793
15794 /*-----------------------------------------------------------------------
15795 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 -----------------------------------------------------------------------*/
15798 if ( NULL == pBSSSes )
15799 {
15800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15801 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015802 "association no longer in progress - mysterious HAL response");
15803
15804 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15805
15806 wpalMutexRelease(&pWDICtx->wptMutex);
15807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015809
15810 /*Extract BSSID for the response to UMAC*/
15811 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15812 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15813
15814 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15815
15816 /*-----------------------------------------------------------------------
15817 The current session will be deleted
15818 -----------------------------------------------------------------------*/
15819 WDI_DeleteSession(pWDICtx, pBSSSes);
15820
15821
15822 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15823 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015825 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015826 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015827
15828 /* Delete the STA's in this BSS */
15829 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15830
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 wpalMutexRelease(&pWDICtx->wptMutex);
15832
15833 /*Notify UMAC*/
15834 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15835
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015837}/*WDI_ProcessDelBSSRsp*/
15838
15839/**
15840 @brief Process Post Assoc Rsp function (called when a response
15841 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015842
15843 @param pWDICtx: pointer to the WLAN DAL context
15844 pEventData: pointer to the event information structure
15845
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 @see
15847 @return Result of the function call
15848*/
15849WDI_Status
15850WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015851(
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 WDI_ControlBlockType* pWDICtx,
15853 WDI_EventInfoType* pEventData
15854)
15855{
15856 WDI_PostAssocRspParamsType wdiPostAssocParams;
15857 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015858 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15862
15863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 -------------------------------------------------------------------------*/
15866 if (( NULL == pEventData ) ||
15867 ( NULL == pEventData->pEventData))
15868 {
15869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 }
15874
15875 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15876
15877 /*-------------------------------------------------------------------------
15878 Extract response and send it to UMAC
15879 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15881 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 sizeof(halPostAssocRspMsg.postAssocRspParams));
15883
15884 /*Extract the Post Assoc STA Params */
15885
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15892
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wdiPostAssocParams.wdiStatus =
15894 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015895
15896 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15897 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15899 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 WDI_MAC_ADDR_LEN);
15901
15902 /* Extract Post Assoc BSS Params */
15903
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15905 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15906 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015907
15908 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15909 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15912 .macSTA, WDI_MAC_ADDR_LEN);
15913
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15916
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15919
15920 wdiPostAssocParams.bssParams.ucBSSIdx =
15921 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15922
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15925
15926 wpalMutexAcquire(&pWDICtx->wptMutex);
15927
15928 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015934
15935 /*-----------------------------------------------------------------------
15936 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 -----------------------------------------------------------------------*/
15939 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15942 {
15943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15944 "Association sequence for this BSS does not yet exist or "
15945 "association no longer in progress - mysterious HAL response");
15946
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15948
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 }
15952
15953 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 -----------------------------------------------------------------------*/
15956 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15957 {
15958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15959 "Post Assoc not allowed before JOIN - failing request "
15960 "strange HAL response");
15961
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15963
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 }
15967
15968 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 -----------------------------------------------------------------------*/
15971 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15972 {
15973 /*Association was failed by HAL - remove session*/
15974 WDI_DeleteSession(pWDICtx, pBSSSes);
15975 }
15976 else
15977 {
15978 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015980
15981 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015982 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015983 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15990
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15993 }
15994
15995 /*Association no longer in progress */
15996 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15997
15998 /*Association no longer in progress - prepare pending assoc for processing*/
15999 WDI_DequeueAssocRequest(pWDICtx);
16000
16001 wpalMutexRelease(&pWDICtx->wptMutex);
16002
16003 /*Notify UMAC*/
16004 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16005
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007}/*WDI_ProcessPostAssocRsp*/
16008
16009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016010 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016012
16013 @param pWDICtx: pointer to the WLAN DAL context
16014 pEventData: pointer to the event information structure
16015
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 @see
16017 @return Result of the function call
16018*/
16019WDI_Status
16020WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016021(
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 WDI_ControlBlockType* pWDICtx,
16023 WDI_EventInfoType* pEventData
16024)
16025{
16026 WDI_DelSTARspParamsType wdiDelSTARsp;
16027 WDI_DelSTARspCb wdiDelSTARspCb;
16028 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16031
16032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 -------------------------------------------------------------------------*/
16035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16036 ( NULL == pEventData->pEventData))
16037 {
16038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 }
16043
16044 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16045
16046 /*-------------------------------------------------------------------------
16047 Extract response and send it to UMAC
16048 -------------------------------------------------------------------------*/
16049 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 sizeof(halDelStaRspMsg.delStaRspParams));
16052
16053 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 wdiDelSTARsp.wdiStatus =
16055 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016056
16057 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16058
16059 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16060 if(staType == WDI_STA_ENTRY_SELF)
16061 {
16062 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16063
16064 /* At this point add the self-STA */
16065
16066 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16067 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16068 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16069
16070#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16071#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16072
16073 //all DPU indices are the same for self STA
16074 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16075 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16076 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16077 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16078 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16079 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016080
16081 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 }
16083 else
16084 {
16085 //Delete the station in the table
16086 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16087 }
16088
16089 /*Notify UMAC*/
16090 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16091
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016093}/*WDI_ProcessDelSTARsp*/
16094
16095
16096/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016098==========================================================================*/
16099
16100/**
16101 @brief Process Set BSS Key Rsp function (called when a response
16102 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016103
16104 @param pWDICtx: pointer to the WLAN DAL context
16105 pEventData: pointer to the event information structure
16106
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 @see
16108 @return Result of the function call
16109*/
16110WDI_Status
16111WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016112(
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 WDI_ControlBlockType* pWDICtx,
16114 WDI_EventInfoType* pEventData
16115)
16116{
16117 WDI_Status wdiStatus;
16118 eHalStatus halStatus;
16119 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16121
16122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 -------------------------------------------------------------------------*/
16125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16126 ( NULL == pEventData->pEventData))
16127 {
16128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 }
16133
16134 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16135
16136 /*-------------------------------------------------------------------------
16137 Extract response and send it to UMAC
16138 -------------------------------------------------------------------------*/
16139 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016141
16142 if ( eHAL_STATUS_SUCCESS != halStatus )
16143 {
16144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16145 "Set BSS Key failed with status %s (%d)",
16146 WDI_getHALStatusMsgString(halStatus),
16147 halStatus);
16148 /* send the status to UMAC, don't return from here*/
16149 }
16150
16151 /*Notify UMAC*/
16152 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16153
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016155}/*WDI_ProcessSetBssKeyRsp*/
16156
16157/**
16158 @brief Process Remove BSS Key Rsp function (called when a response
16159 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016160
16161 @param pWDICtx: pointer to the WLAN DAL context
16162 pEventData: pointer to the event information structure
16163
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 @see
16165 @return Result of the function call
16166*/
16167WDI_Status
16168WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016169(
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 WDI_ControlBlockType* pWDICtx,
16171 WDI_EventInfoType* pEventData
16172)
16173{
16174 WDI_Status wdiStatus;
16175 eHalStatus halStatus;
16176 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16178
16179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 -------------------------------------------------------------------------*/
16182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16183 ( NULL == pEventData->pEventData))
16184 {
16185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 }
16190
16191 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16192
16193 /*-------------------------------------------------------------------------
16194 Extract response and send it to UMAC
16195 -------------------------------------------------------------------------*/
16196 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016198
16199 if ( eHAL_STATUS_SUCCESS != halStatus )
16200 {
16201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16202 "Remove BSS Key failed with status %s (%d )",
16203 WDI_getHALStatusMsgString(halStatus),
16204 halStatus);
16205 /* send the status to UMAC, don't return from here*/
16206 }
16207
16208 /*Notify UMAC*/
16209 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16210
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016212}/*WDI_ProcessSetBssKeyRsp*/
16213
16214
16215/**
16216 @brief Process Set STA Key Rsp function (called when a response
16217 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016218
16219 @param pWDICtx: pointer to the WLAN DAL context
16220 pEventData: pointer to the event information structure
16221
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 @see
16223 @return Result of the function call
16224*/
16225WDI_Status
16226WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016227(
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 WDI_ControlBlockType* pWDICtx,
16229 WDI_EventInfoType* pEventData
16230)
16231{
16232 WDI_Status wdiStatus;
16233 eHalStatus halStatus;
16234 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16236
16237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 -------------------------------------------------------------------------*/
16240 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16241 ( NULL == pEventData->pEventData))
16242 {
16243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 }
16248
16249 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16250
16251 /*-------------------------------------------------------------------------
16252 Extract response and send it to UMAC
16253 -------------------------------------------------------------------------*/
16254 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016256
16257 if ( eHAL_STATUS_SUCCESS != halStatus )
16258 {
16259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16260 "Set STA Key failed with status %s (%d)",
16261 WDI_getHALStatusMsgString(halStatus),
16262 halStatus);
16263 /* send the status to UMAC, don't return from here*/
16264 }
16265
16266 /*Notify UMAC*/
16267 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16268
Jeff Johnsone7245742012-09-05 17:12:55 -070016269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016270}/*WDI_ProcessSetSTAKeyRsp*/
16271
16272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016275
16276 @param pWDICtx: pointer to the WLAN DAL context
16277 pEventData: pointer to the event information structure
16278
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 @see
16280 @return Result of the function call
16281*/
16282WDI_Status
16283WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016284(
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 WDI_ControlBlockType* pWDICtx,
16286 WDI_EventInfoType* pEventData
16287)
16288{
16289 WDI_Status wdiStatus;
16290 eHalStatus halStatus;
16291 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16293
16294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 -------------------------------------------------------------------------*/
16297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16298 ( NULL == pEventData->pEventData))
16299 {
16300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 }
16305
16306 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16307
16308 /*-------------------------------------------------------------------------
16309 Extract response and send it to UMAC
16310 -------------------------------------------------------------------------*/
16311 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016313
16314 if ( eHAL_STATUS_SUCCESS != halStatus )
16315 {
16316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16317 "Remove STA Key failed with status %s (%d)",
16318 WDI_getHALStatusMsgString(halStatus),
16319 halStatus);
16320 /* send the status to UMAC, don't return from here*/
16321 }
16322
16323 /*Notify UMAC*/
16324 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16325
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016327}/*WDI_ProcessRemoveStaKeyRsp*/
16328
16329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016332
16333 @param pWDICtx: pointer to the WLAN DAL context
16334 pEventData: pointer to the event information structure
16335
Jeff Johnson295189b2012-06-20 16:38:30 -070016336 @see
16337 @return Result of the function call
16338*/
16339WDI_Status
16340WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016341(
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 WDI_ControlBlockType* pWDICtx,
16343 WDI_EventInfoType* pEventData
16344)
16345{
16346 WDI_Status wdiStatus;
16347 eHalStatus halStatus;
16348 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16350
16351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016353 -------------------------------------------------------------------------*/
16354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16355 ( NULL == pEventData->pEventData))
16356 {
16357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 }
16362
16363 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16364
16365 /*-------------------------------------------------------------------------
16366 Extract response and send it to UMAC
16367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016368 wpalMemoryCopy( &halStatus,
16369 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016370 sizeof(halStatus));
16371
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016373
16374 if ( eHAL_STATUS_SUCCESS != halStatus )
16375 {
16376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16377 "Set STA Key failed with status %s (%d)",
16378 WDI_getHALStatusMsgString(halStatus),
16379 halStatus);
16380 /* send the status to UMAC, don't return from here*/
16381 }
16382
16383 /*Notify UMAC*/
16384 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16385
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016387}/*WDI_ProcessSetSTABcastKeyRsp*/
16388
16389/**
16390 @brief Process Remove STA Bcast Key Rsp function (called when a
16391 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016392
16393 @param pWDICtx: pointer to the WLAN DAL context
16394 pEventData: pointer to the event information structure
16395
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 @see
16397 @return Result of the function call
16398*/
16399WDI_Status
16400WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016401(
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 WDI_ControlBlockType* pWDICtx,
16403 WDI_EventInfoType* pEventData
16404)
16405{
16406 WDI_Status wdiStatus;
16407 eHalStatus halStatus;
16408 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16410
16411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 -------------------------------------------------------------------------*/
16414 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16415 ( NULL == pEventData->pEventData))
16416 {
16417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 }
16422
16423 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16424
16425 /*-------------------------------------------------------------------------
16426 Extract response and send it to UMAC
16427 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 wpalMemoryCopy( &halStatus,
16429 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 sizeof(halStatus));
16431
Jeff Johnsone7245742012-09-05 17:12:55 -070016432 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016433
16434 if ( eHAL_STATUS_SUCCESS != halStatus )
16435 {
16436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16437 "Remove STA Key failed with status %s (%d)",
16438 WDI_getHALStatusMsgString(halStatus),
16439 halStatus);
16440 /* send the status to UMAC, don't return from here*/
16441 }
16442
16443 /*Notify UMAC*/
16444 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16445
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016447}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16448
16449
16450/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016452==========================================================================*/
16453
16454/**
16455 @brief Process Add TSpec Rsp function (called when a response
16456 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016457
16458 @param pWDICtx: pointer to the WLAN DAL context
16459 pEventData: pointer to the event information structure
16460
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 @see
16462 @return Result of the function call
16463*/
16464WDI_Status
16465WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016466(
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 WDI_ControlBlockType* pWDICtx,
16468 WDI_EventInfoType* pEventData
16469)
16470{
16471 WDI_Status wdiStatus;
16472 eHalStatus halStatus;
16473 WDI_AddTsRspCb wdiAddTsRspCb;
16474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16475
16476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016478 -------------------------------------------------------------------------*/
16479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16480 ( NULL == pEventData->pEventData))
16481 {
16482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 }
16487
16488 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16489
16490 /*-------------------------------------------------------------------------
16491 Extract response and send it to UMAC
16492 -------------------------------------------------------------------------*/
16493 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016495
16496 /*Notify UMAC*/
16497 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16498
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016500}/*WDI_ProcessAddTSpecRsp*/
16501
16502
16503/**
16504 @brief Process Del TSpec Rsp function (called when a response
16505 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016506
16507 @param pWDICtx: pointer to the WLAN DAL context
16508 pEventData: pointer to the event information structure
16509
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 @see
16511 @return Result of the function call
16512*/
16513WDI_Status
16514WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016515(
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 WDI_ControlBlockType* pWDICtx,
16517 WDI_EventInfoType* pEventData
16518)
16519{
16520 WDI_Status wdiStatus;
16521 eHalStatus halStatus;
16522 WDI_DelTsRspCb wdiDelTsRspCb;
16523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16524
16525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 -------------------------------------------------------------------------*/
16528 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16529 ( NULL == pEventData->pEventData))
16530 {
16531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 }
16536
16537 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16538
16539 /*-------------------------------------------------------------------------
16540 Extract response and send it to UMAC
16541 -------------------------------------------------------------------------*/
16542 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016544
16545 /*Notify UMAC*/
16546 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16547
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016549}/*WDI_ProcessDelTSpecRsp*/
16550
16551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016554
16555 @param pWDICtx: pointer to the WLAN DAL context
16556 pEventData: pointer to the event information structure
16557
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 @see
16559 @return Result of the function call
16560*/
16561WDI_Status
16562WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016563(
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 WDI_ControlBlockType* pWDICtx,
16565 WDI_EventInfoType* pEventData
16566)
16567{
16568 WDI_Status wdiStatus;
16569 eHalStatus halStatus;
16570 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16572
16573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 -------------------------------------------------------------------------*/
16576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16577 ( NULL == pEventData->pEventData))
16578 {
16579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 }
16584
16585 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16586
16587 /*-------------------------------------------------------------------------
16588 Extract response and send it to UMAC
16589 -------------------------------------------------------------------------*/
16590 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016592
16593 /*Notify UMAC*/
16594 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16595
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016597}/*WDI_ProcessUpdateEDCAParamsRsp*/
16598
16599
16600/**
16601 @brief Process Add BA Rsp function (called when a response
16602 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016603
16604 @param pWDICtx: pointer to the WLAN DAL context
16605 pEventData: pointer to the event information structure
16606
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 @see
16608 @return Result of the function call
16609*/
16610WDI_Status
16611WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016612(
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 WDI_ControlBlockType* pWDICtx,
16614 WDI_EventInfoType* pEventData
16615)
16616{
16617 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16618
16619 tAddBASessionRspParams halBASessionRsp;
16620 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16621
Jeff Johnsone7245742012-09-05 17:12:55 -070016622
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16624
16625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 -------------------------------------------------------------------------*/
16628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16629 ( NULL == pEventData->pEventData))
16630 {
16631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 }
16636
16637 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16638
16639 /*-------------------------------------------------------------------------
16640 Extract response and send it to UMAC
16641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 wpalMemoryCopy( &halBASessionRsp,
16643 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 sizeof(halBASessionRsp));
16645
16646 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16647
Jeff Johnson43971f52012-07-17 12:26:56 -070016648 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 {
16650 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16651 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16652 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16653 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16654 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16655 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16656 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16657 }
16658
16659 /*Notify UMAC*/
16660 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16661
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016663}/*WDI_ProcessAddSessionBARsp*/
16664
16665
16666/**
16667 @brief Process Del BA Rsp function (called when a response
16668 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016669
16670 @param pWDICtx: pointer to the WLAN DAL context
16671 pEventData: pointer to the event information structure
16672
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 @see
16674 @return Result of the function call
16675*/
16676WDI_Status
16677WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016678(
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 WDI_ControlBlockType* pWDICtx,
16680 WDI_EventInfoType* pEventData
16681)
16682{
16683 WDI_Status wdiStatus;
16684 eHalStatus halStatus;
16685 WDI_DelBARspCb wdiDelBARspCb;
16686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16687
16688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 -------------------------------------------------------------------------*/
16691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16692 ( NULL == pEventData->pEventData))
16693 {
16694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 }
16699
16700 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16701
16702 /*-------------------------------------------------------------------------
16703 Extract response and send it to UMAC
16704 -------------------------------------------------------------------------*/
16705 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016707
16708 if ( eHAL_STATUS_SUCCESS == halStatus )
16709 {
16710 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16711 }
16712
16713 /*Notify UMAC*/
16714 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16715
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016717}/*WDI_ProcessDelBARsp*/
16718
16719#ifdef FEATURE_WLAN_CCX
16720/**
16721 @brief Process TSM Stats Rsp function (called when a response
16722 is being received over the bus from HAL)
16723
16724 @param pWDICtx: pointer to the WLAN DAL context
16725 pEventData: pointer to the event information structure
16726
16727 @see
16728 @return Result of the function call
16729*/
16730WDI_Status
16731WDI_ProcessTsmStatsRsp
16732(
16733 WDI_ControlBlockType* pWDICtx,
16734 WDI_EventInfoType* pEventData
16735)
16736{
16737 WDI_TsmRspCb wdiTsmStatsRspCb;
16738 tTsmStatsRspMsg halTsmStatsRspMsg;
16739 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16741
16742 /*-------------------------------------------------------------------------
16743 Sanity check
16744 -------------------------------------------------------------------------*/
16745 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16746 ( NULL == pEventData->pEventData))
16747 {
16748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 WDI_ASSERT(0);
16751 return WDI_STATUS_E_FAILURE;
16752 }
16753
16754 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16755
16756 /*-------------------------------------------------------------------------
16757 Unpack HAL Response Message - the header was already extracted by the
16758 main Response Handling procedure
16759 -------------------------------------------------------------------------*/
16760 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16761 pEventData->pEventData,
16762 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16763
16764 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16765 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16766 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16767 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16768 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16769 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16770 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16771 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16772 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16773 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16774 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16775 halTsmStatsRspMsg.tsmStatsRspParams.status);
16776
16777 /*Notify UMAC*/
16778 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16779
16780 return WDI_STATUS_SUCCESS;
16781}/*WDI_ProcessTsmStatsRsp*/
16782
16783#endif
16784
16785
16786
16787/**
16788 @brief Process Flush AC Rsp function (called when a response
16789 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016790
16791 @param pWDICtx: pointer to the WLAN DAL context
16792 pEventData: pointer to the event information structure
16793
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 @see
16795 @return Result of the function call
16796*/
16797WDI_Status
16798WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016799(
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 WDI_ControlBlockType* pWDICtx,
16801 WDI_EventInfoType* pEventData
16802)
16803{
16804 WDI_Status wdiStatus;
16805 eHalStatus halStatus;
16806 WDI_FlushAcRspCb wdiFlushAcRspCb;
16807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16808
16809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 -------------------------------------------------------------------------*/
16812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16813 ( NULL == pEventData->pEventData))
16814 {
16815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 }
16820
16821 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16822
16823 /*-------------------------------------------------------------------------
16824 Extract response and send it to UMAC
16825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 wpalMemoryCopy( &halStatus,
16827 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 sizeof(halStatus));
16829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016831
16832 /*Notify UMAC*/
16833 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16834
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016836}/*WDI_ProcessFlushAcRsp*/
16837
16838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016840 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016841
16842 @param pWDICtx: pointer to the WLAN DAL context
16843 pEventData: pointer to the event information structure
16844
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 @see
16846 @return Result of the function call
16847*/
16848WDI_Status
16849WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016850(
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 WDI_ControlBlockType* pWDICtx,
16852 WDI_EventInfoType* pEventData
16853)
16854{
16855 WDI_Status wdiStatus;
16856 eHalStatus halStatus;
16857 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16859
16860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 -------------------------------------------------------------------------*/
16863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16864 ( NULL == pEventData->pEventData))
16865 {
16866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 }
16871
16872 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16873
16874 /*-------------------------------------------------------------------------
16875 Extract response and send it to UMAC
16876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wpalMemoryCopy( &halStatus,
16878 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 sizeof(halStatus));
16880
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016882
16883 /*Notify UMAC*/
16884 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16885
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016887}/*WDI_ProcessBtAmpEventRsp*/
16888
16889
16890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016893
16894 @param pWDICtx: pointer to the WLAN DAL context
16895 pEventData: pointer to the event information structure
16896
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 @see
16898 @return Result of the function call
16899*/
16900WDI_Status
16901WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016902(
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 WDI_ControlBlockType* pWDICtx,
16904 WDI_EventInfoType* pEventData
16905)
16906{
16907 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16908 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16909 tAddStaSelfRspMsg halAddStaSelfRsp;
16910 WDI_AddStaParams wdiAddSTAParam = {0};
16911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16912
16913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 -------------------------------------------------------------------------*/
16916 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16917 ( NULL == pEventData->pEventData))
16918 {
16919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 }
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16927
16928 /*-------------------------------------------------------------------------
16929 Extract response and send it to UMAC
16930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16932 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016933 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16934
16935
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 wdiAddSTASelfParams.wdiStatus =
16937 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016938
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016942 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16945
16946 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16947 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16948 WDI_MAC_ADDR_LEN);
16949
16950
16951#ifdef HAL_SELF_STA_PER_BSS
16952
16953 /* At this point add the self-STA */
16954
16955 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16956 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16957 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16958
16959 //all DPU indices are the same for self STA
16960
16961 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16964 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16965 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16966 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16967 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16968
16969 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16970 WDI_MAC_ADDR_LEN);
16971
16972 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16973 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16974
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16977 {
16978 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16979 }
16980#endif
16981
16982 /*Notify UMAC*/
16983 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16984
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016986}/*WDI_ProcessAddSTASelfRsp*/
16987
16988
16989
16990/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016993
16994 @param pWDICtx: pointer to the WLAN DAL context
16995 pEventData: pointer to the event information structure
16996
Jeff Johnson295189b2012-06-20 16:38:30 -070016997 @see
16998 @return Result of the function call
16999*/
17000WDI_Status
17001WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017002(
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 WDI_ControlBlockType* pWDICtx,
17004 WDI_EventInfoType* pEventData
17005)
17006{
17007 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17008 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17009 tDelStaSelfRspParams delStaSelfRspParams;
17010 wpt_uint8 ucStaIdx;
17011
17012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17013
17014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 -------------------------------------------------------------------------*/
17017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17018 ( NULL == pEventData->pEventData))
17019 {
17020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 }
17025
17026 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17027
17028 /*-------------------------------------------------------------------------
17029 Extract response and send it to UMAC
17030 -------------------------------------------------------------------------*/
17031
Jeff Johnsone7245742012-09-05 17:12:55 -070017032 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 (wpt_uint8*)pEventData->pEventData,
17034 sizeof(tDelStaSelfRspParams));
17035
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 wdiDelStaSelfRspParams.wdiStatus =
17037 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17041 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17042 {
17043 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 delStaSelfRspParams.selfMacAddr,
17046 &ucStaIdx);
17047 if(WDI_STATUS_E_FAILURE == wdiStatus)
17048 {
17049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017050 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 }
17054 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17055 }
17056
17057 /*Notify UMAC*/
17058 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17059
17060 return WDI_STATUS_SUCCESS;
17061}
17062
Jeff Johnsone7245742012-09-05 17:12:55 -070017063#ifdef FEATURE_OEM_DATA_SUPPORT
17064/**
17065 @brief Start Oem Data Rsp function (called when a
17066 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017067
Jeff Johnsone7245742012-09-05 17:12:55 -070017068 @param pWDICtx: pointer to the WLAN DAL context
17069 pEventData: pointer to the event information structure
17070
17071 @see
17072 @return Result of the function call
17073*/
17074#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17075
17076WDI_Status
17077WDI_ProcessStartOemDataRsp
17078(
17079 WDI_ControlBlockType* pWDICtx,
17080 WDI_EventInfoType* pEventData
17081)
17082{
17083 WDI_oemDataRspCb wdiOemDataRspCb;
17084 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17085 tStartOemDataRspParams* halStartOemDataRspParams;
17086
17087 /*-------------------------------------------------------------------------
17088 Sanity check
17089 -------------------------------------------------------------------------*/
17090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17091 ( NULL == pEventData->pEventData))
17092 {
17093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017094 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 WDI_ASSERT(0);
17096 return WDI_STATUS_E_FAILURE;
17097 }
17098
17099 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17100
17101 /*-------------------------------------------------------------------------
17102 Extract response and send it to UMAC
17103 -------------------------------------------------------------------------*/
17104 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17105
17106
17107 //It is the responsibility of the application code to check for failure
17108 //conditions!
17109
17110 //Allocate memory for WDI OEM DATA RSP structure
17111 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17112
17113 if(NULL == wdiOemDataRspParams)
17114 {
17115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17116 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17117 pWDICtx, pEventData, pEventData->pEventData);
17118 WDI_ASSERT(0);
17119 return WDI_STATUS_E_FAILURE;
17120 }
17121
17122 /* Populate WDI structure members */
17123 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17124
17125 /*Notify UMAC*/
17126 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17127
17128 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17129 wpalMemoryFree(wdiOemDataRspParams);
17130
17131 return WDI_STATUS_SUCCESS;
17132}/*WDI_PrcoessStartOemDataRsp*/
17133#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017134
17135/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017136 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017137===========================================================================*/
17138
17139/**
17140 @brief Process Channel Switch Rsp function (called when a response
17141 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017142
17143 @param pWDICtx: pointer to the WLAN DAL context
17144 pEventData: pointer to the event information structure
17145
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 @see
17147 @return Result of the function call
17148*/
17149WDI_Status
17150WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017151(
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 WDI_ControlBlockType* pWDICtx,
17153 WDI_EventInfoType* pEventData
17154)
17155{
17156 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17157 WDI_SwitchChRspCb wdiChSwitchRspCb;
17158 tSwitchChannelRspParams halSwitchChannelRsp;
17159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17160
17161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 -------------------------------------------------------------------------*/
17164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17165 ( NULL == pEventData->pEventData))
17166 {
17167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 }
17172
17173 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17174
17175 /*-------------------------------------------------------------------------
17176 Extract response and send it to UMAC
17177 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017178 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017179 (wpt_uint8*)pEventData->pEventData,
17180 sizeof(halSwitchChannelRsp));
17181
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 wdiSwitchChRsp.wdiStatus =
17183 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17185
17186#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017188#endif
17189
17190 /*Notify UMAC*/
17191 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017194}/*WDI_ProcessChannelSwitchRsp*/
17195
17196
17197/**
17198 @brief Process Config STA Rsp function (called when a response
17199 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017200
17201 @param pWDICtx: pointer to the WLAN DAL context
17202 pEventData: pointer to the event information structure
17203
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 @see
17205 @return Result of the function call
17206*/
17207WDI_Status
17208WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017209(
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 WDI_ControlBlockType* pWDICtx,
17211 WDI_EventInfoType* pEventData
17212)
17213{
17214 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17215 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17216 WDI_AddStaParams wdiAddSTAParam;
17217
17218 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017220
Jeff Johnsone7245742012-09-05 17:12:55 -070017221 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17223
17224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 -------------------------------------------------------------------------*/
17227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17228 ( NULL == pEventData->pEventData))
17229 {
17230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 }
17235
17236 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17237
17238 /*-------------------------------------------------------------------------
17239 Extract response and send it to UMAC
17240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17242 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 sizeof(halConfigStaRsp.configStaRspParams));
17244
17245
17246 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17247 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17248 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17249 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17250 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17251
17252 /* MAC Address of STA - take from cache as it does not come back in the
17253 response*/
17254 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017257
17258 wdiCfgSTAParams.wdiStatus =
17259 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260
17261 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17262 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17263 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17264
17265 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17266 {
17267 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17268 {
17269 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17272 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017273
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017275 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017276 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 wdiAddSTAParam.ucHTCapable =
17278 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17279 wdiAddSTAParam.ucStaType =
17280 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017281 wdiAddSTAParam.ucRmfEnabled =
17282 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017283
Jeff Johnson295189b2012-06-20 16:38:30 -070017284 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17286 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017288
17289 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17290 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17291 WDI_MAC_ADDR_LEN);
17292
17293 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17294 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17295 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017296
17297 if ( NULL == pBSSSes )
17298 {
17299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17300 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017301
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 }
17305
17306 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017309 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017310 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017311 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017313 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017316
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17318 }
17319 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17320 {
17321 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17322
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017327 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017328 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 halConfigStaRsp.configStaRspParams.ucUcastSig;
17337 }
17338 }
17339
17340 /*Notify UMAC*/
17341 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17342
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017344}/*WDI_ProcessConfigStaRsp*/
17345
17346
17347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017350
17351 @param pWDICtx: pointer to the WLAN DAL context
17352 pEventData: pointer to the event information structure
17353
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 @see
17355 @return Result of the function call
17356*/
17357WDI_Status
17358WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017359(
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 WDI_ControlBlockType* pWDICtx,
17361 WDI_EventInfoType* pEventData
17362)
17363{
17364 WDI_Status wdiStatus;
17365 eHalStatus halStatus;
17366 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17367
17368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17371
17372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 -------------------------------------------------------------------------*/
17375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17376 ( NULL == pEventData->pEventData))
17377 {
17378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 }
17383
17384 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17385
17386 wpalMutexAcquire(&pWDICtx->wptMutex);
17387
17388 /*If the link is being transitioned to idle - the BSS is to be deleted
17389 - this type of ending a session is possible when UMAC has failed an
17390 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17393 {
17394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17398 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17399 &pBSSSes);
17400
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 /*-----------------------------------------------------------------------
17402 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 -----------------------------------------------------------------------*/
17405 if ( NULL == pBSSSes )
17406 {
17407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17408 "Set link response received outside association session");
17409 }
17410 else
17411 {
17412 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17413 will be del BSS coming after this to stop the beaconing & cleaning up the
17414 sessions*/
17415 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17416 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17417 {
17418 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017419 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 -----------------------------------------------------------------------*/
17421 WDI_DeleteSession(pWDICtx, pBSSSes);
17422
17423 /*-----------------------------------------------------------------------
17424 Check to see if this association is in progress - if so disable the
17425 flag as this has ended
17426 -----------------------------------------------------------------------*/
17427 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 /*Association no longer in progress */
17430 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17431 /*Association no longer in progress - prepare pending assoc for processing*/
17432 WDI_DequeueAssocRequest(pWDICtx);
17433 }
17434 }
17435 }
17436 }
17437 /* If the link state has been set to POST ASSOC, reset the "association in
17438 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17441 {
17442 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17443 WDI_DequeueAssocRequest(pWDICtx);
17444 }
17445
17446 wpalMutexRelease(&pWDICtx->wptMutex);
17447
17448 /*-------------------------------------------------------------------------
17449 Extract response and send it to UMAC
17450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 wpalMemoryCopy( &halStatus,
17452 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 sizeof(halStatus));
17454
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017456
17457 /*Notify UMAC*/
17458 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17459
Jeff Johnsone7245742012-09-05 17:12:55 -070017460 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017461}/*WDI_ProcessSetLinkStateRsp*/
17462
17463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017466
17467 @param pWDICtx: pointer to the WLAN DAL context
17468 pEventData: pointer to the event information structure
17469
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 @see
17471 @return Result of the function call
17472*/
17473WDI_Status
17474WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017475(
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 WDI_ControlBlockType* pWDICtx,
17477 WDI_EventInfoType* pEventData
17478)
17479{
17480 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17481 WDI_GetStatsRspCb wdiGetStatsRspCb;
17482 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017483
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17485
17486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017488 -------------------------------------------------------------------------*/
17489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17490 ( NULL == pEventData->pEventData))
17491 {
17492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 }
17497
17498 /*-------------------------------------------------------------------------
17499 Extract response and send it to UMAC
17500 -------------------------------------------------------------------------*/
17501 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17502
17503 /*allocate the stats response buffer */
17504 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17505 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17506 + sizeof(WDI_GetStatsRspParamsType));
17507
17508 if(NULL == wdiGetStatsRsp)
17509 {
17510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17511 "Failed to allocate memory in Get Stats Response %x %x %x ",
17512 pWDICtx, pEventData, pEventData->pEventData);
17513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 }
17516
17517 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17518
17519 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17520 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17521 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17522 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17523 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17524 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17525
17526 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17527 wpalMemoryCopy(wdiGetStatsRsp + 1,
17528 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17529 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17530
17531 /*Notify UMAC*/
17532 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17533
17534 wpalMemoryFree(wdiGetStatsRsp);
17535
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017537}/*WDI_ProcessGetStatsRsp*/
17538
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017539#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17540/**
17541 @brief Process Get Roam Rssi Rsp function (called when a response is
17542 being received over the bus from HAL)
17543
17544 @param pWDICtx: pointer to the WLAN DAL context
17545 pEventData: pointer to the event information structure
17546
17547 @see
17548 @return Result of the function call
17549*/
17550WDI_Status
17551WDI_ProcessGetRoamRssiRsp
17552(
17553 WDI_ControlBlockType* pWDICtx,
17554 WDI_EventInfoType* pEventData
17555)
17556{
17557 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17558 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17559 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17561
17562 /*-------------------------------------------------------------------------
17563 Sanity check
17564 -------------------------------------------------------------------------*/
17565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17566 ( NULL == pEventData->pEventData))
17567 {
17568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17569 "%s: Invalid parameters", __func__);
17570 WDI_ASSERT(0);
17571 return WDI_STATUS_E_FAILURE;
17572 }
17573
17574 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17575 if(NULL == wdiGetRoamRssiRspCb)
17576 {
17577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17578 "%s: call back function is NULL", __func__);
17579 WDI_ASSERT(0);
17580 return WDI_STATUS_E_FAILURE;
17581 }
17582
17583 /*-------------------------------------------------------------------------
17584 Extract response and send it to UMAC
17585 -------------------------------------------------------------------------*/
17586 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17587 pEventData->pEventData,
17588 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17589
17590 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17591 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17592 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17593
17594 /*Notify UMAC*/
17595 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17596
17597 return WDI_STATUS_SUCCESS;
17598}/*WDI_ProcessGetRoamRssiRsp*/
17599#endif
17600
Jeff Johnson295189b2012-06-20 16:38:30 -070017601
17602/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017605
17606 @param pWDICtx: pointer to the WLAN DAL context
17607 pEventData: pointer to the event information structure
17608
Jeff Johnson295189b2012-06-20 16:38:30 -070017609 @see
17610 @return Result of the function call
17611*/
17612WDI_Status
17613WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017614(
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 WDI_ControlBlockType* pWDICtx,
17616 WDI_EventInfoType* pEventData
17617)
17618{
17619 WDI_Status wdiStatus;
17620 eHalStatus halStatus;
17621 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17623
17624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017626 -------------------------------------------------------------------------*/
17627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17628 ( NULL == pEventData->pEventData))
17629 {
17630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017634 }
17635
17636 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17637
17638 /*-------------------------------------------------------------------------
17639 Extract response and send it to UMAC
17640 -------------------------------------------------------------------------*/
17641 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017642 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017643
17644 /*Notify UMAC*/
17645 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17646
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017648}/*WDI_ProcessUpdateCfgRsp*/
17649
17650
17651
17652/**
17653 @brief Process Add BA Rsp function (called when a response
17654 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017655
17656 @param pWDICtx: pointer to the WLAN DAL context
17657 pEventData: pointer to the event information structure
17658
Jeff Johnson295189b2012-06-20 16:38:30 -070017659 @see
17660 @return Result of the function call
17661*/
17662WDI_Status
17663WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017664(
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 WDI_ControlBlockType* pWDICtx,
17666 WDI_EventInfoType* pEventData
17667)
17668{
17669 WDI_AddBARspCb wdiAddBARspCb;
17670
17671 tAddBARspParams halAddBARsp;
17672 WDI_AddBARspinfoType wdiAddBARsp;
17673
17674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17675
17676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 -------------------------------------------------------------------------*/
17679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17680 ( NULL == pEventData->pEventData))
17681 {
17682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 }
17687
17688 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17689
17690 /*-------------------------------------------------------------------------
17691 Extract response and send it to UMAC
17692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 wpalMemoryCopy( &halAddBARsp,
17694 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 sizeof(halAddBARsp));
17696
17697 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17698
Jeff Johnson43971f52012-07-17 12:26:56 -070017699 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 {
17701 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17702 }
17703
17704 /*Notify UMAC*/
17705 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17706
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017708}/*WDI_ProcessAddSessionBARsp*/
17709
17710/**
17711 @brief Process Add BA Rsp function (called when a response
17712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017713
17714 @param pWDICtx: pointer to the WLAN DAL context
17715 pEventData: pointer to the event information structure
17716
Jeff Johnson295189b2012-06-20 16:38:30 -070017717 @see
17718 @return Result of the function call
17719*/
17720WDI_Status
17721WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017722(
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 WDI_ControlBlockType* pWDICtx,
17724 WDI_EventInfoType* pEventData
17725)
17726{
17727 WDI_TriggerBARspCb wdiTriggerBARspCb;
17728
17729 tTriggerBARspParams* halTriggerBARsp;
17730 tTriggerBaRspCandidate* halBaCandidate;
17731 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17732 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17733 wpt_uint16 index;
17734 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017735 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17737
17738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017740 -------------------------------------------------------------------------*/
17741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17742 ( NULL == pEventData->pEventData))
17743 {
17744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 }
17749
17750 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17751
17752 /*-------------------------------------------------------------------------
17753 Extract response and send it to UMAC
17754 -------------------------------------------------------------------------*/
17755 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17756
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017757 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17758
17759 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17760 {
17761 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017762 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017763 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017764
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017765 if(NULL == wdiTriggerBARsp)
17766 {
17767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17768 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17769 pWDICtx, pEventData, pEventData->pEventData);
17770 WDI_ASSERT(0);
17771 return WDI_STATUS_E_FAILURE;
17772 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017773
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017774 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17775
Jeff Johnson295189b2012-06-20 16:38:30 -070017776 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017777 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17779
17780 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17781 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17782
17783 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17784 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17787 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17788 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017789 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017790 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017791 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17793 }
17794 wdiTriggerBARspCandidate++;
17795 halBaCandidate++;
17796 }
17797 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017798 else
17799 {
17800 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17801
17802 if(NULL == wdiTriggerBARsp)
17803 {
17804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17805 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17806 pWDICtx, pEventData, pEventData->pEventData);
17807 WDI_ASSERT(0);
17808 return WDI_STATUS_E_FAILURE;
17809 }
17810
17811 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17812
17813 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017814
17815 /*Notify UMAC*/
17816 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17817
17818 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017820}/*WDI_ProcessAddSessionBARsp*/
17821
17822/**
17823 @brief Process Update Beacon Params Rsp function (called when a response
17824 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017825
17826 @param pWDICtx: pointer to the WLAN DAL context
17827 pEventData: pointer to the event information structure
17828
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 @see
17830 @return Result of the function call
17831*/
17832WDI_Status
17833WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017834(
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 WDI_ControlBlockType* pWDICtx,
17836 WDI_EventInfoType* pEventData
17837)
17838{
17839 WDI_Status wdiStatus;
17840 eHalStatus halStatus;
17841 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17843
17844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 -------------------------------------------------------------------------*/
17847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17848 ( NULL == pEventData->pEventData))
17849 {
17850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017851 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 }
17855
17856 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17857
17858 /*-------------------------------------------------------------------------
17859 Extract response and send it to UMAC
17860 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 wpalMemoryCopy( &halStatus,
17862 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017863 sizeof(halStatus));
17864
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017866
17867 /*Notify UMAC*/
17868 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17869
Jeff Johnsone7245742012-09-05 17:12:55 -070017870 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017871}/*WDI_ProcessUpdateBeaconParamsRsp*/
17872
17873/**
17874 @brief Process Send Beacon template Rsp function (called when a response
17875 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017876
17877 @param pWDICtx: pointer to the WLAN DAL context
17878 pEventData: pointer to the event information structure
17879
Jeff Johnson295189b2012-06-20 16:38:30 -070017880 @see
17881 @return Result of the function call
17882*/
17883WDI_Status
17884WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017885(
Jeff Johnson295189b2012-06-20 16:38:30 -070017886 WDI_ControlBlockType* pWDICtx,
17887 WDI_EventInfoType* pEventData
17888)
17889{
17890 WDI_Status wdiStatus;
17891 eHalStatus halStatus;
17892 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17894
17895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 -------------------------------------------------------------------------*/
17898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17899 ( NULL == pEventData->pEventData))
17900 {
17901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 }
17906
17907 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17908
17909 /*-------------------------------------------------------------------------
17910 Extract response and send it to UMAC
17911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 wpalMemoryCopy( &halStatus,
17913 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017914 sizeof(halStatus));
17915
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017917
17918 /*Notify UMAC*/
17919 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17920
Jeff Johnsone7245742012-09-05 17:12:55 -070017921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017922}/*WDI_ProcessSendBeaconParamsRsp*/
17923
Jeff Johnsone7245742012-09-05 17:12:55 -070017924
Jeff Johnson295189b2012-06-20 16:38:30 -070017925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017928
17929 @param pWDICtx: pointer to the WLAN DAL context
17930 pEventData: pointer to the event information structure
17931
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 @see
17933 @return Result of the function call
17934*/
17935WDI_Status
17936WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017937(
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 WDI_ControlBlockType* pWDICtx,
17939 WDI_EventInfoType* pEventData
17940)
17941{
17942 WDI_Status wdiStatus;
17943 eHalStatus halStatus;
17944 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17946
17947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 -------------------------------------------------------------------------*/
17950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17951 ( NULL == pEventData->pEventData))
17952 {
17953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 }
17958
17959 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17960
17961 /*-------------------------------------------------------------------------
17962 Extract response and send it to UMAC
17963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 wpalMemoryCopy( &halStatus,
17965 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017966 sizeof(halStatus));
17967
Jeff Johnsone7245742012-09-05 17:12:55 -070017968 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017969
17970 /*Notify UMAC*/
17971 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17972
Jeff Johnsone7245742012-09-05 17:12:55 -070017973 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017974}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17975
17976 /**
17977 @brief Process Set Max Tx Power Rsp function (called when a response
17978 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017979
17980 @param pWDICtx: pointer to the WLAN DAL context
17981 pEventData: pointer to the event information structure
17982
Jeff Johnson295189b2012-06-20 16:38:30 -070017983 @see
17984 @return Result of the function call
17985*/
17986WDI_Status
17987WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017988(
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 WDI_ControlBlockType* pWDICtx,
17990 WDI_EventInfoType* pEventData
17991)
17992{
17993 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017994
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017996
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17999
18000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 -------------------------------------------------------------------------*/
18003 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18004 ( NULL == pEventData->pEventData))
18005 {
18006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 }
18011
18012 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18013
18014 /*-------------------------------------------------------------------------
18015 Extract response and send it to UMAC
18016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18018 pEventData->pEventData,
18019 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018020
18021 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18022 {
18023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18024 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 }
18028
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032
18033 /*Notify UMAC*/
18034 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18035
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018037}
18038
schangd82195a2013-03-13 18:41:24 -070018039 /**
18040 @brief Process Set Tx Power Rsp function (called when a response
18041 is being received over the bus from HAL)
18042
18043 @param pWDICtx: pointer to the WLAN DAL context
18044 pEventData: pointer to the event information structure
18045
18046 @see
18047 @return Result of the function call
18048*/
18049WDI_Status
18050WDI_ProcessSetTxPowerRsp
18051(
18052 WDI_ControlBlockType* pWDICtx,
18053 WDI_EventInfoType* pEventData
18054)
18055{
18056 tSetTxPwrRspMsg halTxpowerrsp;
18057 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18058 WDA_SetTxPowerRspCb wdiReqStatusCb;
18059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18060
18061 /*-------------------------------------------------------------------------
18062 Sanity check
18063 -------------------------------------------------------------------------*/
18064 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18065 ( NULL == pEventData->pEventData))
18066 {
18067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18068 "%s: Invalid parameters", __func__);
18069 WDI_ASSERT(0);
18070 return WDI_STATUS_E_FAILURE;
18071 }
18072
18073 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18074
18075 /*-------------------------------------------------------------------------
18076 Extract response and send it to UMAC
18077 -------------------------------------------------------------------------*/
18078 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18079 pEventData->pEventData,
18080 sizeof(halTxpowerrsp.setTxPwrRspParams));
18081
18082 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18083 {
18084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18085 "Error status returned in Set Tx Power Response ");
18086 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18087 return WDI_STATUS_E_FAILURE;
18088 }
18089
18090 wdiSetTxPowerRspMsg.wdiStatus =
18091 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18092
18093 /*Notify UMAC*/
18094 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18095
18096 return WDI_STATUS_SUCCESS;
18097}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018098#ifdef FEATURE_WLAN_TDLS
18099/**
18100 @brief Process TDLS Link Establish Rsp function (called
18101 when a response is being received over the bus from HAL)
18102
18103 @param pWDICtx: pointer to the WLAN DAL context
18104 pEventData: pointer to the event information structure
18105
18106 @see
18107 @return Result of the function call
18108*/
18109WDI_Status
18110WDI_ProcessLinkEstablishReqRsp
18111(
18112 WDI_ControlBlockType* pWDICtx,
18113 WDI_EventInfoType* pEventData
18114)
18115{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018116 eHalStatus halStatus;
18117 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018118 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18119 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18120
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18122
18123 /*-------------------------------------------------------------------------
18124 Sanity check
18125 -------------------------------------------------------------------------*/
18126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18127 ( NULL == pEventData->pEventData))
18128 {
18129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18130 "%s: Invalid parameters", __func__);
18131 WDI_ASSERT(0);
18132 return WDI_STATUS_E_FAILURE;
18133 }
18134
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018135 /*-------------------------------------------------------------------------
18136 Extract indication and send it to UMAC
18137 -------------------------------------------------------------------------*/
18138 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18139 pEventData->pEventData,
18140 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18141
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018142 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18143
18144 /*-------------------------------------------------------------------------
18145 Extract response and send it to UMAC
18146 -------------------------------------------------------------------------*/
18147 wpalMemoryCopy( &halStatus,
18148 pEventData->pEventData,
18149 sizeof(halStatus));
18150
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018151 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18152 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018153
18154 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018155 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018156
18157 return WDI_STATUS_SUCCESS;
18158}/*WDI_ProcessLinkEstablishReqRsp*/
18159#endif
schangd82195a2013-03-13 18:41:24 -070018160
Jeff Johnson295189b2012-06-20 16:38:30 -070018161/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018163 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018164
18165 @param pWDICtx: pointer to the WLAN DAL context
18166 pEventData: pointer to the event information structure
18167
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 @see
18169 @return Result of the function call
18170*/
18171WDI_Status
18172WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018173(
Jeff Johnson295189b2012-06-20 16:38:30 -070018174 WDI_ControlBlockType* pWDICtx,
18175 WDI_EventInfoType* pEventData
18176)
18177{
18178 WDI_Status wdiStatus;
18179 eHalStatus halStatus;
18180 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18182
18183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 -------------------------------------------------------------------------*/
18186 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18187 ( NULL == pEventData->pEventData))
18188 {
18189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 }
18194
18195 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18196
18197 /*-------------------------------------------------------------------------
18198 Extract response and send it to UMAC
18199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 wpalMemoryCopy( &halStatus,
18201 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 sizeof(halStatus));
18203
Jeff Johnsone7245742012-09-05 17:12:55 -070018204 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018205
18206 /*Notify UMAC*/
18207 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18208
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018210}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018214
18215 @param pWDICtx: pointer to the WLAN DAL context
18216 pEventData: pointer to the event information structure
18217
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 @see
18219 @return Result of the function call
18220*/
18221WDI_Status
18222WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018223(
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 WDI_ControlBlockType* pWDICtx,
18225 WDI_EventInfoType* pEventData
18226)
18227{
18228 WDI_Status wdiStatus;
18229 eHalStatus halStatus;
18230 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018231 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18233
18234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 -------------------------------------------------------------------------*/
18237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18238 ( NULL == pEventData->pEventData))
18239 {
18240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018244 }
18245
18246 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18247
18248 /*-------------------------------------------------------------------------
18249 Extract response and send it to UMAC
18250 -------------------------------------------------------------------------*/
18251 halStatus = *((eHalStatus*)pEventData->pEventData);
18252
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018254
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018255 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18256 * Other module states are taken care by PMC.
18257 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18258 */
18259 if (wdiStatus != WDI_STATUS_SUCCESS) {
18260
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18262 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18263 halStatus);
18264 /* Call Back is not required as we are putting the DXE in FULL
18265 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018266 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18267
18268 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18270 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18271 WDI_ASSERT(0);
18272 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018273 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018274 /*Notify UMAC*/
18275 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18276
Jeff Johnsone7245742012-09-05 17:12:55 -070018277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018278}/*WDI_ProcessEnterImpsRsp*/
18279
18280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018283
18284 @param pWDICtx: pointer to the WLAN DAL context
18285 pEventData: pointer to the event information structure
18286
Jeff Johnson295189b2012-06-20 16:38:30 -070018287 @see
18288 @return Result of the function call
18289*/
18290WDI_Status
18291WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018292(
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 WDI_ControlBlockType* pWDICtx,
18294 WDI_EventInfoType* pEventData
18295)
18296{
18297 WDI_Status wdiStatus;
18298 eHalStatus halStatus;
18299 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018300 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18302
18303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018305 -------------------------------------------------------------------------*/
18306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18307 ( NULL == pEventData->pEventData))
18308 {
18309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 }
18314
18315 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18316
18317 /*-------------------------------------------------------------------------
18318 Extract response and send it to UMAC
18319 -------------------------------------------------------------------------*/
18320 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018322
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018323 if (halStatus != eHAL_STATUS_SUCCESS)
18324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18325 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18326
Jeff Johnson295189b2012-06-20 16:38:30 -070018327 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018328 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18329 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18330 {
18331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18332 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18333 WDI_ASSERT(0);
18334 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018335 /*Notify UMAC*/
18336 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18337
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018339}/*WDI_ProcessExitImpsRsp*/
18340
18341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018342 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018343 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018344
18345 @param pWDICtx: pointer to the WLAN DAL context
18346 pEventData: pointer to the event information structure
18347
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 @see
18349 @return Result of the function call
18350*/
18351WDI_Status
18352WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018353(
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 WDI_ControlBlockType* pWDICtx,
18355 WDI_EventInfoType* pEventData
18356)
18357{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018358 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18359 tHalEnterBmpsRspParams halEnterBmpsRsp;
18360 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18361 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018362 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18364
18365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018367 -------------------------------------------------------------------------*/
18368 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18369 ( NULL == pEventData->pEventData))
18370 {
18371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018375 }
18376
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018378 Extract response and send it to UMAC
18379 -------------------------------------------------------------------------*/
18380 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18381 {
18382 wpalMemoryCopy( &halEnterBmpsRsp,
18383 pEventData->pEventData,
18384 sizeof(halEnterBmpsRsp));
18385
18386 //Used to print debug message
18387 halStatus = halEnterBmpsRsp.status;
18388 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18389 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18390 }
18391 else
18392 {
18393 halStatus = *((eHalStatus*)pEventData->pEventData);
18394 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18395 }
18396
18397 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018398
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018399 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18400 * Other module states are taken care by PMC.
18401 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18402 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018403 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18404 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018407 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18408 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018409 /* Call Back is not required as we are putting the DXE in FULL
18410 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018411 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18412 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18413 {
18414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18415 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18416 WDI_ASSERT(0);
18417 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018418 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018419 }
18420
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018422 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018423
Jeff Johnsone7245742012-09-05 17:12:55 -070018424 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018425}/*WDI_ProcessEnterBmpsRsp*/
18426
18427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018430
18431 @param pWDICtx: pointer to the WLAN DAL context
18432 pEventData: pointer to the event information structure
18433
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 @see
18435 @return Result of the function call
18436*/
18437WDI_Status
18438WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018439(
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 WDI_ControlBlockType* pWDICtx,
18441 WDI_EventInfoType* pEventData
18442)
18443{
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 eHalStatus halStatus;
18445 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018446 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018447 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18448 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18450
18451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 -------------------------------------------------------------------------*/
18454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18455 ( NULL == pEventData->pEventData))
18456 {
18457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 }
18462
18463 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18464
18465 /*-------------------------------------------------------------------------
18466 Extract response and send it to UMAC
18467 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018468
18469 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18470 {
18471 wpalMemoryCopy( &halExitBmpsRsp,
18472 pEventData->pEventData,
18473 sizeof(halExitBmpsRsp));
18474
18475 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18476 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18477 }
18478 else
18479 {
18480 halStatus = *((eHalStatus*)pEventData->pEventData);
18481 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18482 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018483
18484 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018485 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18486 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18487 {
18488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18489 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18490 WDI_ASSERT(0);
18491 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18493
18494 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018495 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018496
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018498}/*WDI_ProcessExitBmpsRsp*/
18499
18500/**
18501 @brief Process Enter UAPSD Rsp function (called when a response
18502 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018503
18504 @param pWDICtx: pointer to the WLAN DAL context
18505 pEventData: pointer to the event information structure
18506
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 @see
18508 @return Result of the function call
18509*/
18510WDI_Status
18511WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018512(
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 WDI_ControlBlockType* pWDICtx,
18514 WDI_EventInfoType* pEventData
18515)
18516{
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018518 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018520 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18521
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18523
18524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 -------------------------------------------------------------------------*/
18527 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18528 ( NULL == pEventData->pEventData))
18529 {
18530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 }
18535
18536 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18537
18538 /*-------------------------------------------------------------------------
18539 Extract response and send it to UMAC
18540 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018541 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18542 {
18543 wpalMemoryCopy( &halEnterUapsdRsp,
18544 pEventData->pEventData,
18545 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018546
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018547 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18548 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18549 }
18550 else
18551 {
18552 halStatus = *((eHalStatus*)pEventData->pEventData);
18553 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18554 }
18555
18556 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 {
18558 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18559 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18560 // the traffic to decide when to suspend the trigger frames when there is no traffic
18561 // activity on the trigger enabled ACs
18562 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18563
18564#ifdef WLAN_PERF
18565 // Increment the BD signature to refresh the fast path BD utilization
18566 pWDICtx->uBdSigSerialNum++;
18567#endif
18568 }
18569
18570 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018571 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018572
Jeff Johnsone7245742012-09-05 17:12:55 -070018573 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018574}/*WDI_ProcessEnterUapsdRsp*/
18575
18576/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018579
18580 @param pWDICtx: pointer to the WLAN DAL context
18581 pEventData: pointer to the event information structure
18582
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 @see
18584 @return Result of the function call
18585*/
18586WDI_Status
18587WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018588(
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 WDI_ControlBlockType* pWDICtx,
18590 WDI_EventInfoType* pEventData
18591)
18592{
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 eHalStatus halStatus;
18594 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018595 tHalExitUapsdRspParams halExitUapsdRsp;
18596 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18612
18613 /*-------------------------------------------------------------------------
18614 Extract response and send it to UMAC
18615 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018616 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18617 {
18618 wpalMemoryCopy( &halExitUapsdRsp,
18619 pEventData->pEventData,
18620 sizeof(halExitUapsdRsp));
18621
18622 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18623 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18624 }
18625 else
18626 {
18627 halStatus = *((eHalStatus*)pEventData->pEventData);
18628 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18629 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18631 // directly instead of the FW WQ.
18632 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18633
18634#ifdef WLAN_PERF
18635 // Increment the BD signature to refresh the fast path BD utilization
18636 pWDICtx->uBdSigSerialNum++;
18637#endif
18638
18639 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018640 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018641
Jeff Johnsone7245742012-09-05 17:12:55 -070018642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018643}/*WDI_ProcessExitUapsdRsp*/
18644
18645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018648
18649 @param pWDICtx: pointer to the WLAN DAL context
18650 pEventData: pointer to the event information structure
18651
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 @see
18653 @return Result of the function call
18654*/
18655WDI_Status
18656WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018657(
Jeff Johnson295189b2012-06-20 16:38:30 -070018658 WDI_ControlBlockType* pWDICtx,
18659 WDI_EventInfoType* pEventData
18660)
18661{
18662 WDI_Status wdiStatus;
18663 eHalStatus halStatus;
18664 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18666
18667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 -------------------------------------------------------------------------*/
18670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18671 ( NULL == pEventData->pEventData))
18672 {
18673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 }
18678
18679 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18680
18681 /*-------------------------------------------------------------------------
18682 Extract response and send it to UMAC
18683 -------------------------------------------------------------------------*/
18684 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018686
18687 /*Notify UMAC*/
18688 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18689
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018691}/*WDI_ProcessSetUapsdAcParamsRsp*/
18692
18693/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018696
18697 @param pWDICtx: pointer to the WLAN DAL context
18698 pEventData: pointer to the event information structure
18699
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 @see
18701 @return Result of the function call
18702*/
18703WDI_Status
18704WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018705(
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 WDI_ControlBlockType* pWDICtx,
18707 WDI_EventInfoType* pEventData
18708)
18709{
18710 WDI_Status wdiStatus;
18711 eHalStatus halStatus;
18712 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18714
18715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 -------------------------------------------------------------------------*/
18718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18719 ( NULL == pEventData->pEventData))
18720 {
18721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 }
18726
18727 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18728
18729 /*-------------------------------------------------------------------------
18730 Extract response and send it to UMAC
18731 -------------------------------------------------------------------------*/
18732 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018733 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018734
18735 /*Notify UMAC*/
18736 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18737
Jeff Johnsone7245742012-09-05 17:12:55 -070018738 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018739}/*WDI_ProcessUpdateUapsdParamsRsp*/
18740
18741/**
18742 @brief Process Configure RXP filter Rsp function (called when a
18743 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018744
18745 @param pWDICtx: pointer to the WLAN DAL context
18746 pEventData: pointer to the event information structure
18747
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 @see
18749 @return Result of the function call
18750*/
18751WDI_Status
18752WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018753(
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 WDI_ControlBlockType* pWDICtx,
18755 WDI_EventInfoType* pEventData
18756)
18757{
18758 WDI_Status wdiStatus;
18759 eHalStatus halStatus;
18760 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18762
18763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 -------------------------------------------------------------------------*/
18766 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18767 ( NULL == pEventData->pEventData))
18768 {
18769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018773 }
18774
18775 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18776
18777 /*-------------------------------------------------------------------------
18778 Extract response and send it to UMAC
18779 -------------------------------------------------------------------------*/
18780 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018781 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018782
18783 /*Notify UMAC*/
18784 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18785
Jeff Johnsone7245742012-09-05 17:12:55 -070018786 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018787}/*WDI_ProcessConfigureRxpFilterRsp*/
18788
18789/**
18790 @brief Process Set beacon filter Rsp function (called when a
18791 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018792
18793 @param pWDICtx: pointer to the WLAN DAL context
18794 pEventData: pointer to the event information structure
18795
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 @see
18797 @return Result of the function call
18798*/
18799WDI_Status
18800WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018801(
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 WDI_ControlBlockType* pWDICtx,
18803 WDI_EventInfoType* pEventData
18804)
18805{
18806 WDI_Status wdiStatus;
18807 eHalStatus halStatus;
18808 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18810
18811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 -------------------------------------------------------------------------*/
18814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18815 ( NULL == pEventData->pEventData))
18816 {
18817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 }
18822
18823 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18824
18825 /*-------------------------------------------------------------------------
18826 Extract response and send it to UMAC
18827 -------------------------------------------------------------------------*/
18828 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018829 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018830
18831 /*Notify UMAC*/
18832 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18833
Jeff Johnsone7245742012-09-05 17:12:55 -070018834 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018835}/*WDI_ProcessSetBeaconFilterRsp*/
18836
18837/**
18838 @brief Process remove beacon filter Rsp function (called when a
18839 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018840
18841 @param pWDICtx: pointer to the WLAN DAL context
18842 pEventData: pointer to the event information structure
18843
Jeff Johnson295189b2012-06-20 16:38:30 -070018844 @see
18845 @return Result of the function call
18846*/
18847WDI_Status
18848WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018849(
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 WDI_ControlBlockType* pWDICtx,
18851 WDI_EventInfoType* pEventData
18852)
18853{
18854 WDI_Status wdiStatus;
18855 eHalStatus halStatus;
18856 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18858
18859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 -------------------------------------------------------------------------*/
18862 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18863 ( NULL == pEventData->pEventData))
18864 {
18865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 }
18870
18871 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18872
18873 /*-------------------------------------------------------------------------
18874 Extract response and send it to UMAC
18875 -------------------------------------------------------------------------*/
18876 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018877 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018878
18879 /*Notify UMAC*/
18880 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18881
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018883}/*WDI_ProcessRemBeaconFilterRsp*/
18884
18885/**
18886 @brief Process set RSSI thresholds Rsp function (called when a
18887 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018888
18889 @param pWDICtx: pointer to the WLAN DAL context
18890 pEventData: pointer to the event information structure
18891
Jeff Johnson295189b2012-06-20 16:38:30 -070018892 @see
18893 @return Result of the function call
18894*/
18895WDI_Status
18896WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018897(
Jeff Johnson295189b2012-06-20 16:38:30 -070018898 WDI_ControlBlockType* pWDICtx,
18899 WDI_EventInfoType* pEventData
18900)
18901{
18902 WDI_Status wdiStatus;
18903 eHalStatus halStatus;
18904 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18906
18907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 -------------------------------------------------------------------------*/
18910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18911 ( NULL == pEventData->pEventData))
18912 {
18913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 }
18918
18919 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18920
18921 /*-------------------------------------------------------------------------
18922 Extract response and send it to UMAC
18923 -------------------------------------------------------------------------*/
18924 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018926
18927 /*Notify UMAC*/
18928 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18929
Jeff Johnsone7245742012-09-05 17:12:55 -070018930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018931}/*WDI_ProcessSetRSSIThresoldsRsp*/
18932
18933/**
18934 @brief Process host offload Rsp function (called when a
18935 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018936
18937 @param pWDICtx: pointer to the WLAN DAL context
18938 pEventData: pointer to the event information structure
18939
Jeff Johnson295189b2012-06-20 16:38:30 -070018940 @see
18941 @return Result of the function call
18942*/
18943WDI_Status
18944WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018945(
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 WDI_ControlBlockType* pWDICtx,
18947 WDI_EventInfoType* pEventData
18948)
18949{
18950 WDI_Status wdiStatus;
18951 eHalStatus halStatus;
18952 WDI_HostOffloadCb wdiHostOffloadCb;
18953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18954
18955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 -------------------------------------------------------------------------*/
18958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18959 ( NULL == pEventData->pEventData))
18960 {
18961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 }
18966
18967 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18968
18969 /*-------------------------------------------------------------------------
18970 Extract response and send it to UMAC
18971 -------------------------------------------------------------------------*/
18972 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018974
18975 /*Notify UMAC*/
18976 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18977
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018979}/*WDI_ProcessHostOffloadRsp*/
18980
18981/**
18982 @brief Process keep alive Rsp function (called when a
18983 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018984
18985 @param pWDICtx: pointer to the WLAN DAL context
18986 pEventData: pointer to the event information structure
18987
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 @see
18989 @return Result of the function call
18990*/
18991WDI_Status
18992WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018993(
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 WDI_ControlBlockType* pWDICtx,
18995 WDI_EventInfoType* pEventData
18996)
18997{
18998 WDI_Status wdiStatus;
18999 eHalStatus halStatus;
19000 WDI_KeepAliveCb wdiKeepAliveCb;
19001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19003 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19004
19005
19006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 -------------------------------------------------------------------------*/
19009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19010 ( NULL == pEventData->pEventData))
19011 {
19012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 }
19017
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19019
Jeff Johnson295189b2012-06-20 16:38:30 -070019020 /*-------------------------------------------------------------------------
19021 Extract response and send it to UMAC
19022 -------------------------------------------------------------------------*/
19023 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019025
19026 /*Notify UMAC*/
19027 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19028
Jeff Johnsone7245742012-09-05 17:12:55 -070019029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019030}/*WDI_ProcessKeepAliveRsp*/
19031
19032/**
19033 @brief Process wowl add ptrn Rsp function (called when a
19034 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019035
19036 @param pWDICtx: pointer to the WLAN DAL context
19037 pEventData: pointer to the event information structure
19038
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 @see
19040 @return Result of the function call
19041*/
19042WDI_Status
19043WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019044(
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 WDI_ControlBlockType* pWDICtx,
19046 WDI_EventInfoType* pEventData
19047)
19048{
Jeff Johnson295189b2012-06-20 16:38:30 -070019049 eHalStatus halStatus;
19050 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019051 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19052 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19053
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19055
19056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 -------------------------------------------------------------------------*/
19059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19060 ( NULL == pEventData->pEventData))
19061 {
19062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 }
19067
19068 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19069
19070 /*-------------------------------------------------------------------------
19071 Extract response and send it to UMAC
19072 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019073 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19074 {
19075 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19076 pEventData->pEventData,
19077 sizeof(halAddWowlBcastPtrRsp));
19078
19079 wdiWowlAddBcPtrRsp.wdiStatus =
19080 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19081 }
19082 else
19083 {
19084 halStatus = *((eHalStatus*)pEventData->pEventData);
19085 wdiWowlAddBcPtrRsp.wdiStatus =
19086 WDI_HAL_2_WDI_STATUS(halStatus);
19087 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019088
19089 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019090 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019091
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019093}/*WDI_ProcessWowlAddBcPtrnRsp*/
19094
19095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019098
19099 @param pWDICtx: pointer to the WLAN DAL context
19100 pEventData: pointer to the event information structure
19101
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 @see
19103 @return Result of the function call
19104*/
19105WDI_Status
19106WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019107(
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 WDI_ControlBlockType* pWDICtx,
19109 WDI_EventInfoType* pEventData
19110)
19111{
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 eHalStatus halStatus;
19113 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019114 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19115 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19117
19118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 -------------------------------------------------------------------------*/
19121 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19122 ( NULL == pEventData->pEventData))
19123 {
19124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019125 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 }
19129
19130 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19131
19132 /*-------------------------------------------------------------------------
19133 Extract response and send it to UMAC
19134 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019135 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19136 {
19137 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19138 pEventData->pEventData,
19139 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019140
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019141 wdiWowlDelBcstPtrRsp.wdiStatus =
19142 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19143 }
19144 else
19145 {
19146 halStatus = *((eHalStatus*)pEventData->pEventData);
19147 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19148 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019150 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019151
Jeff Johnsone7245742012-09-05 17:12:55 -070019152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019153}/*WDI_ProcessWowlDelBcPtrnRsp*/
19154
19155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019156 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019158
19159 @param pWDICtx: pointer to the WLAN DAL context
19160 pEventData: pointer to the event information structure
19161
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 @see
19163 @return Result of the function call
19164*/
19165WDI_Status
19166WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019167(
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 WDI_ControlBlockType* pWDICtx,
19169 WDI_EventInfoType* pEventData
19170)
19171{
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 eHalStatus halStatus;
19173 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019174 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19175 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19177
19178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 -------------------------------------------------------------------------*/
19181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19182 ( NULL == pEventData->pEventData))
19183 {
19184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 }
19189
19190 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19191
19192 /*-------------------------------------------------------------------------
19193 Extract response and send it to UMAC
19194 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019195 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19196 {
19197 wpalMemoryCopy( &halEnterWowlRspParams,
19198 (wpt_uint8*)pEventData->pEventData,
19199 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019200
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019201 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19202 wdiwowlEnterRsp.status =
19203 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19204 }
19205 else
19206 {
19207 halStatus = *((eHalStatus*)pEventData->pEventData);
19208 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19209 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019211 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019212
Jeff Johnsone7245742012-09-05 17:12:55 -070019213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019214}/*WDI_ProcessWowlEnterRsp*/
19215
19216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019219
19220 @param pWDICtx: pointer to the WLAN DAL context
19221 pEventData: pointer to the event information structure
19222
Jeff Johnson295189b2012-06-20 16:38:30 -070019223 @see
19224 @return Result of the function call
19225*/
19226WDI_Status
19227WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019228(
Jeff Johnson295189b2012-06-20 16:38:30 -070019229 WDI_ControlBlockType* pWDICtx,
19230 WDI_EventInfoType* pEventData
19231)
19232{
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 eHalStatus halStatus;
19234 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019235 tHalExitWowlRspParams halExitWowlRspParams;
19236 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19237
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19239
19240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019242 -------------------------------------------------------------------------*/
19243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19244 ( NULL == pEventData->pEventData))
19245 {
19246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 }
19251
19252 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19253
19254 /*-------------------------------------------------------------------------
19255 Extract response and send it to UMAC
19256 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019257 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19258 {
19259 wpalMemoryCopy( &halExitWowlRspParams,
19260 pEventData->pEventData,
19261 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019262
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019263 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19264 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19265
19266 }
19267 else
19268 {
19269 halStatus = *((eHalStatus*)pEventData->pEventData);
19270 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19271 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019273 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019274
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019276}/*WDI_ProcessWowlExitRsp*/
19277
19278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 (called when a response is being received over the bus
19281 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019282
19283 @param pWDICtx: pointer to the WLAN DAL context
19284 pEventData: pointer to the event information structure
19285
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 @see
19287 @return Result of the function call
19288*/
19289WDI_Status
19290WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019291(
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 WDI_ControlBlockType* pWDICtx,
19293 WDI_EventInfoType* pEventData
19294)
19295{
19296 WDI_Status wdiStatus;
19297 eHalStatus halStatus;
19298 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19300
19301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 -------------------------------------------------------------------------*/
19304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19305 ( NULL == pEventData->pEventData))
19306 {
19307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 }
19312
19313 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19314
19315 /*-------------------------------------------------------------------------
19316 Extract response and send it to UMAC
19317 -------------------------------------------------------------------------*/
19318 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019320
19321 /*Notify UMAC*/
19322 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19323
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019325}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19326
19327
19328/**
19329 @brief Process Nv download(called when a response
19330 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019331
19332 @param pWDICtx: pointer to the WLAN DAL context
19333 pEventData: pointer to the event information structure
19334
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 @see
19336 @return Result of the function call
19337*/
19338WDI_Status
19339WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019340(
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 WDI_ControlBlockType* pWDICtx,
19342 WDI_EventInfoType* pEventData
19343)
19344{
19345
19346 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19347 tHalNvImgDownloadRspParams halNvDownloadRsp;
19348 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19349
19350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 -------------------------------------------------------------------------*/
19353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19354 ( NULL == pEventData->pEventData))
19355 {
19356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 }
19361
19362 /*-------------------------------------------------------------------------
19363 Extract response and send it to UMAC
19364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019365 wpalMemoryCopy( &halNvDownloadRsp,
19366 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019367 sizeof(halNvDownloadRsp));
19368
19369 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19370
19371 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019372 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19373 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 {
19375 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 }
19378 else
19379 {
19380 /*Reset the Nv related global information in WDI context information */
19381 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19382 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19383 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19384 /*call WDA callback function for last fragment */
19385 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19386 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19387 }
19388
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019390}
19391#ifdef WLAN_FEATURE_VOWIFI_11R
19392/**
19393 @brief Process Add TSpec Rsp function (called when a response
19394 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019395
19396 @param pWDICtx: pointer to the WLAN DAL context
19397 pEventData: pointer to the event information structure
19398
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 @see
19400 @return Result of the function call
19401*/
19402WDI_Status
19403WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019404(
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 WDI_ControlBlockType* pWDICtx,
19406 WDI_EventInfoType* pEventData
19407)
19408{
19409 WDI_Status wdiStatus;
19410 tAggrAddTsRspParams aggrAddTsRsp;
19411 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19413
19414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019416 -------------------------------------------------------------------------*/
19417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19418 ( NULL == pEventData->pEventData))
19419 {
19420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 }
19425
19426 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19427
19428 /*-------------------------------------------------------------------------
19429 Extract response and send it to UMAC
19430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019431 wpalMemoryCopy( &aggrAddTsRsp,
19432 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 sizeof(aggrAddTsRsp));
19434
19435 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019437
19438 /*Notify UMAC*/
19439 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19440
Jeff Johnsone7245742012-09-05 17:12:55 -070019441 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019442}/*WDI_ProcessAddTSpecRsp*/
19443#endif /* WLAN_FEATURE_VOWIFI_11R */
19444
19445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019446 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019448
19449 @param pWDICtx: pointer to the WLAN DAL context
19450 pEventData: pointer to the event information structure
19451
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 @see
19453 @return Result of the function call
19454*/
19455WDI_Status
19456WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019457(
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 WDI_ControlBlockType* pWDICtx,
19459 WDI_EventInfoType* pEventData
19460)
19461{
19462 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19463 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19464 tHalHostResumeRspParams hostResumeRspMsg;
19465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19466
19467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 -------------------------------------------------------------------------*/
19470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19471 ( NULL == pEventData->pEventData))
19472 {
19473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 }
19478
19479 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19480
19481 /*-------------------------------------------------------------------------
19482 Extract response and send it to UMAC
19483 -------------------------------------------------------------------------*/
19484
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 (wpt_uint8*)pEventData->pEventData,
19487 sizeof(hostResumeRspMsg));
19488
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 wdiResumeRspParams.wdiStatus =
19490 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019491
19492 /*Notify UMAC*/
19493 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19494
19495 return WDI_STATUS_SUCCESS;
19496}
19497
19498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019499 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019501
19502 @param pWDICtx: pointer to the WLAN DAL context
19503 pEventData: pointer to the event information structure
19504
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 @see
19506 @return Result of the function call
19507*/
19508WDI_Status
19509WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019510(
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 WDI_ControlBlockType* pWDICtx,
19512 WDI_EventInfoType* pEventData
19513)
19514{
19515 WDI_Status wdiStatus;
19516 eHalStatus halStatus;
19517 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19519
19520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 -------------------------------------------------------------------------*/
19523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19524 ( NULL == pEventData->pEventData))
19525 {
19526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019531
19532 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533
19534 /*-------------------------------------------------------------------------
19535 Extract response and send it to UMAC
19536 -------------------------------------------------------------------------*/
19537 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019538 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019539
19540 /*Notify UMAC*/
19541 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19542
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019544}/*WDI_ProcessSetTxPerTrackingRsp*/
19545
19546/*==========================================================================
19547 Indications from HAL
19548 ==========================================================================*/
19549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 indication of this kind is being received over the bus
19552 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019553
19554 @param pWDICtx: pointer to the WLAN DAL context
19555 pEventData: pointer to the event information structure
19556
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 @see
19558 @return Result of the function call
19559*/
19560WDI_Status
19561WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019562(
Jeff Johnson295189b2012-06-20 16:38:30 -070019563 WDI_ControlBlockType* pWDICtx,
19564 WDI_EventInfoType* pEventData
19565)
19566{
19567 WDI_LowLevelIndType wdiInd;
19568 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19570
19571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 -------------------------------------------------------------------------*/
19574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19575 ( NULL == pEventData->pEventData))
19576 {
19577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 }
19582
19583 /*-------------------------------------------------------------------------
19584 Extract indication and send it to UMAC
19585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19587 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 sizeof(tHalRSSINotification));
19589
19590 /*Fill in the indication parameters*/
19591 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19592 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19593 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19594 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19595 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19596 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19597 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19598 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19599 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19600 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19601 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19602 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19603 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019604 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19605 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019606
ltimariu034f7d62013-01-24 18:54:33 -080019607 if ( pWDICtx->wdiLowLevelIndCB )
19608 {
19609 /*Notify UMAC of indication*/
19610 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19611 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019612
19613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019614}/*WDI_ProcessLowRSSIInd*/
19615
19616
19617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019618 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019619 an indication of this kind is being received over the
19620 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019621
19622 @param pWDICtx: pointer to the WLAN DAL context
19623 pEventData: pointer to the event information structure
19624
Jeff Johnson295189b2012-06-20 16:38:30 -070019625 @see
19626 @return Result of the function call
19627*/
19628WDI_Status
19629WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019630(
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 WDI_ControlBlockType* pWDICtx,
19632 WDI_EventInfoType* pEventData
19633)
19634{
19635 WDI_Status wdiStatus;
19636 eHalStatus halStatus;
19637 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019638 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19640
19641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 -------------------------------------------------------------------------*/
19644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19645 ( NULL == pEventData->pEventData))
19646 {
19647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019652 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 /*-------------------------------------------------------------------------
19654 Extract indication and send it to UMAC
19655 -------------------------------------------------------------------------*/
19656 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19657 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019659
19660 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019661 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019662 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19663 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019664 if ( pWDICtx->wdiLowLevelIndCB )
19665 {
19666 /*Notify UMAC*/
19667 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19668 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019669
19670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019671}/*WDI_ProcessMissedBeaconInd*/
19672
19673
19674/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019675 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 an indication of this kind is being received over the
19677 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019678
19679 @param pWDICtx: pointer to the WLAN DAL context
19680 pEventData: pointer to the event information structure
19681
Jeff Johnson295189b2012-06-20 16:38:30 -070019682 @see
19683 @return Result of the function call
19684*/
19685WDI_Status
19686WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019687(
Jeff Johnson295189b2012-06-20 16:38:30 -070019688 WDI_ControlBlockType* pWDICtx,
19689 WDI_EventInfoType* pEventData
19690)
19691{
19692 WDI_Status wdiStatus;
19693 eHalStatus halStatus;
19694 WDI_LowLevelIndType wdiInd;
19695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19696
19697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 -------------------------------------------------------------------------*/
19700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19701 ( NULL == pEventData->pEventData))
19702 {
19703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 }
19708
19709 /*-------------------------------------------------------------------------
19710 Extract indication and send it to UMAC
19711 -------------------------------------------------------------------------*/
19712 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19713 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019714 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019715
19716 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 /* ! TO DO - fill in from HAL struct:
19719 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19720
ltimariu034f7d62013-01-24 18:54:33 -080019721 if ( pWDICtx->wdiLowLevelIndCB )
19722 {
19723 /*Notify UMAC*/
19724 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19725 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019726
19727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019728}/*WDI_ProcessUnkAddrFrameInd*/
19729
19730
19731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019732 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019733 indication of this kind is being received over the bus
19734 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019735
19736 @param pWDICtx: pointer to the WLAN DAL context
19737 pEventData: pointer to the event information structure
19738
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 @see
19740 @return Result of the function call
19741*/
19742WDI_Status
19743WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019744(
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 WDI_ControlBlockType* pWDICtx,
19746 WDI_EventInfoType* pEventData
19747)
19748{
19749 WDI_LowLevelIndType wdiInd;
19750 tpSirMicFailureInd pHalMicFailureInd;
19751
19752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19753
19754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019756 -------------------------------------------------------------------------*/
19757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19758 ( NULL == pEventData->pEventData))
19759 {
19760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019764 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019765
Jeff Johnson295189b2012-06-20 16:38:30 -070019766 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19767 /*-------------------------------------------------------------------------
19768 Extract indication and send it to UMAC
19769 -------------------------------------------------------------------------*/
19770
19771 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19774 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19775 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19776 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19777 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19778 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19779 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19780 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019781 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019784 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 pHalMicFailureInd->info.keyId;
19787 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19788 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19789 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19790 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019791
19792 if ( pWDICtx->wdiLowLevelIndCB )
19793 {
19794 /*Notify UMAC*/
19795 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19796 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019797
19798 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019799}/*WDI_ProcessMicFailureInd*/
19800
19801
19802/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019803 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 an indication of this kind is being received over the
19805 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019806
19807 @param pWDICtx: pointer to the WLAN DAL context
19808 pEventData: pointer to the event information structure
19809
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 @see
19811 @return Result of the function call
19812*/
19813WDI_Status
19814WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019815(
Jeff Johnson295189b2012-06-20 16:38:30 -070019816 WDI_ControlBlockType* pWDICtx,
19817 WDI_EventInfoType* pEventData
19818)
19819{
19820 WDI_Status wdiStatus;
19821 eHalStatus halStatus;
19822 WDI_LowLevelIndType wdiInd;
19823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19824
19825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 -------------------------------------------------------------------------*/
19828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19829 ( NULL == pEventData->pEventData))
19830 {
19831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 }
19836
19837 /*-------------------------------------------------------------------------
19838 Extract indication and send it to UMAC
19839 -------------------------------------------------------------------------*/
19840
19841 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19842 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019844
19845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19846 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019847
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019849 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19850 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019851
ltimariu034f7d62013-01-24 18:54:33 -080019852 if ( pWDICtx->wdiLowLevelIndCB )
19853 {
19854 /*Notify UMAC*/
19855 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019857
19858 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019859}/*WDI_ProcessFatalErrorInd*/
19860
19861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 an indication of this kind is being received over the
19864 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019865
19866 @param pWDICtx: pointer to the WLAN DAL context
19867 pEventData: pointer to the event information structure
19868
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 @see
19870 @return Result of the function call
19871*/
19872WDI_Status
19873WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019874(
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 WDI_ControlBlockType* pWDICtx,
19876 WDI_EventInfoType* pEventData
19877)
19878{
19879 tDeleteStaContextParams halDelSTACtx;
19880 WDI_LowLevelIndType wdiInd;
19881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19882
19883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019885 -------------------------------------------------------------------------*/
19886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19887 ( NULL == pEventData->pEventData))
19888 {
19889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 }
19894
19895 /*-------------------------------------------------------------------------
19896 Extract indication and send it to UMAC
19897 -------------------------------------------------------------------------*/
19898
19899 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019900 wpalMemoryCopy( &halDelSTACtx,
19901 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 sizeof(halDelSTACtx));
19903
19904 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019905 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019906
19907 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19908 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19909 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19910 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19911
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19917 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019918
ltimariu034f7d62013-01-24 18:54:33 -080019919 if ( pWDICtx->wdiLowLevelIndCB )
19920 {
19921 /*Notify UMAC*/
19922 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19923 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019924
19925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019926}/*WDI_ProcessDelSTAInd*/
19927
19928/**
19929*@brief Process Coex Indication function (called when
19930 an indication of this kind is being received over the
19931 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019932
19933 @param pWDICtx: pointer to the WLAN DAL context
19934 pEventData: pointer to the event information structure
19935
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 @see
19937 @return Result of the function call
19938*/
19939WDI_Status
19940WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019941(
Jeff Johnson295189b2012-06-20 16:38:30 -070019942 WDI_ControlBlockType* pWDICtx,
19943 WDI_EventInfoType* pEventData
19944)
19945{
19946 WDI_LowLevelIndType wdiInd;
19947 tCoexIndMsg halCoexIndMsg;
19948 wpt_uint32 index;
19949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19950
19951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 -------------------------------------------------------------------------*/
19954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19955 ( NULL == pEventData->pEventData ))
19956 {
19957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 }
19962
19963 /*-------------------------------------------------------------------------
19964 Extract indication and send it to UMAC
19965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019966 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19967 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 sizeof(halCoexIndMsg.coexIndParams) );
19969
19970 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 wdiInd.wdiIndicationType = WDI_COEX_IND;
19972 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 }
19977
19978 // DEBUG
19979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19980 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019981 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19982 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19983 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19984 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19985 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019986
ltimariu034f7d62013-01-24 18:54:33 -080019987 if ( pWDICtx->wdiLowLevelIndCB )
19988 {
19989 /*Notify UMAC*/
19990 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19991 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019992
19993 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019994}/*WDI_ProcessCoexInd*/
19995
19996/**
19997*@brief Process Tx Complete Indication function (called when
19998 an indication of this kind is being received over the
19999 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020000
20001 @param pWDICtx: pointer to the WLAN DAL context
20002 pEventData: pointer to the event information structure
20003
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 @see
20005 @return Result of the function call
20006*/
20007WDI_Status
20008WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020009(
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 WDI_ControlBlockType* pWDICtx,
20011 WDI_EventInfoType* pEventData
20012)
20013{
20014 WDI_LowLevelIndType wdiInd;
20015 tTxComplIndMsg halTxComplIndMsg;
20016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20017
20018 /*-------------------------------------------------------------------------
20019 Sanity check
20020 -------------------------------------------------------------------------*/
20021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20022 ( NULL == pEventData->pEventData ))
20023 {
20024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ASSERT( 0 );
20027 return WDI_STATUS_E_FAILURE;
20028 }
20029
20030 /*-------------------------------------------------------------------------
20031 Extract indication and send it to UMAC
20032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20034 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 sizeof(halTxComplIndMsg.txComplParams) );
20036
20037 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20039 wdiInd.wdiIndicationData.tx_complete_status
20040 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020041
ltimariu034f7d62013-01-24 18:54:33 -080020042 if ( pWDICtx->wdiLowLevelIndCB )
20043 {
20044 /*Notify UMAC*/
20045 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20046 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020047
20048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020049}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020050#ifdef FEATURE_WLAN_TDLS
20051/**
20052*@brief Process TDLS Indication function (called when
20053 an indication of this kind is being received over the
20054 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020055
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020056 @param pWDICtx: pointer to the WLAN DAL context
20057 pEventData: pointer to the event information structure
20058
20059 @see
20060 @return Result of the function call
20061*/
20062WDI_Status
20063WDI_ProcessTdlsInd
20064(
20065 WDI_ControlBlockType* pWDICtx,
20066 WDI_EventInfoType* pEventData
20067)
20068{
20069 WDI_LowLevelIndType wdiInd;
20070 tTdlsIndMsg halTdlsIndMsg;
20071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20072
20073 /*-------------------------------------------------------------------------
20074 Sanity check
20075 -------------------------------------------------------------------------*/
20076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20077 ( NULL == pEventData->pEventData ))
20078 {
20079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20080 "%s: Invalid parameters", __func__);
20081 WDI_ASSERT( 0 );
20082 return WDI_STATUS_E_FAILURE;
20083 }
20084
20085 /*-------------------------------------------------------------------------
20086 Extract indication and send it to UMAC
20087 -------------------------------------------------------------------------*/
20088 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20089 pEventData->pEventData,
20090 sizeof(halTdlsIndMsg.tdlsIndParams) );
20091
20092 /*Fill in the indication parameters*/
20093 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20094
20095 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20096 = halTdlsIndMsg.tdlsIndParams.status;
20097
20098 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20099 = halTdlsIndMsg.tdlsIndParams.staIdx;
20100
20101 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20102 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20103
20104 /*Notify UMAC*/
20105 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20106
20107 return WDI_STATUS_SUCCESS;
20108}/*WDI_ProcessTdlsInd*/
20109#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020110/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020111*@brief Process Noa Start Indication function (called when
20112 an indication of this kind is being received over the
20113 bus from HAL)
20114
20115 @param pWDICtx: pointer to the WLAN DAL context
20116 pEventData: pointer to the event information structure
20117
20118 @see
20119 @return Result of the function call
20120*/
20121WDI_Status
20122WDI_ProcessP2pNoaStartInd
20123(
20124 WDI_ControlBlockType* pWDICtx,
20125 WDI_EventInfoType* pEventData
20126)
20127{
20128 WDI_LowLevelIndType wdiInd;
20129 tNoaStartIndMsg halNoaStartIndMsg;
20130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20131
20132 /*-------------------------------------------------------------------------
20133 Sanity check
20134 -------------------------------------------------------------------------*/
20135 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20136 ( NULL == pEventData->pEventData ))
20137 {
20138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20139 "%s: Invalid parameters", __func__);
20140 WDI_ASSERT( 0 );
20141 return WDI_STATUS_E_FAILURE;
20142 }
20143
20144 /*-------------------------------------------------------------------------
20145 Extract indication and send it to UMAC
20146 -------------------------------------------------------------------------*/
20147 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20148 pEventData->pEventData,
20149 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20150
20151 /*Fill in the indication parameters*/
20152 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20153
20154 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20155 = halNoaStartIndMsg.noaStartIndParams.status;
20156
20157 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20158 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20159
20160 /*Notify UMAC*/
20161 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20162
20163 return WDI_STATUS_SUCCESS;
20164}/*WDI_ProcessNoaAttrInd*/
20165
20166/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020167*@brief Process Noa Attr Indication function (called when
20168 an indication of this kind is being received over the
20169 bus from HAL)
20170
20171 @param pWDICtx: pointer to the WLAN DAL context
20172 pEventData: pointer to the event information structure
20173
20174 @see
20175 @return Result of the function call
20176*/
20177WDI_Status
20178WDI_ProcessP2pNoaAttrInd
20179(
20180 WDI_ControlBlockType* pWDICtx,
20181 WDI_EventInfoType* pEventData
20182)
20183{
20184 WDI_LowLevelIndType wdiInd;
20185 tNoaAttrIndMsg halNoaAttrIndMsg;
20186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20187
20188 /*-------------------------------------------------------------------------
20189 Sanity check
20190 -------------------------------------------------------------------------*/
20191 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20192 ( NULL == pEventData->pEventData ))
20193 {
20194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020196 WDI_ASSERT( 0 );
20197 return WDI_STATUS_E_FAILURE;
20198 }
20199
20200 /*-------------------------------------------------------------------------
20201 Extract indication and send it to UMAC
20202 -------------------------------------------------------------------------*/
20203 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20204 pEventData->pEventData,
20205 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20206
20207 /*Fill in the indication parameters*/
20208 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020209
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20211 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020212
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20214 = halNoaAttrIndMsg.noaAttrIndParams.index;
20215 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20216 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20217 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20218 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020219
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20221 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20222 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20223 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20224 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20225 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20226 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20227 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020228
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20230 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20231 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20232 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20233 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20234 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20235 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20236 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20237
ltimariu034f7d62013-01-24 18:54:33 -080020238 if ( pWDICtx->wdiLowLevelIndCB )
20239 {
20240 /*Notify UMAC*/
20241 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020243
20244 return WDI_STATUS_SUCCESS;
20245}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020246
20247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020249 an indication of this kind is being received over the
20250 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020251
20252 @param pWDICtx: pointer to the WLAN DAL context
20253 pEventData: pointer to the event information structure
20254
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 @see
20256 @return Result of the function call
20257*/
20258WDI_Status
20259WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020260(
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 WDI_ControlBlockType* pWDICtx,
20262 WDI_EventInfoType* pEventData
20263)
20264{
20265 WDI_LowLevelIndType wdiInd;
20266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020267
Jeff Johnson295189b2012-06-20 16:38:30 -070020268 /*-------------------------------------------------------------------------
20269 Extract indication and send it to UMAC
20270 -------------------------------------------------------------------------*/
20271 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020272 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20273
ltimariu034f7d62013-01-24 18:54:33 -080020274 if ( pWDICtx->wdiLowLevelIndCB )
20275 {
20276 /*Notify UMAC*/
20277 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20278 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020279
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020281}/*WDI_ProcessTxPerHitInd*/
20282
Jeff Johnson295189b2012-06-20 16:38:30 -070020283/**
Yue Ma365933a2013-08-14 15:59:08 -070020284 @brief Process Periodic Tx Pattern Fw Indication function
20285
20286 @param pWDICtx: pointer to the WLAN DAL context
20287 pEventData: pointer to the event information structure
20288
20289 @see
20290 @return Result of the function call
20291*/
20292WDI_Status
20293WDI_ProcessPeriodicTxPtrnFwInd
20294(
20295 WDI_ControlBlockType* pWDICtx,
20296 WDI_EventInfoType* pEventData
20297)
20298{
20299 WDI_LowLevelIndType wdiInd;
20300
20301 /*-------------------------------------------------------------------------
20302 Sanity check
20303 -------------------------------------------------------------------------*/
20304 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20305 (NULL == pEventData->pEventData))
20306 {
20307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20308 "%s: Invalid parameters", __func__);
20309 WDI_ASSERT(0);
20310 return WDI_STATUS_E_FAILURE;
20311 }
20312
20313 /*-------------------------------------------------------------------------
20314 Extract indication and send it to UMAC
20315 -------------------------------------------------------------------------*/
20316 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20317 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20318 sizeof(tHalPeriodicTxPtrnFwInd));
20319
20320 if (pWDICtx->wdiLowLevelIndCB)
20321 {
20322 /*Notify UMAC*/
20323 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20324 }
20325
20326 return WDI_STATUS_SUCCESS;
20327}
20328
20329/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 @brief WDI_ProcessFTMCommandReq
20331 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020332
20333 @param pWDICtx: pointer to the WLAN DAL context
20334 pEventData: pointer to the event information structure
20335
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 @see
20337 @return Result of the function call
20338*/
20339WDI_Status
20340WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020341(
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 WDI_ControlBlockType* pWDICtx,
20343 WDI_EventInfoType* pEventData
20344)
20345{
20346 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20347 wpt_uint8 *ftmCommandBuffer = NULL;
20348 wpt_uint16 dataOffset;
20349 wpt_uint16 bufferSize;
20350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 -------------------------------------------------------------------------*/
20353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20354 ( NULL == pEventData->pEventData))
20355
20356 {
20357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 }
20362
20363 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20364
20365 /* Get MSG Buffer */
20366 WDI_GetMessageBuffer(pWDICtx,
20367 WDI_FTM_CMD_REQ,
20368 ftmCommandReq->bodyLength,
20369 &ftmCommandBuffer,
20370 &dataOffset,
20371 &bufferSize);
20372
20373 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20374 ftmCommandReq->FTMCommandBody,
20375 ftmCommandReq->bodyLength);
20376
20377 /* Send MSG */
20378 return WDI_SendMsg(pWDICtx,
20379 ftmCommandBuffer,
20380 bufferSize,
20381 pEventData->pCBfnc,
20382 pEventData->pUserData,
20383 WDI_FTM_CMD_RESP);
20384}
20385
20386/**
20387 @brief WDI_ProcessFTMCommandRsp
20388 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020389
20390 @param pWDICtx: pointer to the WLAN DAL context
20391 pEventData: pointer to the event information structure
20392
Jeff Johnson295189b2012-06-20 16:38:30 -070020393 @see
20394 @return Result of the function call
20395*/
20396WDI_Status
20397WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020398(
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 WDI_ControlBlockType* pWDICtx,
20400 WDI_EventInfoType* pEventData
20401)
20402{
20403 WDI_FTMCommandRspCb ftmCMDRspCb;
20404 tProcessPttRspParams *ftmCMDRspData = NULL;
20405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20406
20407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020409 -------------------------------------------------------------------------*/
20410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20411 ( NULL == pEventData->pEventData))
20412 {
20413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 }
20418
20419 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20420
20421 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20422
Jeff Johnsone7245742012-09-05 17:12:55 -070020423 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20424 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20426
20427 /*Notify UMAC*/
20428 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20429
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020431}
Jeff Johnson295189b2012-06-20 16:38:30 -070020432/**
20433 @brief WDI_ProcessHalDumpCmdReq
20434 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020435
20436 @param pWDICtx: pointer to the WLAN DAL context
20437 pEventData: pointer to the event information structure
20438
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 @see
20440 @return Result of the function call
20441*/
20442WDI_Status
20443WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020444(
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 WDI_ControlBlockType* pWDICtx,
20446 WDI_EventInfoType* pEventData
20447)
20448{
20449 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20450 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20451 wpt_uint16 usDataOffset = 0;
20452 wpt_uint16 usSendSize = 0;
20453 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020455
20456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 -------------------------------------------------------------------------*/
20459 if (( NULL == pEventData ) ||
20460 ( NULL == pEventData->pEventData) ||
20461 ( NULL == pEventData->pCBfnc ))
20462 {
20463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020467 }
20468
20469 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20470 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20471
20472 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020473 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020474 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020475 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020479 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020483
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 /*-----------------------------------------------------------------------
20485 Get message buffer
20486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20489 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020490 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20492 {
20493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20494 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20495 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 }
20499
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 wpalMemoryCopy( pSendBuffer+usDataOffset,
20501 &halDumpCmdReqMsg.dumpCmdReqParams,
20502 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020503
20504 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020505 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020506
20507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20511 wdiHALDumpCmdRspCb, pEventData->pUserData,
20512 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020513}
20514
20515/**
20516 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 Process hal Dump Command Response from HAL, simply route to HDD
20518
20519 @param pWDICtx: pointer to the WLAN DAL context
20520 pEventData: pointer to the event information structure
20521
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 @see
20523 @return Result of the function call
20524*/
20525WDI_Status
20526WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020527(
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 WDI_ControlBlockType* pWDICtx,
20529 WDI_EventInfoType* pEventData
20530)
20531{
20532 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020533 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020534 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20535
20536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 -------------------------------------------------------------------------*/
20539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20540 ( NULL == pEventData->pEventData))
20541 {
20542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 }
20547
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549
20550 /*Initialize the WDI Response structure */
20551 wdiHALDumpCmdRsp.usBufferLen = 0;
20552 wdiHALDumpCmdRsp.pBuffer = NULL;
20553
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020554 wpalMemoryCopy( &halDumpCmdRspParams,
20555 pEventData->pEventData,
20556 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020557
20558 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020559 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020560
20561 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020562 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 {
20564 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020565 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20566 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20567
20568 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20569 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020570 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020572
Jeff Johnson295189b2012-06-20 16:38:30 -070020573 /*Notify UMAC*/
20574 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20575
20576 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20577 {
20578 /* Free the allocated buffer */
20579 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20580 }
20581 return WDI_STATUS_SUCCESS;
20582}
20583
20584/*==========================================================================
20585 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020586
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020589==========================================================================*/
20590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 when it wishes to send up a notification like the ones
20593 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020594
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020596
20597 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 wctsNotifyCBData: the callback data of the user
20600
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020602
20603 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020604*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020605void
Jeff Johnson295189b2012-06-20 16:38:30 -070020606WDI_NotifyMsgCTSCB
20607(
Jeff Johnsone7245742012-09-05 17:12:55 -070020608 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 WCTS_NotifyEventType wctsEvent,
20610 void* wctsNotifyCBData
20611)
20612{
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20615
20616 if (NULL == pWDICtx )
20617 {
20618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020621 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 }
20623
20624 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20625 {
20626 /* callback presumably occurred after close */
20627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020628 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 }
20631
20632 if ( WCTS_EVENT_OPEN == wctsEvent )
20633 {
20634 /*Flag must be set atomically as it is checked from incoming request
20635 functions*/
20636 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638
20639 /*Nothing to do - so try to dequeue any pending request that may have
20640 occurred while we were trying to establish this*/
20641 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 {
20646 /*Flag must be set atomically as it is checked from incoming request
20647 functions*/
20648 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020649 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020650
20651 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 wpalMutexRelease(&pWDICtx->wptMutex);
20654
20655 /*Notify that the Control Channel is closed */
20656 wpalEventSet(&pWDICtx->wctsActionEvent);
20657 }
20658
20659}/*WDI_NotifyMsgCTSCB*/
20660
20661
20662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020663 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 when it wishes to send up a packet received over the
20665 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020666
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020668
20669 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 pMsg: the packet
20671 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020672 wctsRxMsgCBData: the callback data of the user
20673
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020675
20676 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020677*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020678void
20679WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020680(
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 void* pMsg,
20683 wpt_uint32 uLen,
20684 void* wctsRxMsgCBData
20685)
20686{
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 tHalMsgHeader *pHalMsgHeader;
20688 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20691
20692 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 ( uLen < sizeof(tHalMsgHeader)))
20697 {
20698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 }
20703
20704 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20705 {
20706 /* callback presumably occurred after close */
20707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020708 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 }
20711
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 context - so no serialization is necessary here
20714 ! - revisit this assumption */
20715
20716 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20717
20718 if ( uLen != pHalMsgHeader->msgLen )
20719 {
20720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20721 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20723 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 }
20725
20726 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20727
20728 /*The message itself starts after the header*/
20729 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20730 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20731 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20732 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20733
20734
20735 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20736 {
20737 /*Stop the timer as the response was received */
20738 /*!UT - check for potential race conditions between stop and response */
20739 wpalTimerStop(&pWDICtx->wptResponseTimer);
20740 }
20741 /* Check if we receive a response message which is not expected */
20742 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20743 {
20744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20745 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20746 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20749 pWDICtx->wdiExpectedResponse);
20750 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20751 return;
20752 }
20753
20754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20755 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20756
20757 /*Post response event to the state machine*/
20758 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20759
20760}/*WDI_RXMsgCTSCB*/
20761
20762
20763/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020765========================================================================*/
20766
20767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020770
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 @param pWDICtx - pointer to the control block
20772
20773 @return Result of the function call
20774*/
20775WPT_INLINE WDI_Status
20776WDI_CleanCB
20777(
20778 WDI_ControlBlockType* pWDICtx
20779)
20780{
20781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20782
20783 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020785
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20788 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20789
20790 WDI_ResetAssocSessions( pWDICtx );
20791
20792 return WDI_STATUS_SUCCESS;
20793}/*WDI_CleanCB*/
20794
20795
20796/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020797 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020798
Jeff Johnsone7245742012-09-05 17:12:55 -070020799
20800 @param pWDICtx: pointer to the WLAN DAL context
20801 pEventData: pointer to the event information structure
20802
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 @see
20804 @return Result of the function call
20805*/
20806WPT_INLINE WDI_Status
20807WDI_ProcessRequest
20808(
20809 WDI_ControlBlockType* pWDICtx,
20810 WDI_EventInfoType* pEventData
20811)
20812{
20813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20814
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 already checked these pointers*/
20817
20818 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20819 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20822 "Calling request processing function for req %s (%d) %x",
20823 WDI_getReqMsgString(pEventData->wdiRequest),
20824 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20825 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20826 }
20827 else
20828 {
20829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 pEventData->wdiRequest);
20832 return WDI_STATUS_E_NOT_IMPLEMENT;
20833 }
20834}/*WDI_ProcessRequest*/
20835
20836
20837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020840 prefixes it with a send message header
20841
20842 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 wdiReqType: type of the request being sent
20844 uBufferLen: message buffer len
20845 pMsgBuffer: resulting allocated buffer
20846 pusDataOffset: offset in the buffer where the caller
20847 can start copying its message data
20848 puBufferSize: the resulting buffer size (offset+buff
20849 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020850
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 @see
20852 @return Result of the function call
20853*/
20854WDI_Status
20855WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020856(
20857 WDI_ControlBlockType* pWDICtx,
20858 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 wpt_uint8** pMsgBuffer,
20861 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 wpt_uint16* pusBufferSize
20863)
20864{
20865 tHalMsgHeader halMsgHeader;
20866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20867
Jeff Johnsone7245742012-09-05 17:12:55 -070020868 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 again*/
20870
20871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20876 if ( NULL == *pMsgBuffer )
20877 {
20878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20879 "Unable to allocate message buffer for req %s (%d)",
20880 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020881 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 }
20885
20886 /*-------------------------------------------------------------------------
20887 Fill in the message header
20888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20890 /* Fill msgVersion */
20891#ifdef WLAN_FEATURE_11AC
20892 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020893 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020894 else
20895#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020896 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020897
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20899 *pusDataOffset = sizeof(halMsgHeader);
20900 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20901
20902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020903}/*WDI_GetMessageBuffer*/
20904
20905
20906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 the CB
20910
20911 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020913
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 usSendSize size of the buffer to be sent
20915 pRspCb: response callback - save in the WDI
20916 CB
20917 pUserData: user data associated with the
20918 callback
20919 wdiExpectedResponse: the code of the response that is
20920 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020921
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 @see
20923 @return Result of the function call
20924*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020925WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020926WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020927(
20928 WDI_ControlBlockType* pWDICtx,
20929 wpt_uint8* pSendBuffer,
20930 wpt_uint32 usSendSize,
20931 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 void* pUserData,
20933 WDI_ResponseEnumType wdiExpectedResponse
20934)
20935{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020936 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020937 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20939
20940 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 ------------------------------------------------------------------------*/
20943 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020944 pWDICtx->pfncRspCB = pRspCb;
20945 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020946
20947 /*-----------------------------------------------------------------------
20948 Call the CTS to send this message over - free message afterwards
20949 - notify transport failure
20950 Note: CTS is reponsible for freeing the message buffer.
20951 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020952 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20953 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20954 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 "Failed to send message over the bus - catastrophic failure");
20958
Jeff Johnsond13512a2012-07-17 11:42:19 -070020959 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020961 else
20962 {
20963 /* even when message was placed in CTS deferred Q, we will treat it
20964 success but log this info
20965 */
20966 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20967 {
20968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20969 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20970 "response %s (%d)",
20971 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20972 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020973 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020974 }
20975 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020976
Jeff Johnsond13512a2012-07-17 11:42:19 -070020977 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020978 if ( NULL != pWDICtx->wdiReqStatusCB )
20979 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020980 /*Inform originator whether request went through or not*/
20981 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20982 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 pWDICtx->wdiReqStatusCB = NULL;
20984 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020985 callback(wdiStatus, callbackContext);
20986
20987 /*For WDI requests which have registered a request callback,
20988 inform the WDA caller of the same via setting the return value
20989 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20990 end up repeating the functonality in the req callback for the
20991 WDI_STATUS_E_FAILURE case*/
20992 if (wdiStatus == WDI_STATUS_E_FAILURE)
20993 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 }
20995
Jeff Johnsond13512a2012-07-17 11:42:19 -070020996 if ( wdiStatus == WDI_STATUS_SUCCESS )
20997 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 /*Start timer for the expected response */
20999 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021000
21001 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021002 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021003 }
21004 else
21005 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021006 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021007 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21008 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021009
Jeff Johnsond13512a2012-07-17 11:42:19 -070021010 return wdiStatus;
21011
Jeff Johnson295189b2012-06-20 16:38:30 -070021012}/*WDI_SendMsg*/
21013
21014
21015
21016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 the bus using the control transport and saves some info
21019 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021020
21021 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 pSendBuffer: buffer to be sent
21023 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021024
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 @see
21026 @return Result of the function call
21027*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021029WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021030(
21031 WDI_ControlBlockType* pWDICtx,
21032 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 wpt_uint32 usSendSize
21034)
21035{
21036 wpt_uint32 uStatus ;
21037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21038
21039 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 Note: CTS is reponsible for freeing the message buffer.
21042 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021043 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 (void*)pSendBuffer, usSendSize );
21045
21046 /*Inform Upper MAC about the outcome of the request*/
21047 if ( NULL != pWDICtx->wdiReqStatusCB )
21048 {
21049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21050 "Send indication status : %d", uStatus);
21051
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021052 /* even if CTS placed indication into its deferred Q, we treat it
21053 * as success and let CTS drain its queue as per smd interrupt to CTS
21054 */
21055 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 -070021056 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 }
21058
21059 /*If sending of the message failed - it is considered catastrophic and
21060 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021061 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21062 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21063
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 {
21065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021067
21068 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21069 return WDI_STATUS_E_FAILURE;
21070 }
21071
Jeff Johnsone7245742012-09-05 17:12:55 -070021072 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021073}/*WDI_SendIndication*/
21074
21075
21076/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 @brief WDI_DetectedDeviceError - called internally by DAL when
21078 it has detected a failure in the device
21079
21080 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 usErrorCode: error code detected by WDI or received
21082 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021083
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021085 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021086*/
21087void
21088WDI_DetectedDeviceError
21089(
21090 WDI_ControlBlockType* pWDICtx,
21091 wpt_uint16 usErrorCode
21092)
21093{
21094 WDI_LowLevelIndType wdiInd;
21095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21096
21097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21098 "Device Error detected code: %d - transitioning to stopped state",
21099 usErrorCode);
21100
21101 wpalMutexAcquire(&pWDICtx->wptMutex);
21102
21103 WDI_STATableStop(pWDICtx);
21104
21105 WDI_ResetAssocSessions(pWDICtx);
21106
21107 /*Set the expected state transition to stopped - because the device
21108 experienced a failure*/
21109 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21110
21111 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021113
Jeff Johnsone7245742012-09-05 17:12:55 -070021114 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021115
21116 /*TO DO: - there should be an attempt to reset the device here*/
21117
21118 wpalMutexRelease(&pWDICtx->wptMutex);
21119
21120 /*------------------------------------------------------------------------
21121 Notify UMAC if a handler is registered
21122 ------------------------------------------------------------------------*/
21123 if (pWDICtx->wdiLowLevelIndCB)
21124 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21126 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021127
21128 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21129 }
21130}/*WDI_DetectedDeviceError*/
21131
21132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 we started on send message has expire - this should
21135 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 reply - trigger catastrophic failure
21137 @param
21138
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021140
21141 @see
21142 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021144void
Jeff Johnson295189b2012-06-20 16:38:30 -070021145WDI_ResponseTimerCB
21146(
21147 void *pUserData
21148)
21149{
21150 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21152
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021153 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021158 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021159 }
21160
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021161 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021162 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021163
21164 /* If response timer is running at this time that means this timer
21165 * event is not for the last request but rather last-to-last request and
21166 * this timer event has come after we recevied respone for last-to-last
21167 * message
21168 */
21169 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21170 {
21171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21172 "WDI_ResponseTimerCB: timer in running state on timer event, "
21173 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21174 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21175 return;
21176 }
21177
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021178 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 {
21180
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021183 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021185 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21186 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021187
21188 /* WDI timeout means Riva is not responding or SMD communication to Riva
21189 * is not happening. The only possible way to recover from this error
21190 * is to initiate SSR from APPS.
21191 * There is also an option to re-enable wifi, which will eventually
21192 * trigger SSR
21193 */
21194 if (gWDICb.bEnableSSR == false)
21195 {
21196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21197 "SSR is not enabled on WDI timeout");
21198 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21199 return;
21200 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021201#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021202 wpalWcnssResetIntr();
21203 /* if this timer fires, it means Riva did not receive the FIQ */
21204 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021205#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021206 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21207 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021208#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021209 }
21210 else
21211 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021213 "Timeout occurred but not waiting for any response %d "
21214 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21215 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21216 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 }
21218
21219 return;
21220
21221}/*WDI_ResponseTimerCB*/
21222
21223
21224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021225 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021226
Jeff Johnsone7245742012-09-05 17:12:55 -070021227
21228 @param pWDICtx: pointer to the WLAN DAL context
21229 pEventData: pointer to the event information structure
21230
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 @see
21232 @return Result of the function call
21233*/
21234WPT_INLINE WDI_Status
21235WDI_ProcessResponse
21236(
21237 WDI_ControlBlockType* pWDICtx,
21238 WDI_EventInfoType* pEventData
21239)
21240{
21241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21242
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 already checked these pointers
21245 ! - revisit this assumption */
21246 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21247 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021248 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 WDI_getRespMsgString(pEventData->wdiResponse),
21252 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21253 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21254 }
21255 else
21256 {
21257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021258 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021259 pEventData->wdiResponse);
21260 return WDI_STATUS_E_NOT_IMPLEMENT;
21261 }
21262}/*WDI_ProcessResponse*/
21263
21264
21265/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021267=========================================================================*/
21268
21269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021270 @brief Utility function used by the DAL Core to help queue a
21271 request that cannot be processed right away.
21272 @param
21273
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 pWDICtx: - pointer to the WDI control block
21275 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021276 queued
21277
21278 @see
21279 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021280*/
21281WDI_Status
21282WDI_QueuePendingReq
21283(
21284 WDI_ControlBlockType* pWDICtx,
21285 WDI_EventInfoType* pEventData
21286)
21287{
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21292
21293 if ( NULL == pEventDataQueue )
21294 {
21295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 WDI_ASSERT(0);
21298 return WDI_STATUS_MEM_FAILURE;
21299 }
21300
21301 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21302 pEventDataQueue->pUserData = pEventData->pUserData;
21303 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21304 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021306
21307 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21308 {
21309 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021310
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 if ( NULL == pEventInfo )
21312 {
21313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 WDI_ASSERT(0);
21316 wpalMemoryFree(pEventDataQueue);
21317 return WDI_STATUS_MEM_FAILURE;
21318 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021319
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21321
21322 }
21323 pEventDataQueue->pEventData = pEventInfo;
21324
21325 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021326 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021327
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021329
21330 return WDI_STATUS_SUCCESS;
21331}/*WDI_QueuePendingReq*/
21332
21333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021335 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 @param
21337
21338 pMsg - pointer to the message
21339
21340 @see
21341 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021342*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021343void
Jeff Johnson295189b2012-06-20 16:38:30 -070021344WDI_PALCtrlMsgCB
21345(
21346 wpt_msg *pMsg
21347)
21348{
21349 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 WDI_ControlBlockType* pWDICtx = NULL;
21351 WDI_Status wdiStatus;
21352 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021353 void* pUserData;
21354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21355
21356 if (( NULL == pMsg )||
21357 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21358 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21359 {
21360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 }
21365
21366 /*Transition back to the state that we had before serialization
21367 - serialization transitions us to BUSY to stop any incomming requests
21368 ! TO DO L: possible race condition here if a request comes in between the
21369 state transition and the post function*/
21370
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021372
21373 /*-----------------------------------------------------------------------
21374 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021375 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 -----------------------------------------------------------------------*/
21377 switch ( pEventData->wdiRequest )
21378 {
21379
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21382 break;
21383
Jeff Johnson295189b2012-06-20 16:38:30 -070021384 case WDI_NV_DOWNLOAD_REQ:
21385 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21386 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21387 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21388 {
21389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021390 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021391 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21392 }
21393 else
21394 {
21395 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21396 }
21397
21398 break;
21399
21400 default:
21401 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21402 break;
21403 }/*switch ( pEventData->wdiRequest )*/
21404
21405 if ( WDI_STATUS_SUCCESS != wdiStatus )
21406 {
21407 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21408
21409 if ( NULL != pfnReqStatusCB )
21410 {
21411 /*Fail the request*/
21412 pfnReqStatusCB( wdiStatus, pUserData);
21413 }
21414 }
21415
21416 /* Free data - that was allocated when queueing*/
21417 if( pEventData != NULL )
21418 {
21419 if( pEventData->pEventData != NULL )
21420 {
21421 wpalMemoryFree(pEventData->pEventData);
21422 }
21423 wpalMemoryFree(pEventData);
21424 }
21425
21426 if( pMsg != NULL )
21427 {
21428 wpalMemoryFree(pMsg);
21429 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021430
Jeff Johnson295189b2012-06-20 16:38:30 -070021431}/*WDI_PALCtrlMsgCB*/
21432
21433/**
21434 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 and schedule for execution a pending request
21436 @param
21437
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 pWDICtx: - pointer to the WDI control block
21439 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 queued
21441
21442 @see
21443 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021444*/
21445WDI_Status
21446WDI_DequeuePendingReq
21447(
21448 WDI_ControlBlockType* pWDICtx
21449)
21450{
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21455
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021457
21458 if ( NULL == pNode )
21459 {
21460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 return WDI_STATUS_SUCCESS;
21463 }
21464
21465 /*The node actually points to the 1st element inside the Event Data struct -
21466 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021468
21469 /*Serialize processing in the control thread
21470 !TO DO: - check to see if these are all the messages params that need
21471 to be filled in*/
21472 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21473
21474 if ( NULL == palMsg )
21475 {
21476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021477 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 palMsg->callback = WDI_PALCtrlMsgCB;
21483 palMsg->ptr = pEventData;
21484
21485 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 palMsg->val = pWDICtx->uGlobalState;
21487
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 /*Transition back to BUSY as we need to handle a queued request*/
21489 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021490
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21492
21493 return WDI_STATUS_PENDING;
21494}/*WDI_DequeuePendingReq*/
21495
21496
21497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 away.- The assoc requests will be queued by BSSID
21501 @param
21502
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 pWDICtx: - pointer to the WDI control block
21504 pEventData: pointer to the evnt info that needs to be queued
21505 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021506
21507 @see
21508 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021509*/
21510WDI_Status
21511WDI_QueueNewAssocRequest
21512(
21513 WDI_ControlBlockType* pWDICtx,
21514 WDI_EventInfoType* pEventData,
21515 wpt_macAddr macBSSID
21516)
21517{
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 wpt_uint8 i;
21519 WDI_BSSSessionType* pSession = NULL;
21520 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 void* pEventInfo;
21523 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021525
Jeff Johnsone7245742012-09-05 17:12:55 -070021526
21527 /*------------------------------------------------------------------------
21528 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 ------------------------------------------------------------------------*/
21530 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21531 {
21532 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21533 {
21534 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021535 pSession = &pWDICtx->aBSSSessions[i];
21536 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 }
21538 }
21539
21540 if ( i >= WDI_MAX_BSS_SESSIONS )
21541 {
21542 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021545
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 /*------------------------------------------------------------------------
21547 Fill in the BSSID for this session and set the usage flag
21548 ------------------------------------------------------------------------*/
21549 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551
21552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 ------------------------------------------------------------------------*/
21555 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21556 if ( NULL == pEventDataQueue )
21557 {
21558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021559 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 WDI_ASSERT(0);
21561 return WDI_STATUS_MEM_FAILURE;
21562 }
21563
21564 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21565 if ( NULL == pSessionIdElement )
21566 {
21567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021568 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 WDI_ASSERT(0);
21570 wpalMemoryFree(pEventDataQueue);
21571 return WDI_STATUS_MEM_FAILURE;
21572 }
21573
21574 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21575 if ( NULL == pEventInfo )
21576 {
21577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021578 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 WDI_ASSERT(0);
21580 wpalMemoryFree(pSessionIdElement);
21581 wpalMemoryFree(pEventDataQueue);
21582 return WDI_STATUS_MEM_FAILURE;
21583 }
21584
21585 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21586 pEventDataQueue->pUserData = pEventData->pUserData;
21587 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21588 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021590
21591 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21592 pEventDataQueue->pEventData = pEventInfo;
21593
21594 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021596
21597 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021599
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021601
21602 /*We need to maintain a separate list that keeps track of the order in which
21603 the new assoc requests are being queued such that we can start processing
21604 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021605 pSessionIdElement->ucIndex = i;
21606 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021607
21608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21609 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021611
21612 /*Return pending as this is what the status of the request is since it has
21613 been queued*/
21614 return WDI_STATUS_PENDING;
21615}/*WDI_QueueNewAssocRequest*/
21616
21617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 away.- The assoc requests will be queued by BSSID
21621 @param
21622
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 pWDICtx: - pointer to the WDI control block
21624 pSession: - session in which to queue
21625 pEventData: pointer to the event info that needs to be
21626 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021627
21628 @see
21629 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021630*/
21631WDI_Status
21632WDI_QueueAssocRequest
21633(
21634 WDI_ControlBlockType* pWDICtx,
21635 WDI_BSSSessionType* pSession,
21636 WDI_EventInfoType* pEventData
21637)
21638{
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021643
21644 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021645 Sanity check
21646 ------------------------------------------------------------------------*/
21647 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21648 {
21649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021651
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 }
21654
21655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 ------------------------------------------------------------------------*/
21658 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21659 if ( NULL == pEventDataQueue )
21660 {
21661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021662 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 WDI_ASSERT(0);
21664 return WDI_STATUS_MEM_FAILURE;
21665 }
21666
21667 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21668 if ( NULL == pEventInfo )
21669 {
21670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21671 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021672 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 WDI_ASSERT(0);
21674 wpalMemoryFree(pEventDataQueue);
21675 return WDI_STATUS_MEM_FAILURE;
21676 }
21677
21678 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21679 pEventDataQueue->pUserData = pEventData->pUserData;
21680 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21681 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 pEventDataQueue->pEventData = pEventInfo;
21684
21685 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21686
21687 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689
21690 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021692
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021694
21695 /*The result of this operation is pending because the request has been
21696 queued and it will be processed at a later moment in time */
21697 return WDI_STATUS_PENDING;
21698}/*WDI_QueueAssocRequest*/
21699
21700/**
21701 @brief Utility function used by the DAL Core to help dequeue
21702 an association request that was pending
21703 The request will be queued up in front of the main
21704 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 @param
21706
Jeff Johnson295189b2012-06-20 16:38:30 -070021707 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021708
21709
21710 @see
21711 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021712*/
21713WDI_Status
21714WDI_DequeueAssocRequest
21715(
21716 WDI_ControlBlockType* pWDICtx
21717)
21718{
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 wpt_list_node* pNode = NULL;
21720 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 WDI_BSSSessionType* pSession;
21722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021723
21724 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 Sanity check
21726 ------------------------------------------------------------------------*/
21727 if ( NULL == pWDICtx )
21728 {
21729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021731
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 }
21734
21735 /*------------------------------------------------------------------------
21736 An association has been completed => a new association can occur
21737 Check to see if there are any pending associations ->
21738 If so , transfer all the pending requests into the busy queue for
21739 processing
21740 These requests have arrived prior to the requests in the busy queue
21741 (bc they needed to be processed in order to be placed in this queue)
21742 => they will be placed at the front of the busy queue
21743 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021745
21746 if ( NULL == pNode )
21747 {
21748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 return WDI_STATUS_SUCCESS;
21751 }
21752
21753 /*The node actually points to the 1st element inside the Session Id struct -
21754 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021756
21757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21758 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21759
21760 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21761 {
21762 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021763
Jeff Johnson295189b2012-06-20 16:38:30 -070021764 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021765 the front of the main waiting queue for subsequent execution*/
21766 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 while ( NULL != pNode )
21768 {
21769 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21771 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021773 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 }
21775 else
21776 {
21777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021778 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 WPAL_ASSERT(0);
21780 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021783
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21785 wpalMemoryFree(pSessionIdElement);
21786 return WDI_STATUS_SUCCESS;
21787}/*WDI_DequeueAssocRequest*/
21788
21789/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 pending requests - all req cb will be called with
21792 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021793 @param
21794
Jeff Johnson295189b2012-06-20 16:38:30 -070021795 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021796
21797 @see
21798 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021799*/
21800WDI_Status
21801WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021802(
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 WDI_ControlBlockType* pWDICtx
21804)
21805{
Jeff Johnsone7245742012-09-05 17:12:55 -070021806 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021807 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021808 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 void* pUserData;
21810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21811
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021813
21814 /*------------------------------------------------------------------------
21815 Go through all the requests and fail them - this will only be called
21816 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021817 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 ------------------------------------------------------------------------*/
21819 while( pNode )
21820 {
21821 /*The node actually points to the 1st element inside the Event Data struct -
21822 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021823 pEventDataQueue = (WDI_EventInfoType*)pNode;
21824
Jeff Johnson295189b2012-06-20 16:38:30 -070021825 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21826 if ( NULL != pfnReqStatusCB )
21827 {
21828 /*Fail the request*/
21829 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21830 }
21831 /* Free data - that was allocated when queueing */
21832 if ( pEventDataQueue->pEventData != NULL )
21833 {
21834 wpalMemoryFree(pEventDataQueue->pEventData);
21835 }
21836 wpalMemoryFree(pEventDataQueue);
21837
21838 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21839 {
21840 break;
21841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021842 }
21843
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 return WDI_STATUS_SUCCESS;
21845}/*WDI_ClearPendingRequests*/
21846
21847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 @brief Helper routine used to init the BSS Sessions in the WDI control block
21849
21850
21851 @param pWDICtx: pointer to the WLAN DAL context
21852
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 @see
21854*/
21855void
21856WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021857(
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 WDI_ControlBlockType* pWDICtx
21859)
21860{
Jeff Johnsone7245742012-09-05 17:12:55 -070021861 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21863
21864 /*-------------------------------------------------------------------------
21865 No Sanity check
21866 -------------------------------------------------------------------------*/
21867 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21868 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021869 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021870 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21871 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21872 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21873 }
21874}/*WDI_ResetAssocSessions*/
21875
21876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 @brief Helper routine used to find a session based on the BSSID
21878
21879
21880 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021882 pSession: pointer to the session (if found)
21883
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021885 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021886*/
21887wpt_uint8
21888WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021889(
Jeff Johnson295189b2012-06-20 16:38:30 -070021890 WDI_ControlBlockType* pWDICtx,
21891 wpt_macAddr macBSSID,
21892 WDI_BSSSessionType** ppSession
21893)
21894{
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21897
21898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021900 -------------------------------------------------------------------------*/
21901 if ( NULL == ppSession )
21902 {
21903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021904 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 }
21907
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 /*------------------------------------------------------------------------
21911 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 ------------------------------------------------------------------------*/
21913 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21914 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021915 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21916 (eWLAN_PAL_TRUE ==
21917 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21918 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 {
21920 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021922 return i;
21923 }
21924 }
21925
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021927}/*WDI_FindAssocSession*/
21928
21929/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 @brief Helper routine used to find a session based on the BSSID
21931
21932
21933 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021934 ucBSSIdx: BSS Index of the session
21935 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021936
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021938 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021939*/
21940wpt_uint8
21941WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021942(
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 WDI_ControlBlockType* pWDICtx,
21944 wpt_uint16 ucBSSIdx,
21945 WDI_BSSSessionType** ppSession
21946)
21947{
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21950
21951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 -------------------------------------------------------------------------*/
21954 if ( NULL == ppSession )
21955 {
21956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021957 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 }
21960
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021962
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 /*------------------------------------------------------------------------
21964 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 ------------------------------------------------------------------------*/
21966 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21967 {
21968 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21969 {
21970 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 return i;
21973 }
21974 }
21975
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977}/*WDI_FindAssocSessionByBSSIdx*/
21978
21979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 @brief Helper routine used to find a session based on the BSSID
21981
21982
21983 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 ucBSSIdx: BSS Index of the session
21985 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021986
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021989*/
21990wpt_uint8
21991WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021992(
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 WDI_ControlBlockType* pWDICtx,
21994 wpt_uint16 usIdx,
21995 WDI_BSSSessionType** ppSession
21996)
21997{
21998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21999
22000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 -------------------------------------------------------------------------*/
22003 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22004 {
22005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022006 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 }
22009
22010 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022012
22013 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022014
Jeff Johnson295189b2012-06-20 16:38:30 -070022015}/*WDI_FindAssocSessionByBSSIdx*/
22016
22017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022018 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022019 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022020
22021
22022 @param pWDICtx: pointer to the WLAN DAL context
22023 pSession: pointer to the session (if found)
22024
Jeff Johnson295189b2012-06-20 16:38:30 -070022025 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022027*/
22028wpt_uint8
22029WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022030(
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 WDI_ControlBlockType* pWDICtx,
22032 WDI_BSSSessionType** ppSession
22033)
22034{
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 -------------------------------------------------------------------------*/
22040 if ( NULL == ppSession )
22041 {
22042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022043 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 }
22046
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022048
Jeff Johnsone7245742012-09-05 17:12:55 -070022049 /*------------------------------------------------------------------------
22050 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 ------------------------------------------------------------------------*/
22052 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22053 {
22054 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22055 {
22056 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 return i;
22059 }
22060 }
22061
Jeff Johnsone7245742012-09-05 17:12:55 -070022062 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022063}/*WDI_FindEmptySession*/
22064
22065
22066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022069
22070
22071 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022072 macBSSID: pointer to BSSID. If NULL, get all the session.
22073 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22074 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22075 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 @see
22077 @return Number of sessions in use
22078*/
22079wpt_uint8
22080WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022081(
Hoonki Lee26599972013-04-24 01:21:58 -070022082 WDI_ControlBlockType* pWDICtx,
22083 wpt_macAddr macBSSID,
22084 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022085)
22086{
Jeff Johnsone7245742012-09-05 17:12:55 -070022087 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022089
22090 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022091 Count all sessions in use
22092 ------------------------------------------------------------------------*/
22093 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22094 {
Hoonki Lee26599972013-04-24 01:21:58 -070022095 if ( macBSSID && skipBSSID &&
22096 (eWLAN_PAL_TRUE ==
22097 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22098 WDI_MAC_ADDR_LEN)))
22099 {
22100 continue;
22101 }
22102 else if ( pWDICtx->aBSSSessions[i].bInUse )
22103 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022105 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 }
22107
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022109}/*WDI_GetActiveSessionsCount*/
22110
22111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022114
22115
22116 @param pWDICtx: pointer to the WLAN DAL context
22117 pSession: pointer to the session (if found)
22118
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022121*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022122void
Jeff Johnson295189b2012-06-20 16:38:30 -070022123WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022124(
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 WDI_ControlBlockType* pWDICtx,
22126 WDI_BSSSessionType* ppSession
22127)
22128{
22129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 -------------------------------------------------------------------------*/
22132 if ( NULL == ppSession )
22133 {
22134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022135 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 }
22138
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 /*------------------------------------------------------------------------
22140 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 ------------------------------------------------------------------------*/
22142 wpal_list_destroy(&ppSession->wptPendingQueue);
22143 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22145 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022146 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22147 wpal_list_init(&ppSession->wptPendingQueue);
22148
22149}/*WDI_DeleteSession*/
22150
22151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022152 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 @param
22155
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 WDI_AddStaParams: - pointer to the WDI Add STA params
22157 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022158
22159 @see
22160 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022161*/
22162void
22163WDI_AddBcastSTAtoSTATable
22164(
22165 WDI_ControlBlockType* pWDICtx,
22166 WDI_AddStaParams * staParams,
22167 wpt_uint16 usBcastStaIdx
22168)
22169{
22170 WDI_AddStaParams wdiAddSTAParam = {0};
22171 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22173
22174 /*---------------------------------------------------------------------
22175 Sanity check
22176 ---------------------------------------------------------------------*/
22177 if ( NULL == staParams )
22178 {
22179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022181
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 }
22184
22185 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22186 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22187 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22188 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22189 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22190 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22191 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22192 WDI_MAC_ADDR_LEN );
22193 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22194 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22195 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22196 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22197 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22198 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22199 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022200
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22202}
22203
22204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 @brief NV blob will be divided into fragments of size 4kb and
22206 Sent to HAL
22207
22208 @param pWDICtx: pointer to the WLAN DAL context
22209 pEventData: pointer to the event information structure
22210
Jeff Johnson295189b2012-06-20 16:38:30 -070022211 @see
22212 @return Result of the function call
22213 */
22214
22215WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022216(
Jeff Johnson295189b2012-06-20 16:38:30 -070022217 WDI_ControlBlockType* pWDICtx,
22218 WDI_EventInfoType* pEventData
22219)
22220{
22221
22222 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22223 wpt_uint8* pSendBuffer = NULL;
22224 wpt_uint16 usDataOffset = 0;
22225 wpt_uint16 usSendSize = 0;
22226 wpt_uint16 usCurrentFragmentSize =0;
22227 wpt_uint8* pSrcBuffer = NULL;
22228 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22229 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22230
22231 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22232 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22233 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22234
Jeff Johnsone7245742012-09-05 17:12:55 -070022235 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22237
22238 /* Update the current Fragment Number */
22239 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22240
22241 /*Update the HAL REQ structure */
22242 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22243 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22244 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22245
22246 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 image will be sent to HAL*/
22249
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22256 usCurrentFragmentSize = FRAGMENT_SIZE;
22257
22258 /*Update the HAL REQ structure */
22259 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22260 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22261
22262 }
22263 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 usCurrentFragmentSize = FRAGMENT_SIZE;
22266
22267 /*Update the HAL REQ structure */
22268 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22269 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22270 }
22271
22272 /*-----------------------------------------------------------------------
22273 Get message buffer
22274 -----------------------------------------------------------------------*/
22275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22276 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22277 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22280 {
22281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22282 "Unable to get send buffer in NV Download req %x %x ",
22283 pEventData, pwdiNvDownloadReqParams);
22284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 }
22287
22288 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022289 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22291
22292 /* Appending the NV image fragment */
22293 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22294 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22295 usCurrentFragmentSize);
22296
22297 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022298 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022299
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22301 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022302 WDI_NV_DOWNLOAD_RESP);
22303
22304}
Jeff Johnsone7245742012-09-05 17:12:55 -070022305/*============================================================================
22306 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 ============================================================================*/
22308/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 @brief Helper routine used to find a session based on the BSSID
22310 @param pContext: pointer to the WLAN DAL context
22311 @param pDPContext: pointer to the Datapath context
22312
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022315*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022316WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022317WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22318{
22319 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22320
22321 pCB->pDPContext = pDPContext;
22322 return;
22323}
22324
22325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022326 @brief Helper routine used to find a session based on the BSSID
22327
22328
22329 @param pContext: pointer to the WLAN DAL context
22330
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 @see
22332 @return pointer to Datapath context
22333*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022334WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022335WDI_DS_GetDatapathContext (void *pContext)
22336{
22337 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22338 return pCB->pDPContext;
22339}
22340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 @brief Helper routine used to find a session based on the BSSID
22342
22343
22344 @param pContext: pointer to the WLAN DAL context
22345 @param pDTDriverContext: pointer to the Transport Driver context
22346
Jeff Johnson295189b2012-06-20 16:38:30 -070022347 @see
22348 @return void
22349*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022350WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022351WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22352{
22353 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22354
22355 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022357}
22358
22359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 @brief Helper routine used to find a session based on the BSSID
22361
22362
22363 @param pWDICtx: pointer to the WLAN DAL context
22364
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022366 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022367*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022368WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022369WDT_GetTransportDriverContext (void *pContext)
22370{
22371 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022373}
22374
Jeff Johnsone7245742012-09-05 17:12:55 -070022375/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 Helper inline converters
22377 ============================================================================*/
22378/*Convert WDI driver type into HAL driver type*/
22379WPT_STATIC WPT_INLINE WDI_Status
22380WDI_HAL_2_WDI_STATUS
22381(
22382 eHalStatus halStatus
22383)
22384{
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 the chances of getting inlined*/
22387 switch( halStatus )
22388 {
22389 case eHAL_STATUS_SUCCESS:
22390 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22391 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22392 return WDI_STATUS_SUCCESS;
22393 case eHAL_STATUS_FAILURE:
22394 return WDI_STATUS_E_FAILURE;
22395 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022396 return WDI_STATUS_MEM_FAILURE;
22397 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022399 default:
22400 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22401 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022402
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404}/*WDI_HAL_2_WDI_STATUS*/
22405
22406/*Convert WDI request type into HAL request type*/
22407WPT_STATIC WPT_INLINE tHalHostMsgType
22408WDI_2_HAL_REQ_TYPE
22409(
22410 WDI_RequestEnumType wdiReqType
22411)
22412{
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 the chances of getting inlined*/
22415 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022416 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 return WLAN_HAL_RMV_STAKEY_REQ;
22452 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022459 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 case WDI_DEL_BA_REQ:
22461 return WLAN_HAL_DEL_BA_REQ;
22462#ifdef FEATURE_WLAN_CCX
22463 case WDI_TSM_STATS_REQ:
22464 return WLAN_HAL_TSM_STATS_REQ;
22465#endif
22466 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 case WDI_ADD_BA_SESSION_REQ:
22477 return WLAN_HAL_ADD_BA_SESSION_REQ;
22478 case WDI_TRIGGER_BA_REQ:
22479 return WLAN_HAL_TRIGGER_BA_REQ;
22480 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22485 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22486 case WDI_SET_MAX_TX_POWER_REQ:
22487 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022488 case WDI_SET_TX_POWER_REQ:
22489 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22491 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022492#ifdef FEATURE_WLAN_TDLS
22493 case WDI_TDLS_LINK_ESTABLISH_REQ:
22494 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22495#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022497 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 case WDI_REM_BEACON_FILTER_REQ:
22517 return WLAN_HAL_REM_BCN_FILTER_REQ;
22518 case WDI_SET_RSSI_THRESHOLDS_REQ:
22519 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22520 case WDI_HOST_OFFLOAD_REQ:
22521 return WLAN_HAL_HOST_OFFLOAD_REQ;
22522 case WDI_WOWL_ADD_BC_PTRN_REQ:
22523 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22524 case WDI_WOWL_DEL_BC_PTRN_REQ:
22525 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22526 case WDI_WOWL_ENTER_REQ:
22527 return WLAN_HAL_ENTER_WOWL_REQ;
22528 case WDI_WOWL_EXIT_REQ:
22529 return WLAN_HAL_EXIT_WOWL_REQ;
22530 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22531 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22532 case WDI_NV_DOWNLOAD_REQ:
22533 return WLAN_HAL_DOWNLOAD_NV_REQ;
22534 case WDI_FLUSH_AC_REQ:
22535 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22536 case WDI_BTAMP_EVENT_REQ:
22537 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22538#ifdef WLAN_FEATURE_VOWIFI_11R
22539 case WDI_AGGR_ADD_TS_REQ:
22540 return WLAN_HAL_AGGR_ADD_TS_REQ;
22541#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 case WDI_FTM_CMD_REQ:
22543 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 case WDI_ADD_STA_SELF_REQ:
22545 return WLAN_HAL_ADD_STA_SELF_REQ;
22546 case WDI_DEL_STA_SELF_REQ:
22547 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022548#ifdef FEATURE_OEM_DATA_SUPPORT
22549 case WDI_START_OEM_DATA_REQ:
22550 return WLAN_HAL_START_OEM_DATA_REQ;
22551#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 case WDI_HOST_RESUME_REQ:
22553 return WLAN_HAL_HOST_RESUME_REQ;
22554 case WDI_HOST_SUSPEND_IND:
22555 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022556 case WDI_TRAFFIC_STATS_IND:
22557 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022558#ifdef WLAN_FEATURE_11W
22559 case WDI_EXCLUDE_UNENCRYPTED_IND:
22560 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22561#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022562 case WDI_KEEP_ALIVE_REQ:
22563 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022564#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022565 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22566 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022567#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022568#ifdef FEATURE_WLAN_SCAN_PNO
22569 case WDI_SET_PREF_NETWORK_REQ:
22570 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22571 case WDI_SET_RSSI_FILTER_REQ:
22572 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22573 case WDI_UPDATE_SCAN_PARAMS_REQ:
22574 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22575#endif // FEATURE_WLAN_SCAN_PNO
22576 case WDI_SET_TX_PER_TRACKING_REQ:
22577 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22578#ifdef WLAN_FEATURE_PACKET_FILTERING
22579 case WDI_8023_MULTICAST_LIST_REQ:
22580 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22581 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022583 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22584 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22585 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22586 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22587#endif // WLAN_FEATURE_PACKET_FILTERING
22588 case WDI_HAL_DUMP_CMD_REQ:
22589 return WLAN_HAL_DUMP_COMMAND_REQ;
22590#ifdef WLAN_FEATURE_GTK_OFFLOAD
22591 case WDI_GTK_OFFLOAD_REQ:
22592 return WLAN_HAL_GTK_OFFLOAD_REQ;
22593 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22594 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22595#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22596
22597 case WDI_INIT_SCAN_CON_REQ:
22598 return WLAN_HAL_INIT_SCAN_CON_REQ;
22599 case WDI_SET_POWER_PARAMS_REQ:
22600 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22601 case WDI_SET_TM_LEVEL_REQ:
22602 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22603 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22604 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022605#ifdef WLAN_FEATURE_11AC
22606 case WDI_UPDATE_VHT_OP_MODE_REQ:
22607 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22608#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022609 case WDI_GET_ROAM_RSSI_REQ:
22610 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022611 case WDI_DHCP_START_IND:
22612 return WLAN_HAL_DHCP_START_IND;
22613 case WDI_DHCP_STOP_IND:
22614 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022615#ifdef FEATURE_WLAN_LPHB
22616 case WDI_LPHB_CFG_REQ:
22617 return WLAN_HAL_LPHB_CFG_REQ;
22618#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022619 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22620 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22621 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22622 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22623
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022627
Jeff Johnson295189b2012-06-20 16:38:30 -070022628}/*WDI_2_HAL_REQ_TYPE*/
22629
22630/*Convert WDI response type into HAL response type*/
22631WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22632HAL_2_WDI_RSP_TYPE
22633(
22634 tHalHostMsgType halMsg
22635)
22636{
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022638 the chances of getting inlined*/
22639 switch( halMsg )
22640 {
22641 case WLAN_HAL_START_RSP:
22642 return WDI_START_RESP;
22643 case WLAN_HAL_STOP_RSP:
22644 return WDI_STOP_RESP;
22645 case WLAN_HAL_INIT_SCAN_RSP:
22646 return WDI_INIT_SCAN_RESP;
22647 case WLAN_HAL_START_SCAN_RSP:
22648 return WDI_START_SCAN_RESP;
22649 case WLAN_HAL_END_SCAN_RSP:
22650 return WDI_END_SCAN_RESP;
22651 case WLAN_HAL_FINISH_SCAN_RSP:
22652 return WDI_FINISH_SCAN_RESP;
22653 case WLAN_HAL_CONFIG_STA_RSP:
22654 return WDI_CONFIG_STA_RESP;
22655 case WLAN_HAL_DELETE_STA_RSP:
22656 return WDI_DEL_STA_RESP;
22657 case WLAN_HAL_CONFIG_BSS_RSP:
22658 return WDI_CONFIG_BSS_RESP;
22659 case WLAN_HAL_DELETE_BSS_RSP:
22660 return WDI_DEL_BSS_RESP;
22661 case WLAN_HAL_JOIN_RSP:
22662 return WDI_JOIN_RESP;
22663 case WLAN_HAL_POST_ASSOC_RSP:
22664 return WDI_POST_ASSOC_RESP;
22665 case WLAN_HAL_SET_BSSKEY_RSP:
22666 return WDI_SET_BSS_KEY_RESP;
22667 case WLAN_HAL_SET_STAKEY_RSP:
22668 return WDI_SET_STA_KEY_RESP;
22669 case WLAN_HAL_RMV_BSSKEY_RSP:
22670 return WDI_RMV_BSS_KEY_RESP;
22671 case WLAN_HAL_RMV_STAKEY_RSP:
22672 return WDI_RMV_STA_KEY_RESP;
22673 case WLAN_HAL_SET_BCASTKEY_RSP:
22674 return WDI_SET_STA_BCAST_KEY_RESP;
22675 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22676 // return WDI_RMV_STA_BCAST_KEY_RESP;
22677 case WLAN_HAL_ADD_TS_RSP:
22678 return WDI_ADD_TS_RESP;
22679 case WLAN_HAL_DEL_TS_RSP:
22680 return WDI_DEL_TS_RESP;
22681 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22682 return WDI_UPD_EDCA_PRMS_RESP;
22683 case WLAN_HAL_ADD_BA_RSP:
22684 return WDI_ADD_BA_RESP;
22685 case WLAN_HAL_DEL_BA_RSP:
22686 return WDI_DEL_BA_RESP;
22687#ifdef FEATURE_WLAN_CCX
22688 case WLAN_HAL_TSM_STATS_RSP:
22689 return WDI_TSM_STATS_RESP;
22690#endif
22691 case WLAN_HAL_CH_SWITCH_RSP:
22692 return WDI_CH_SWITCH_RESP;
22693 case WLAN_HAL_SET_LINK_ST_RSP:
22694 return WDI_SET_LINK_ST_RESP;
22695 case WLAN_HAL_GET_STATS_RSP:
22696 return WDI_GET_STATS_RESP;
22697 case WLAN_HAL_UPDATE_CFG_RSP:
22698 return WDI_UPDATE_CFG_RESP;
22699 case WLAN_HAL_ADD_BA_SESSION_RSP:
22700 return WDI_ADD_BA_SESSION_RESP;
22701 case WLAN_HAL_TRIGGER_BA_RSP:
22702 return WDI_TRIGGER_BA_RESP;
22703 case WLAN_HAL_UPDATE_BEACON_RSP:
22704 return WDI_UPD_BCON_PRMS_RESP;
22705 case WLAN_HAL_SEND_BEACON_RSP:
22706 return WDI_SND_BCON_RESP;
22707 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22708 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22709 /*Indications*/
22710 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22711 return WDI_HAL_RSSI_NOTIFICATION_IND;
22712 case WLAN_HAL_MISSED_BEACON_IND:
22713 return WDI_HAL_MISSED_BEACON_IND;
22714 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22715 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22716 case WLAN_HAL_MIC_FAILURE_IND:
22717 return WDI_HAL_MIC_FAILURE_IND;
22718 case WLAN_HAL_FATAL_ERROR_IND:
22719 return WDI_HAL_FATAL_ERROR_IND;
22720 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22721 return WDI_HAL_DEL_STA_IND;
22722 case WLAN_HAL_COEX_IND:
22723 return WDI_HAL_COEX_IND;
22724 case WLAN_HAL_OTA_TX_COMPL_IND:
22725 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 case WLAN_HAL_P2P_NOA_ATTR_IND:
22727 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022728 case WLAN_HAL_P2P_NOA_START_IND:
22729 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 case WLAN_HAL_TX_PER_HIT_IND:
22731 return WDI_HAL_TX_PER_HIT_IND;
22732 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22733 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022734 case WLAN_HAL_SET_TX_POWER_RSP:
22735 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 case WLAN_HAL_SET_P2P_GONOA_RSP:
22737 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022738#ifdef FEATURE_WLAN_TDLS
22739 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22740 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22741 case WLAN_HAL_TDLS_IND:
22742 return WDI_HAL_TDLS_IND;
22743#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022744 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022747 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22763 return WDI_SET_BEACON_FILTER_RESP;
22764 case WLAN_HAL_REM_BCN_FILTER_RSP:
22765 return WDI_REM_BEACON_FILTER_RESP;
22766 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22767 return WDI_SET_RSSI_THRESHOLDS_RESP;
22768 case WLAN_HAL_HOST_OFFLOAD_RSP:
22769 return WDI_HOST_OFFLOAD_RESP;
22770 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22771 return WDI_WOWL_ADD_BC_PTRN_RESP;
22772 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22773 return WDI_WOWL_DEL_BC_PTRN_RESP;
22774 case WLAN_HAL_ENTER_WOWL_RSP:
22775 return WDI_WOWL_ENTER_RESP;
22776 case WLAN_HAL_EXIT_WOWL_RSP:
22777 return WDI_WOWL_EXIT_RESP;
22778 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22779 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22780 case WLAN_HAL_DOWNLOAD_NV_RSP:
22781 return WDI_NV_DOWNLOAD_RESP;
22782 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22783 return WDI_FLUSH_AC_RESP;
22784 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22785 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 case WLAN_HAL_PROCESS_PTT_RSP:
22787 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022788 case WLAN_HAL_ADD_STA_SELF_RSP:
22789 return WDI_ADD_STA_SELF_RESP;
22790case WLAN_HAL_DEL_STA_SELF_RSP:
22791 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022792#ifdef FEATURE_OEM_DATA_SUPPORT
22793 case WLAN_HAL_START_OEM_DATA_RSP:
22794 return WDI_START_OEM_DATA_RESP;
22795#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 case WLAN_HAL_HOST_RESUME_RSP:
22797 return WDI_HOST_RESUME_RESP;
22798 case WLAN_HAL_KEEP_ALIVE_RSP:
22799 return WDI_KEEP_ALIVE_RESP;
22800#ifdef FEATURE_WLAN_SCAN_PNO
22801 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22802 return WDI_SET_PREF_NETWORK_RESP;
22803 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22806 return WDI_UPDATE_SCAN_PARAMS_RESP;
22807 case WLAN_HAL_PREF_NETW_FOUND_IND:
22808 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22809#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022810#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022811 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22812 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022813#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22815 return WDI_SET_TX_PER_TRACKING_RESP;
22816#ifdef WLAN_FEATURE_PACKET_FILTERING
22817 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22818 return WDI_8023_MULTICAST_LIST_RESP;
22819 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22820 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22821 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22822 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22823 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22824 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22825#endif // WLAN_FEATURE_PACKET_FILTERING
22826
22827 case WLAN_HAL_DUMP_COMMAND_RSP:
22828 return WDI_HAL_DUMP_CMD_RESP;
22829 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22830 return WDI_SET_POWER_PARAMS_RESP;
22831#ifdef WLAN_FEATURE_VOWIFI_11R
22832 case WLAN_HAL_AGGR_ADD_TS_RSP:
22833 return WDI_AGGR_ADD_TS_RESP;
22834#endif
22835
22836#ifdef WLAN_FEATURE_GTK_OFFLOAD
22837 case WLAN_HAL_GTK_OFFLOAD_RSP:
22838 return WDI_GTK_OFFLOAD_RESP;
22839 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22840 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22841#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22842#ifdef WLAN_WAKEUP_EVENTS
22843 case WLAN_HAL_WAKE_REASON_IND:
22844 return WDI_HAL_WAKE_REASON_IND;
22845#endif // WLAN_WAKEUP_EVENTS
22846
22847 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22848 return WDI_SET_TM_LEVEL_RESP;
22849 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22850 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022851#ifdef WLAN_FEATURE_11AC
22852 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22853 return WDI_UPDATE_VHT_OP_MODE_RESP;
22854#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022855#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22856 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22857 return WDI_GET_ROAM_RSSI_RESP;
22858#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022859
Leo Chang00bc9132013-08-01 19:21:11 -070022860#ifdef FEATURE_WLAN_LPHB
22861 case WLAN_HAL_LPHB_IND:
22862 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22863 case WLAN_HAL_LPHB_CFG_RSP:
22864 return WDI_LPHB_CFG_RESP;
22865#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022866
22867 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22868 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022869 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22870 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022871
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022873 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 }
22875
22876}/*HAL_2_WDI_RSP_TYPE*/
22877
22878
22879/*Convert WDI driver type into HAL driver type*/
22880WPT_STATIC WPT_INLINE tDriverType
22881WDI_2_HAL_DRV_TYPE
22882(
22883 WDI_DriverType wdiDriverType
22884)
22885{
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 the chances of getting inlined*/
22888 switch( wdiDriverType )
22889 {
22890 case WDI_DRIVER_TYPE_PRODUCTION:
22891 return eDRIVER_TYPE_PRODUCTION;
22892 case WDI_DRIVER_TYPE_MFG:
22893 return eDRIVER_TYPE_MFG;
22894 case WDI_DRIVER_TYPE_DVT:
22895 return eDRIVER_TYPE_DVT;
22896 }
22897
Jeff Johnsone7245742012-09-05 17:12:55 -070022898 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022899}/*WDI_2_HAL_DRV_TYPE*/
22900
22901
22902/*Convert WDI stop reason into HAL stop reason*/
22903WPT_STATIC WPT_INLINE tHalStopType
22904WDI_2_HAL_STOP_REASON
22905(
22906 WDI_StopType wdiDriverType
22907)
22908{
Jeff Johnsone7245742012-09-05 17:12:55 -070022909 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022910 the chances of getting inlined*/
22911 switch( wdiDriverType )
22912 {
22913 case WDI_STOP_TYPE_SYS_RESET:
22914 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022915 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22916 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022917 case WDI_STOP_TYPE_RF_KILL:
22918 return HAL_STOP_TYPE_RF_KILL;
22919 }
22920
Jeff Johnsone7245742012-09-05 17:12:55 -070022921 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022922}/*WDI_2_HAL_STOP_REASON*/
22923
22924
22925/*Convert WDI scan mode type into HAL scan mode type*/
22926WPT_STATIC WPT_INLINE eHalSysMode
22927WDI_2_HAL_SCAN_MODE
22928(
22929 WDI_ScanMode wdiScanMode
22930)
22931{
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 the chances of getting inlined*/
22934 switch( wdiScanMode )
22935 {
22936 case WDI_SCAN_MODE_NORMAL:
22937 return eHAL_SYS_MODE_NORMAL;
22938 case WDI_SCAN_MODE_LEARN:
22939 return eHAL_SYS_MODE_LEARN;
22940 case WDI_SCAN_MODE_SCAN:
22941 return eHAL_SYS_MODE_SCAN;
22942 case WDI_SCAN_MODE_PROMISC:
22943 return eHAL_SYS_MODE_PROMISC;
22944 case WDI_SCAN_MODE_SUSPEND_LINK:
22945 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022946 case WDI_SCAN_MODE_ROAM_SCAN:
22947 return eHAL_SYS_MODE_ROAM_SCAN;
22948 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22949 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 }
22951
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022953}/*WDI_2_HAL_SCAN_MODE*/
22954
22955/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022956WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022957WDI_2_HAL_SEC_CH_OFFSET
22958(
22959 WDI_HTSecondaryChannelOffset wdiSecChOffset
22960)
22961{
Jeff Johnsone7245742012-09-05 17:12:55 -070022962 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 the chances of getting inlined*/
22964 switch( wdiSecChOffset )
22965 {
22966 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022967 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022968 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22972#ifdef WLAN_FEATURE_11AC
22973 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22974 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22975 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22976 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22977 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22978 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22979 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22980 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22981 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22982 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22983 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22984 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22985 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22986 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22987#endif
22988 default:
22989 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 }
22991
Jeff Johnsone7245742012-09-05 17:12:55 -070022992 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022993}/*WDI_2_HAL_SEC_CH_OFFSET*/
22994
22995/*Convert WDI BSS type into HAL BSS type*/
22996WPT_STATIC WPT_INLINE tSirBssType
22997WDI_2_HAL_BSS_TYPE
22998(
22999 WDI_BssType wdiBSSType
23000)
23001{
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 the chances of getting inlined*/
23004 switch( wdiBSSType )
23005 {
23006 case WDI_INFRASTRUCTURE_MODE:
23007 return eSIR_INFRASTRUCTURE_MODE;
23008 case WDI_INFRA_AP_MODE:
23009 return eSIR_INFRA_AP_MODE;
23010 case WDI_IBSS_MODE:
23011 return eSIR_IBSS_MODE;
23012 case WDI_BTAMP_STA_MODE:
23013 return eSIR_BTAMP_STA_MODE;
23014 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 case WDI_BSS_AUTO_MODE:
23017 return eSIR_AUTO_MODE;
23018 }
23019
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023021}/*WDI_2_HAL_BSS_TYPE*/
23022
23023/*Convert WDI NW type into HAL NW type*/
23024WPT_STATIC WPT_INLINE tSirNwType
23025WDI_2_HAL_NW_TYPE
23026(
23027 WDI_NwType wdiNWType
23028)
23029{
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 the chances of getting inlined*/
23032 switch( wdiNWType )
23033 {
23034 case WDI_11A_NW_TYPE:
23035 return eSIR_11A_NW_TYPE;
23036 case WDI_11B_NW_TYPE:
23037 return eSIR_11B_NW_TYPE;
23038 case WDI_11G_NW_TYPE:
23039 return eSIR_11G_NW_TYPE;
23040 case WDI_11N_NW_TYPE:
23041 return eSIR_11N_NW_TYPE;
23042 }
23043
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023045}/*WDI_2_HAL_NW_TYPE*/
23046
23047/*Convert WDI chanel bonding type into HAL cb type*/
23048WPT_STATIC WPT_INLINE ePhyChanBondState
23049WDI_2_HAL_CB_STATE
23050(
23051 WDI_PhyChanBondState wdiCbState
23052)
23053{
Jeff Johnsone7245742012-09-05 17:12:55 -070023054 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 the chances of getting inlined*/
23056 switch ( wdiCbState )
23057 {
23058 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23059 return PHY_SINGLE_CHANNEL_CENTERED;
23060 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23061 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23062 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23063 return PHY_DOUBLE_CHANNEL_CENTERED;
23064 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23065 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023066#ifdef WLAN_FEATURE_11AC
23067 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23068 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23069 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23070 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23071 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23072 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23073 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23074 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23075 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23076 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23077 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23078 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23079 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23080 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23081#endif
23082 case WDI_MAX_CB_STATE:
23083 default:
23084 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023086
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 return PHY_CHANNEL_BONDING_STATE_MAX;
23088}/*WDI_2_HAL_CB_STATE*/
23089
23090/*Convert WDI chanel bonding type into HAL cb type*/
23091WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23092WDI_2_HAL_HT_OPER_MODE
23093(
23094 WDI_HTOperatingMode wdiHTOperMode
23095)
23096{
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 the chances of getting inlined*/
23099 switch ( wdiHTOperMode )
23100 {
23101 case WDI_HT_OP_MODE_PURE:
23102 return eSIR_HT_OP_MODE_PURE;
23103 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23104 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23105 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23106 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23107 case WDI_HT_OP_MODE_MIXED:
23108 return eSIR_HT_OP_MODE_MIXED;
23109 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023110
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 return eSIR_HT_OP_MODE_MAX;
23112}/*WDI_2_HAL_HT_OPER_MODE*/
23113
23114/*Convert WDI mimo PS type into HAL mimo PS type*/
23115WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23116WDI_2_HAL_MIMO_PS
23117(
23118 WDI_HTMIMOPowerSaveState wdiHTOperMode
23119)
23120{
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 the chances of getting inlined*/
23123 switch ( wdiHTOperMode )
23124 {
23125 case WDI_HT_MIMO_PS_STATIC:
23126 return eSIR_HT_MIMO_PS_STATIC;
23127 case WDI_HT_MIMO_PS_DYNAMIC:
23128 return eSIR_HT_MIMO_PS_DYNAMIC;
23129 case WDI_HT_MIMO_PS_NA:
23130 return eSIR_HT_MIMO_PS_NA;
23131 case WDI_HT_MIMO_PS_NO_LIMIT:
23132 return eSIR_HT_MIMO_PS_NO_LIMIT;
23133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023134
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 return eSIR_HT_MIMO_PS_MAX;
23136}/*WDI_2_HAL_MIMO_PS*/
23137
23138/*Convert WDI ENC type into HAL ENC type*/
23139WPT_STATIC WPT_INLINE tAniEdType
23140WDI_2_HAL_ENC_TYPE
23141(
23142 WDI_EncryptType wdiEncType
23143)
23144{
Jeff Johnsone7245742012-09-05 17:12:55 -070023145 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 the chances of getting inlined*/
23147 switch ( wdiEncType )
23148 {
23149 case WDI_ENCR_NONE:
23150 return eSIR_ED_NONE;
23151
23152 case WDI_ENCR_WEP40:
23153 return eSIR_ED_WEP40;
23154
23155 case WDI_ENCR_WEP104:
23156 return eSIR_ED_WEP104;
23157
23158 case WDI_ENCR_TKIP:
23159 return eSIR_ED_TKIP;
23160
23161 case WDI_ENCR_CCMP:
23162 return eSIR_ED_CCMP;
23163
23164 case WDI_ENCR_AES_128_CMAC:
23165 return eSIR_ED_AES_128_CMAC;
23166#if defined(FEATURE_WLAN_WAPI)
23167 case WDI_ENCR_WPI:
23168 return eSIR_ED_WPI;
23169#endif
23170 default:
23171 return eSIR_ED_NOT_IMPLEMENTED;
23172 }
23173
23174}/*WDI_2_HAL_ENC_TYPE*/
23175
23176/*Convert WDI WEP type into HAL WEP type*/
23177WPT_STATIC WPT_INLINE tAniWepType
23178WDI_2_HAL_WEP_TYPE
23179(
23180 WDI_WepType wdiWEPType
23181)
23182{
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 the chances of getting inlined*/
23185 switch ( wdiWEPType )
23186 {
23187 case WDI_WEP_STATIC:
23188 return eSIR_WEP_STATIC;
23189
23190 case WDI_WEP_DYNAMIC:
23191 return eSIR_WEP_DYNAMIC;
23192 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023193
Jeff Johnson295189b2012-06-20 16:38:30 -070023194 return eSIR_WEP_MAX;
23195}/*WDI_2_HAL_WEP_TYPE*/
23196
23197WPT_STATIC WPT_INLINE tSirLinkState
23198WDI_2_HAL_LINK_STATE
23199(
23200 WDI_LinkStateType wdiLinkState
23201)
23202{
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 the chances of getting inlined*/
23205 switch ( wdiLinkState )
23206 {
23207 case WDI_LINK_IDLE_STATE:
23208 return eSIR_LINK_IDLE_STATE;
23209
23210 case WDI_LINK_PREASSOC_STATE:
23211 return eSIR_LINK_PREASSOC_STATE;
23212
23213 case WDI_LINK_POSTASSOC_STATE:
23214 return eSIR_LINK_POSTASSOC_STATE;
23215
23216 case WDI_LINK_AP_STATE:
23217 return eSIR_LINK_AP_STATE;
23218
23219 case WDI_LINK_IBSS_STATE:
23220 return eSIR_LINK_IBSS_STATE;
23221
23222 case WDI_LINK_BTAMP_PREASSOC_STATE:
23223 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23224
23225 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23226 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23227
23228 case WDI_LINK_BTAMP_AP_STATE:
23229 return eSIR_LINK_BTAMP_AP_STATE;
23230
23231 case WDI_LINK_BTAMP_STA_STATE:
23232 return eSIR_LINK_BTAMP_STA_STATE;
23233
23234 case WDI_LINK_LEARN_STATE:
23235 return eSIR_LINK_LEARN_STATE;
23236
23237 case WDI_LINK_SCAN_STATE:
23238 return eSIR_LINK_SCAN_STATE;
23239
23240 case WDI_LINK_FINISH_SCAN_STATE:
23241 return eSIR_LINK_FINISH_SCAN_STATE;
23242
23243 case WDI_LINK_INIT_CAL_STATE:
23244 return eSIR_LINK_INIT_CAL_STATE;
23245
23246 case WDI_LINK_FINISH_CAL_STATE:
23247 return eSIR_LINK_FINISH_CAL_STATE;
23248
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 case WDI_LINK_LISTEN_STATE:
23250 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023252 case WDI_LINK_SEND_ACTION_STATE:
23253 return eSIR_LINK_SEND_ACTION_STATE;
23254
Jeff Johnson295189b2012-06-20 16:38:30 -070023255 default:
23256 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023258}
23259
Jeff Johnsone7245742012-09-05 17:12:55 -070023260/*Translate a STA Context from WDI into HAL*/
23261WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023262void
23263WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023264(
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 tConfigStaParams* phalConfigSta,
23266 WDI_ConfigStaReqInfoType* pwdiConfigSta
23267)
23268{
23269 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023270#ifdef WLAN_FEATURE_11AC
23271 /* Get the Version 1 Handler */
23272 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23273 if (WDI_getFwWlanFeatCaps(DOT11AC))
23274 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023275 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 }
23277#endif
23278 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 the chances of getting inlined*/
23280
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 wpalMemoryCopy(phalConfigSta->bssId,
23282 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23283
23284 wpalMemoryCopy(phalConfigSta->staMac,
23285 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023286
23287 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23288 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23289 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23290 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23291 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23292 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23293 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23294 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23295 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23296 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23297 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23298 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23299 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23300 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23301 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23302 phalConfigSta->action = pwdiConfigSta->wdiAction;
23303 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23304 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23305 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23306 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23307 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23308 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23309 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023310
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23312
Jeff Johnsone7245742012-09-05 17:12:55 -070023313 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 pwdiConfigSta->wdiSupportedRates.opRateMode;
23315 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23316 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23319 }
23320 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23321 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23324 }
23325 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23326 {
23327 phalConfigSta->supportedRates.aniLegacyRates[i] =
23328 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23329 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23332 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23333 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23336 }
23337 phalConfigSta->supportedRates.rxHighestDataRate =
23338 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23339
Jeff Johnsone7245742012-09-05 17:12:55 -070023340#ifdef WLAN_FEATURE_11AC
23341 if(phalConfigSta_V1 != NULL)
23342 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023343 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23344 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23345 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23346 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 }
23348#endif
23349
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351
Jeff Johnsone7245742012-09-05 17:12:55 -070023352#ifdef WLAN_FEATURE_11AC
23353 if(phalConfigSta_V1 != NULL)
23354 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023355 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23356 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023357 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023358 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23359 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23360
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 }
23362#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023363}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023364
23365/*Translate a Rate set info from WDI into HAL*/
23366WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023367WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023368(
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 tSirMacRateSet* pHalRateSet,
23370 WDI_RateSet* pwdiRateSet
23371)
23372{
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23375
23376 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23377 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23378
23379 for ( i = 0; i < pHalRateSet->numRates; i++ )
23380 {
23381 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23382 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023383
Jeff Johnson295189b2012-06-20 16:38:30 -070023384}/*WDI_CopyWDIRateSetToHALRateSet*/
23385
23386
23387/*Translate an EDCA Parameter Record from WDI into HAL*/
23388WPT_STATIC WPT_INLINE void
23389WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023390(
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 tSirMacEdcaParamRecord* phalEdcaParam,
23392 WDI_EdcaParamRecord* pWDIEdcaParam
23393)
23394{
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 the chances of getting inlined*/
23397
23398 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23399 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23400 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23401 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23402
23403 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23404 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23405 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23406}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23407
23408
23409/*Copy a management frame header from WDI fmt into HAL fmt*/
23410WPT_STATIC WPT_INLINE void
23411WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23412(
23413 tSirMacMgmtHdr* pmacMgmtHdr,
23414 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23415)
23416{
23417 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23418 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23419 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23420 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23421 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23422 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23423 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23424 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23425 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23426 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23427 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23428
23429 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23430 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23431
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 pwdiMacMgmtHdr->bssId, 6);
23438
23439 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23440 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23441 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23442
23443}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23444
23445
23446/*Copy config bss parameters from WDI fmt into HAL fmt*/
23447WPT_STATIC WPT_INLINE void
23448WDI_CopyWDIConfigBSSToHALConfigBSS
23449(
23450 tConfigBssParams* phalConfigBSS,
23451 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23452)
23453{
23454
23455 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023456#ifdef WLAN_FEATURE_11AC
23457 /* Get the Version 1 Handler */
23458 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23459 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023460 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023461#endif
23462
Jeff Johnson295189b2012-06-20 16:38:30 -070023463 wpalMemoryCopy( phalConfigBSS->bssId,
23464 pwdiConfigBSS->macBSSID,
23465 WDI_MAC_ADDR_LEN);
23466
23467#ifdef HAL_SELF_STA_PER_BSS
23468 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23469 pwdiConfigBSS->macSelfAddr,
23470 WDI_MAC_ADDR_LEN);
23471#endif
23472
23473 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23474
23475 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23476 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23477
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 pwdiConfigBSS->ucShortSlotTimeSupported;
23480 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23481 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23482 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23483 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23484 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23487 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23488 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23489 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23490 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23491 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23492 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23493 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23494 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23495 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23496 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23497
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 phalConfigBSS->htOperMode =
23499 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023500
23501 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23502 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23503 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23504 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23505
23506#ifdef WLAN_FEATURE_VOWIFI
23507 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23508#endif
23509
23510 /*! Used 32 as magic number because that is how the ssid is declared inside the
23511 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023512 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23514 pwdiConfigBSS->wdiSSID.ucLength : 32;
23515 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 pwdiConfigBSS->wdiSSID.sSSID,
23517 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023518
23519 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23520 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023521
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23523 &pwdiConfigBSS->wdiRateSet);
23524
23525 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23526
23527 if(phalConfigBSS->edcaParamsValid)
23528 {
23529 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23530 &pwdiConfigBSS->wdiBEEDCAParams);
23531 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23532 &pwdiConfigBSS->wdiBKEDCAParams);
23533 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23534 &pwdiConfigBSS->wdiVIEDCAParams);
23535 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23536 &pwdiConfigBSS->wdiVOEDCAParams);
23537 }
23538
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023540
23541 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23542
23543#ifdef WLAN_FEATURE_VOWIFI_11R
23544
Jeff Johnsone7245742012-09-05 17:12:55 -070023545 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023547
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 if( phalConfigBSS->extSetStaKeyParamValid )
23549 {
23550 /*-----------------------------------------------------------------------
23551 Copy the STA Key parameters into the HAL message
23552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23555
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23558
23559 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23560
23561 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23562
23563 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23564
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23566 keyIndex++)
23567 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23570 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23571 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23572 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23573 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23574 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23581 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 WDI_MAX_KEY_LENGTH);
23584 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 }
23586 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23587 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 sizeof(phalConfigBSS->extSetStaKeyParam) );
23590 }
23591
23592#endif /*WLAN_FEATURE_VOWIFI_11R*/
23593
Jeff Johnsone7245742012-09-05 17:12:55 -070023594#ifdef WLAN_FEATURE_11AC
23595 if(phalConfigBSS_V1 != NULL)
23596 {
23597 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23598 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23599 }
23600#endif
23601
Jeff Johnson295189b2012-06-20 16:38:30 -070023602}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23603
23604
Jeff Johnsone7245742012-09-05 17:12:55 -070023605/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 pointed to by user data */
23607WPT_STATIC WPT_INLINE void
23608WDI_ExtractRequestCBFromEvent
23609(
23610 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023611 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 void** ppUserData
23613)
23614{
23615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23616 switch ( pEvent->wdiRequest )
23617 {
23618 case WDI_START_REQ:
23619 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23620 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23621 break;
23622 case WDI_STOP_REQ:
23623 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23624 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23625 break;
23626 case WDI_INIT_SCAN_REQ:
23627 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23628 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23629 break;
23630 case WDI_START_SCAN_REQ:
23631 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23632 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23633 break;
23634 case WDI_END_SCAN_REQ:
23635 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23636 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23637 break;
23638 case WDI_FINISH_SCAN_REQ:
23639 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23640 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23641 break;
23642 case WDI_JOIN_REQ:
23643 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23644 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23645 break;
23646 case WDI_CONFIG_BSS_REQ:
23647 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23648 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23649 break;
23650 case WDI_DEL_BSS_REQ:
23651 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23652 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23653 break;
23654 case WDI_POST_ASSOC_REQ:
23655 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23656 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23657 break;
23658 case WDI_DEL_STA_REQ:
23659 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23660 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23661 break;
23662 case WDI_DEL_STA_SELF_REQ:
23663 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23664 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23665 break;
23666
23667 case WDI_SET_BSS_KEY_REQ:
23668 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23669 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23670 break;
23671 case WDI_RMV_BSS_KEY_REQ:
23672 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23673 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23674 break;
23675 case WDI_SET_STA_KEY_REQ:
23676 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23677 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23678 break;
23679 case WDI_RMV_STA_KEY_REQ:
23680 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23681 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23682 break;
23683 case WDI_ADD_TS_REQ:
23684 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23685 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23686 break;
23687 case WDI_DEL_TS_REQ:
23688 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23689 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23690 break;
23691 case WDI_UPD_EDCA_PRMS_REQ:
23692 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23693 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23694 break;
23695 case WDI_ADD_BA_SESSION_REQ:
23696 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23697 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23698 break;
23699 case WDI_DEL_BA_REQ:
23700 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23701 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23702 break;
23703#ifdef FEATURE_WLAN_CCX
23704 case WDI_TSM_STATS_REQ:
23705 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23706 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23707 break;
23708#endif
23709 case WDI_CH_SWITCH_REQ:
23710 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23711 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23712 break;
23713 case WDI_CONFIG_STA_REQ:
23714 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23715 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23716 break;
23717 case WDI_SET_LINK_ST_REQ:
23718 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23719 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23720 break;
23721 case WDI_GET_STATS_REQ:
23722 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23723 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23724 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023725#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23726 case WDI_GET_ROAM_RSSI_REQ:
23727 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23728 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23729 break;
23730#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WDI_UPDATE_CFG_REQ:
23732 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23733 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23734 break;
23735 case WDI_ADD_BA_REQ:
23736 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23737 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23738 break;
23739 case WDI_TRIGGER_BA_REQ:
23740 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23741 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23742 break;
23743 case WDI_UPD_BCON_PRMS_REQ:
23744 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23745 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23746 break;
23747 case WDI_SND_BCON_REQ:
23748 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23749 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23750 break;
23751 case WDI_ENTER_BMPS_REQ:
23752 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23753 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23754 break;
23755 case WDI_EXIT_BMPS_REQ:
23756 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23757 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23758 break;
23759 case WDI_ENTER_UAPSD_REQ:
23760 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23761 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23762 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023763 case WDI_EXIT_UAPSD_REQ:
23764 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23765 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23766 break;
23767 case WDI_SET_UAPSD_PARAM_REQ:
23768 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23769 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23770 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 case WDI_UPDATE_UAPSD_PARAM_REQ:
23772 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23773 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23774 break;
23775 case WDI_CONFIGURE_RXP_FILTER_REQ:
23776 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23777 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23778 break;
23779 case WDI_SET_BEACON_FILTER_REQ:
23780 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23781 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23782 break;
23783 case WDI_REM_BEACON_FILTER_REQ:
23784 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23785 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023786 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023787 case WDI_SET_RSSI_THRESHOLDS_REQ:
23788 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23789 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23790 break;
23791 case WDI_HOST_OFFLOAD_REQ:
23792 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23793 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23794 break;
23795 case WDI_WOWL_ADD_BC_PTRN_REQ:
23796 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23797 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23798 break;
23799 case WDI_WOWL_DEL_BC_PTRN_REQ:
23800 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23801 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23802 break;
23803 case WDI_WOWL_ENTER_REQ:
23804 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23805 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23806 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023807 case WDI_WOWL_EXIT_REQ:
23808 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23809 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23810 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23812 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23813 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23814 break;
23815 case WDI_FLUSH_AC_REQ:
23816 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23817 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23818 break;
23819 case WDI_BTAMP_EVENT_REQ:
23820 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23821 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23822 break;
23823 case WDI_KEEP_ALIVE_REQ:
23824 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23825 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23826 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023827#if defined FEATURE_WLAN_SCAN_PNO
23828 case WDI_SET_PREF_NETWORK_REQ:
23829 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23830 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23831 break;
23832 case WDI_SET_RSSI_FILTER_REQ:
23833 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23834 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23835 break;
23836 case WDI_UPDATE_SCAN_PARAMS_REQ:
23837 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23838 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23839 break;
23840#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 case WDI_SET_TX_PER_TRACKING_REQ:
23842 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23843 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023844 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023845#if defined WLAN_FEATURE_PACKET_FILTERING
23846 case WDI_8023_MULTICAST_LIST_REQ:
23847 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23848 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23849 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023850 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23851 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23852 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23853 break;
23854 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23855 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23856 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23857 break;
23858 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23859 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23860 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23861 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023862#endif
23863 case WDI_SET_POWER_PARAMS_REQ:
23864 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23865 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23866 break;
23867#if defined WLAN_FEATURE_GTK_OFFLOAD
23868 case WDI_GTK_OFFLOAD_REQ:
23869 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23870 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23871 break;
23872 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23873 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23874 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23875 break;
23876#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023877
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 default:
23879 *ppfnReqCB = NULL;
23880 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023881 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 }
23883}/*WDI_ExtractRequestCBFromEvent*/
23884
23885
23886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023887 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 frame xtl is enabled for a particular STA.
23889
23890 WDI_PostAssocReq must have been called.
23891
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 @param uSTAIdx: STA index
23893
Jeff Johnson295189b2012-06-20 16:38:30 -070023894 @see WDI_PostAssocReq
23895 @return Result of the function call
23896*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023897wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023898WDI_IsHwFrameTxTranslationCapable
23899(
23900 wpt_uint8 uSTAIdx
23901)
23902{
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023904 uma value*/
23905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 ------------------------------------------------------------------------*/
23908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23909 {
23910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23911 "WDI API call before module is initialized - Fail request");
23912
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 }
23915
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023916#ifdef WLAN_SOFTAP_VSTA_FEATURE
23917 if (IS_VSTA_IDX(uSTAIdx))
23918 {
23919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23920 "STA %d is a Virtual STA, "
23921 "HW frame translation disabled", uSTAIdx);
23922 return eWLAN_PAL_FALSE;
23923 }
23924#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023925
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 return gWDICb.bFrameTransEnabled;
23927}/*WDI_IsHwFrameTxTranslationCapable*/
23928
23929#ifdef FEATURE_WLAN_SCAN_PNO
23930/**
23931 @brief WDI_SetPreferredNetworkList
23932
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023935
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 wdiPNOScanCb: callback for passing back the response
23937 of the Set PNO operation received from the
23938 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023939
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 callback
23942
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 @return Result of the function call
23944*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023945WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023946WDI_SetPreferredNetworkReq
23947(
23948 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23949 WDI_PNOScanCb wdiPNOScanCb,
23950 void* pUserData
23951)
23952{
23953 WDI_EventInfoType wdiEventData = {{0}};
23954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23955
23956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 ------------------------------------------------------------------------*/
23959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23960 {
23961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23962 "WDI API call before module is initialized - Fail request");
23963
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 }
23966
23967 /*------------------------------------------------------------------------
23968 Fill in Event data and post to the Main FSM
23969 ------------------------------------------------------------------------*/
23970 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 wdiEventData.pUserData = pUserData;
23975
23976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23977}
23978
23979
23980/**
23981 @brief WDI_SetRssiFilterReq
23982
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023985
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 wdiRssiFilterCb: callback for passing back the response
23987 of the Set RSSI Filter operation received from the
23988 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023989
Jeff Johnson295189b2012-06-20 16:38:30 -070023990 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 callback
23992
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 @return Result of the function call
23994*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023995WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023996WDI_SetRssiFilterReq
23997(
23998 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23999 WDI_RssiFilterCb wdiRssiFilterCb,
24000 void* pUserData
24001)
24002{
24003 WDI_EventInfoType wdiEventData = {{0}};
24004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24005
24006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 ------------------------------------------------------------------------*/
24009 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24010 {
24011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24012 "WDI API call before module is initialized - Fail request");
24013
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 }
24016
24017 /*------------------------------------------------------------------------
24018 Fill in Event data and post to the Main FSM
24019 ------------------------------------------------------------------------*/
24020 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 wdiEventData.pUserData = pUserData;
24025
24026 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24027}/*WDI_SetRssiFilterReq*/
24028
24029/**
24030 @brief WDI_UpdateScanParamsReq
24031
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024034
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 wdiUpdateScanParamsCb: callback for passing back the response
24036 of the Set PNO operation received from the
24037 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024038
Jeff Johnson295189b2012-06-20 16:38:30 -070024039 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 callback
24041
Jeff Johnson295189b2012-06-20 16:38:30 -070024042 @return Result of the function call
24043*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024044WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024045WDI_UpdateScanParamsReq
24046(
24047 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24048 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24049 void* pUserData
24050)
24051{
24052 WDI_EventInfoType wdiEventData = {{0}};
24053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24054
24055 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 ------------------------------------------------------------------------*/
24058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24059 {
24060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24061 "WDI API call before module is initialized - Fail request");
24062
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 }
24065
24066 /*------------------------------------------------------------------------
24067 Fill in Event data and post to the Main FSM
24068 ------------------------------------------------------------------------*/
24069 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 wdiEventData.pUserData = pUserData;
24074
24075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24076}
24077
24078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024081
24082 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 pwdiPNOScanReqParams: pointer to the info received
24084 from upper layers
24085 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 and its size
24087
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 @return Result of the function call
24089*/
24090
24091WDI_Status
24092WDI_PackPreferredNetworkList
24093(
24094 WDI_ControlBlockType* pWDICtx,
24095 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24096 wpt_uint8** ppSendBuffer,
24097 wpt_uint16* pSize
24098)
24099{
Jeff Johnsone7245742012-09-05 17:12:55 -070024100 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 wpt_uint16 usDataOffset = 0;
24102 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024103 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 /*-----------------------------------------------------------------------
24106 Get message buffer
24107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024109 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024111 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 {
24113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24114 "Unable to get send buffer in Set PNO req %x ",
24115 pwdiPNOScanReqParams);
24116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 }
24119
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024120 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24121
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 /*-------------------------------------------------------------------------
24123 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24124 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024125 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024127 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24129
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024130 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024131 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024132 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24135
24136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024137 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24139 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24140 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24141
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024142 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 {
24144 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024145 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24147
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024148 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024150 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024151
24152 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024153 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024155
24156 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024157 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024158 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024159
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024162 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024163 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24164 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24165 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24166 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024167
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024168 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024169 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024170 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024171
24172 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024173 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024174 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24175
24176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024177 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024178 pPrefNetwListParams->aNetworks[i].ssId.length,
24179 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024180 }
24181
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024182 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24185 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24186 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24187
24188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024189 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024190 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24192 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24193
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024194 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024195 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024196 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024198 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024199 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24200 }
24201
24202 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024203 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24205 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24206 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024207 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024208
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024209 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024211 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024212
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024213 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024214 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24215 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24216 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024217 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024218
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024219 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024221 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024222
24223 /*Set the output values*/
24224 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024225 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024226
24227 return WDI_STATUS_SUCCESS;
24228}/*WDI_PackPreferredNetworkList*/
24229
24230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024233
24234 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 pwdiPNOScanReqParams: pointer to the info received
24236 from upper layers
24237 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024238 and its size
24239
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 @return Result of the function call
24241*/
24242
24243WDI_Status
24244WDI_PackPreferredNetworkListNew
24245(
24246 WDI_ControlBlockType* pWDICtx,
24247 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24248 wpt_uint8** ppSendBuffer,
24249 wpt_uint16* pSize
24250)
24251{
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 wpt_uint16 usDataOffset = 0;
24254 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024255 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024257
24258 /*-----------------------------------------------------------------------
24259 Get message buffer
24260 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024261 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024262 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024264 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 {
24266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24267 "Unable to get send buffer in Set PNO req %x ",
24268 pwdiPNOScanReqParams);
24269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 }
24272
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024273 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24274
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 /*-------------------------------------------------------------------------
24276 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24277 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024278 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024280 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24282
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024283 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024284 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24288
24289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24292 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24293 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24294
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024295 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 {
24297 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024298 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24300
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024301 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024303 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024304
24305 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024306 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308
24309 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024310 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312
24313 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024314 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024319 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24321
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024322 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024324 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024325
24326 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024327 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24329
24330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024332 pPrefNetwListParams->aNetworks[i].ssId.length,
24333 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 }
24335
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024336 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24339 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24340 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24341
24342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024344 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024345 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24346 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24347
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024348 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024349 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024350 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024352 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24354 }
24355
24356 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024357 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24359 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24360 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024361 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024362
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024363 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024365 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024366
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24369 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24370 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024372
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024373 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024375 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024376
Jeff Johnson295189b2012-06-20 16:38:30 -070024377
24378 /*Set the output values*/
24379 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381
24382 return WDI_STATUS_SUCCESS;
24383}/*WDI_PackPreferredNetworkListNew*/
24384
24385/**
24386 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024387
24388 @param pWDICtx: pointer to the WLAN DAL context
24389 pEventData: pointer to the event information structure
24390
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 @return Result of the function call
24392*/
24393WDI_Status
24394WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024395(
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 WDI_ControlBlockType* pWDICtx,
24397 WDI_EventInfoType* pEventData
24398)
24399{
24400 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24401 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405
24406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024407 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 -------------------------------------------------------------------------*/
24409 if (( NULL == pEventData ) ||
24410 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24411 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24412 {
24413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 }
24418
24419 /*-------------------------------------------------------------------------
24420 Pack the PNO request structure based on version
24421 -------------------------------------------------------------------------*/
24422 if ( pWDICtx->wdiPNOVersion > 0 )
24423 {
24424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024425 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024426 pWDICtx->wdiPNOVersion);
24427
24428 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24429 &pSendBuffer, &usSendSize);
24430 }
24431 else
24432 {
24433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024434 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 pWDICtx->wdiPNOVersion);
24436
24437 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24438 &pSendBuffer, &usSendSize);
24439 }
24440
24441 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24442 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24443 {
24444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024445 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 }
24449
24450 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024451 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024452
24453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024454 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024456 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24457 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024458}
24459
24460/**
24461 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024462
24463 @param pWDICtx: pointer to the WLAN DAL context
24464 pEventData: pointer to the event information structure
24465
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 @see
24467 @return Result of the function call
24468*/
24469WDI_Status
24470WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024471(
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 WDI_ControlBlockType* pWDICtx,
24473 WDI_EventInfoType* pEventData
24474)
24475{
24476 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24477 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 wpt_uint16 usDataOffset = 0;
24480 wpt_uint16 usSendSize = 0;
24481 wpt_uint8 ucRssiThreshold;
24482
24483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024485 -------------------------------------------------------------------------*/
24486 if (( NULL == pEventData ) ||
24487 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24488 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24489 {
24490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 }
24495
24496 /*-----------------------------------------------------------------------
24497 Get message buffer
24498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 sizeof(ucRssiThreshold),
24501 &pSendBuffer, &usDataOffset, &usSendSize))||
24502 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24503 {
24504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24505 "Unable to get send buffer in Set PNO req %x %x %x",
24506 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 }
24510
24511 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24512
Jeff Johnsone7245742012-09-05 17:12:55 -070024513 wpalMemoryCopy( pSendBuffer+usDataOffset,
24514 &ucRssiThreshold,
24515 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024516
24517 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024518 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024519
24520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024521 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024523 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24524 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024525}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024526#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24527/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024528 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024529
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024530 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024531 by the Device Interface
24532
24533 wdiRoamOffloadScancb: callback for passing back the response
24534 of the Roam Candidate Lookup Req operation received from the
24535 device
24536
24537 pUserData: user data will be passed back with the
24538 callback
24539 @return Result of the function call
24540*/
24541WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024542WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024543(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024544 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024545 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24546 void* pUserData
24547)
24548{
24549 WDI_EventInfoType wdiEventData = {{0}};
24550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24551
24552 /*------------------------------------------------------------------------
24553 Sanity Check
24554 ------------------------------------------------------------------------*/
24555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24556 {
24557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24558 "WDI API call before module is initialized - Fail request");
24559
24560 return WDI_STATUS_E_NOT_ALLOWED;
24561 }
24562
24563 /*------------------------------------------------------------------------
24564 Fill in Event data and post to the Main FSM
24565 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024566 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24567 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24568 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024569 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24570 wdiEventData.pUserData = pUserData;
24571
24572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24573}
24574
24575void
24576WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24577{
24578 switch (wdiEdType)
24579 {
24580 case WDI_ED_NONE:
24581 *EdType = eED_NONE;
24582 break;
24583 case WDI_ED_WEP40:
24584 case WDI_ED_WEP104:
24585 *EdType = eED_WEP;
24586 break;
24587 case WDI_ED_TKIP:
24588 *EdType = eED_TKIP;
24589 break;
24590 case WDI_ED_CCMP:
24591#ifdef WLAN_FEATURE_11W
24592 case WDI_ED_AES_128_CMAC:
24593#endif
24594 *EdType = eED_CCMP;
24595 break;
24596#ifdef FEATURE_WLAN_WAPI
24597 case WDI_ED_WPI:
24598 *EdType = eED_WPI;
24599 break;
24600#endif
24601 case WDI_ED_ANY:
24602 *EdType = eED_ANY;
24603 break;
24604
24605 default:
24606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24607 "%s: Unknown Encryption Type", __func__);
24608 break;
24609 }
24610}
24611
24612/**
24613 @brief Helper function to pack Start Roam Candidate Lookup
24614 Request parameters
24615
24616 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024617 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024618 from upper layers
24619 ppSendBuffer, pSize - out pointers of the packed buffer
24620 and its size
24621
24622 @return Result of the function call
24623*/
24624
24625WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024626WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024627(
24628 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024629 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024630 wpt_uint8** ppSendBuffer,
24631 wpt_uint16* pSize
24632)
24633{
24634 wpt_uint8* pSendBuffer = NULL;
24635 wpt_uint16 usDataOffset = 0;
24636 wpt_uint16 usSendSize = 0;
24637 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24638 wpt_uint8 i;
24639 /*-----------------------------------------------------------------------
24640 Get message buffer
24641 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024643 sizeof(tRoamCandidateListParams),
24644 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024645 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024646 {
24647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24648 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024649 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024650 WDI_ASSERT(0);
24651 return WDI_STATUS_E_FAILURE;
24652 }
24653 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024654 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024655 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024656 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024657 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024658 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024659 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024660 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024661 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024662 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024663 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024664
24665 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024666 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024667 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024668 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024669 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24670 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024671 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24672 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24673 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24674 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24675 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24676 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24677 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24678 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24679 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24680 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24681 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24682 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24683 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24684 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024685 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024686 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24687 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24688 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024689
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24691 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24692 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24693 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24694 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24695 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24696 "HomeAwayTime=%d\n",
24697 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24698 pRoamCandidateListParams->RoamScanOffloadEnabled,
24699 pRoamCandidateListParams->Command,
24700 pRoamCandidateListParams->StartScanReason,
24701 pRoamCandidateListParams->NeighborScanTimerPeriod,
24702 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24703 pRoamCandidateListParams->NeighborScanChannelMinTime,
24704 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24705 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24706 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24707 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24708 pRoamCandidateListParams->ConnectedNetwork.authentication,
24709 pRoamCandidateListParams->ConnectedNetwork.encryption,
24710 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24711 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24712 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024713 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024714 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024715 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024716 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024717 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24718 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024719 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024720 pRoamCandidateListParams->us24GProbeSize);
24721 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024722 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024723 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024724 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024725 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24726 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024727 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024728 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024729 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24730 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24731 pRoamCandidateListParams->nProbes =
24732 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24733 pRoamCandidateListParams->HomeAwayTime =
24734 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024736 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24737 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024739 }
24740
24741
24742 /*Set the output values*/
24743 *ppSendBuffer = pSendBuffer;
24744 *pSize = usSendSize;
24745 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024746}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024747
24748/**
24749 @brief Process Start Roam Candidate Lookup Request function
24750
24751 @param pWDICtx: pointer to the WLAN DAL context
24752 pEventData: pointer to the event information structure
24753
24754 @return Result of the function call
24755*/
24756WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024757WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024758(
24759 WDI_ControlBlockType* pWDICtx,
24760 WDI_EventInfoType* pEventData
24761)
24762{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024763 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024764 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24765 wpt_uint8* pSendBuffer = NULL;
24766 wpt_uint16 usSendSize = 0;
24767 WDI_Status wdiStatus;
24768 /*-------------------------------------------------------------------------
24769 Sanity check
24770 -------------------------------------------------------------------------*/
24771 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024772 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024773 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24774 {
24775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24776 "%s: Invalid parameters", __func__);
24777 WDI_ASSERT(0);
24778 return WDI_STATUS_E_FAILURE;
24779 }
24780
24781 /*-------------------------------------------------------------------------
24782 Pack the Start Roam Candidate Lookup request structure based on version
24783 -------------------------------------------------------------------------*/
24784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24785 "%s: Packing Roam Candidate Lookup request ", __func__);
24786
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024787 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024788 &pSendBuffer, &usSendSize);
24789
24790 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24791 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24792 {
24793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24794 "%s: failed to pack request parameters", __func__);
24795 WDI_ASSERT(0);
24796 return wdiStatus;
24797 }
24798
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024799 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24800 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024801
24802 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024803 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024804 -------------------------------------------------------------------------*/
24805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024806 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024807}
24808
24809/**
24810 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24811 response is being received over the bus from HAL)
24812
24813 @param pWDICtx: pointer to the WLAN DAL context
24814 pEventData: pointer to the event information structure
24815
24816 @see
24817 @return Result of the function call
24818*/
24819WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024820WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024821(
24822 WDI_ControlBlockType* pWDICtx,
24823 WDI_EventInfoType* pEventData
24824)
24825{
24826 WDI_Status wdiStatus;
24827 eHalStatus halStatus;
24828 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24829
24830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24831
24832 /*-------------------------------------------------------------------------
24833 Sanity check
24834 -------------------------------------------------------------------------*/
24835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24836 ( NULL == pEventData->pEventData ))
24837 {
24838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24839 "%s: Invalid parameters", __func__);
24840 WDI_ASSERT(0);
24841 return WDI_STATUS_E_FAILURE;
24842 }
24843
24844 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24845
24846 /*-------------------------------------------------------------------------
24847 Extract response and send it to UMAC
24848 -------------------------------------------------------------------------*/
24849 halStatus = *((eHalStatus*)pEventData->pEventData);
24850 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24851
24852 /*Notify UMAC*/
24853 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24854
24855 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024856}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024857#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024858
24859/**
24860 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024861
24862 @param pWDICtx: pointer to the WLAN DAL context
24863 pEventData: pointer to the event information structure
24864
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 @see
24866 @return Result of the function call
24867*/
24868WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024869WDI_PackUpdateScanParamsReq
24870(
24871 WDI_ControlBlockType* pWDICtx,
24872 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24873 wpt_uint8** ppSendBuffer,
24874 wpt_uint16* pSize
24875)
24876{
24877 wpt_uint8* pSendBuffer = NULL;
24878 wpt_uint16 usDataOffset = 0;
24879 wpt_uint16 usSendSize = 0;
24880 tUpdateScanParams updateScanParams = {0};
24881
24882
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024884 "Begin WDI Update Scan Parameters Old Style Params");
24885 /*-----------------------------------------------------------------------
24886 Get message buffer
24887 -----------------------------------------------------------------------*/
24888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24889 sizeof(updateScanParams),
24890 &pSendBuffer, &usDataOffset, &usSendSize))||
24891 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24892 {
24893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24894 "Unable to get send buffer in Update Scan Params req %x",
24895 pwdiUpdateScanParams);
24896 WDI_ASSERT(0);
24897 return WDI_STATUS_E_FAILURE;
24898 }
24899
24900 //
24901 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24902 //
24903
24904 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24905 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24906
24907 updateScanParams.ucChannelCount =
24908 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24909 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24910 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24911 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24912
24913 wpalMemoryCopy( updateScanParams.aChannels,
24914 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24915 updateScanParams.ucChannelCount);
24916
24917
24918 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24919 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24920 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24921 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24922 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24923
24924 wpalMemoryCopy( pSendBuffer+usDataOffset,
24925 &updateScanParams,
24926 sizeof(updateScanParams));
24927
24928 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24929 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24930
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024932 "End Update Scan Parameters Old Style");
24933
24934 /*Set the output values*/
24935 *ppSendBuffer = pSendBuffer;
24936 *pSize = usSendSize;
24937
24938 return WDI_STATUS_SUCCESS;
24939}
24940
24941/**
24942 @brief Process Update Scan Params function
24943
24944 @param pWDICtx: pointer to the WLAN DAL context
24945 pEventData: pointer to the event information structure
24946
24947 @see
24948 @return Result of the function call
24949*/
24950WDI_Status
24951WDI_PackUpdateScanParamsReqEx
24952(
24953 WDI_ControlBlockType* pWDICtx,
24954 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24955 wpt_uint8** ppSendBuffer,
24956 wpt_uint16* pSize
24957)
24958{
24959 wpt_uint8* pSendBuffer = NULL;
24960 wpt_uint16 usDataOffset = 0;
24961 wpt_uint16 usSendSize = 0;
24962 tUpdateScanParamsEx updateScanParams = {0};
24963
24964
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024965 /*-----------------------------------------------------------------------
24966 Get message buffer
24967 -----------------------------------------------------------------------*/
24968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24969 sizeof(updateScanParams),
24970 &pSendBuffer, &usDataOffset, &usSendSize))||
24971 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24972 {
24973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24974 "Unable to get send buffer in Update Scan Params Ex req %x",
24975 pwdiUpdateScanParams);
24976 WDI_ASSERT(0);
24977 return WDI_STATUS_E_FAILURE;
24978 }
24979
24980 //
24981 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24982 //
24983
24984 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24985 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24986
24987 updateScanParams.ucChannelCount =
24988 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24989 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24990 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24991 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24992
24993 wpalMemoryCopy( updateScanParams.aChannels,
24994 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24995 updateScanParams.ucChannelCount);
24996
24997
24998 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24999 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25000 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25001 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25002 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25003
25004 wpalMemoryCopy( pSendBuffer+usDataOffset,
25005 &updateScanParams,
25006 sizeof(updateScanParams));
25007
25008 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25009 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25010
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025011 /*Set the output values*/
25012 *ppSendBuffer = pSendBuffer;
25013 *pSize = usSendSize;
25014
25015 return WDI_STATUS_SUCCESS;
25016}
25017
25018/**
25019 @brief Process Update Scan Params function
25020
25021 @param pWDICtx: pointer to the WLAN DAL context
25022 pEventData: pointer to the event information structure
25023
25024 @see
25025 @return Result of the function call
25026*/
25027WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025028WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025029(
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 WDI_ControlBlockType* pWDICtx,
25031 WDI_EventInfoType* pEventData
25032)
25033{
25034 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25035 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025036 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025038 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025039
25040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025042 -------------------------------------------------------------------------*/
25043 if (( NULL == pEventData ) ||
25044 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25045 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25046 {
25047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 }
25052
25053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25054 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025055
25056 //
25057 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25058 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025059 if ( pWDICtx->wlanVersion.revision < 1 )
25060 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025061 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025062 &pSendBuffer, &usSendSize);
25063 }
25064 else
25065 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025066 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25067 &pSendBuffer, &usSendSize);
25068 }
25069
25070 if(WDI_STATUS_SUCCESS != wdiStatus)
25071 {
25072 //memory allocation failed
25073 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025074 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025075
Jeff Johnson295189b2012-06-20 16:38:30 -070025076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025077 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025080 wdiUpdateScanParamsCb, pEventData->pUserData,
25081 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025082}
25083
25084/**
25085 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025086
25087 @param pWDICtx: pointer to the WLAN DAL context
25088 pEventData: pointer to the event information structure
25089
Jeff Johnson295189b2012-06-20 16:38:30 -070025090 @see
25091 @return Result of the function call
25092*/
25093WDI_Status
25094WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025095(
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 WDI_ControlBlockType* pWDICtx,
25097 WDI_EventInfoType* pEventData
25098)
25099{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025100 WDI_LowLevelIndType wdiInd;
25101 tpPrefNetwFoundParams pNetwFoundParams;
25102 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025103
25104
25105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 -------------------------------------------------------------------------*/
25108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25109 ( NULL == pEventData->pEventData ))
25110 {
25111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025113 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025115 }
25116
25117 /*-------------------------------------------------------------------------
25118 Extract indication and send it to UMAC
25119 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025120 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25121
25122 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25123 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25124 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25125
25126 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25127 {
25128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25129 "%s: fail to allocate memory", __func__);
25130 return WDI_STATUS_MEM_FAILURE;
25131 }
25132
25133 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25134 (pNetwFoundParams->ssId.length < 32 )?
25135 pNetwFoundParams->ssId.length : 32;
25136 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25137 pNetwFoundParams->ssId.ssId,
25138 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25139 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25140 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25141 pNetwFoundParams->frameLength;
25142 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25143 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25144 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025145
25146 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025147 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025148
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 // DEBUG
25150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25151 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
25152 wdiInd.wdiIndicationType,
25153 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25154 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25155
ltimariu034f7d62013-01-24 18:54:33 -080025156 if ( pWDICtx->wdiLowLevelIndCB )
25157 {
25158 /*Notify UMAC*/
25159 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25160 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025161
25162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025163}
25164
25165/**
25166 @brief Process PNO Rsp function (called when a
25167 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025168
25169 @param pWDICtx: pointer to the WLAN DAL context
25170 pEventData: pointer to the event information structure
25171
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 @see
25173 @return Result of the function call
25174*/
25175WDI_Status
25176WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025177(
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 WDI_ControlBlockType* pWDICtx,
25179 WDI_EventInfoType* pEventData
25180)
25181{
25182 WDI_Status wdiStatus;
25183 eHalStatus halStatus;
25184 WDI_PNOScanCb wdiPNOScanCb = NULL;
25185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25186
25187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 -------------------------------------------------------------------------*/
25190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25191 ( NULL == pEventData->pEventData ))
25192 {
25193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 }
25198
25199
Jeff Johnsone7245742012-09-05 17:12:55 -070025200 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025201
25202 /*-------------------------------------------------------------------------
25203 Extract response and send it to UMAC
25204 -------------------------------------------------------------------------*/
25205 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025206 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025207
25208 /*Notify UMAC*/
25209 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25210
Jeff Johnsone7245742012-09-05 17:12:55 -070025211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025212}/*WDI_ProcessSetPreferredNetworkRsp*/
25213
25214/**
25215 @brief Process RSSI Filter Rsp function (called when a
25216 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025217
25218 @param pWDICtx: pointer to the WLAN DAL context
25219 pEventData: pointer to the event information structure
25220
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 @see
25222 @return Result of the function call
25223*/
25224WDI_Status
25225WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025226(
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 WDI_ControlBlockType* pWDICtx,
25228 WDI_EventInfoType* pEventData
25229)
25230{
25231 WDI_Status wdiStatus;
25232 eHalStatus halStatus;
25233 WDI_RssiFilterCb wdiRssiFilterCb;
25234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25235
25236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 -------------------------------------------------------------------------*/
25239 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25240 ( NULL == pEventData->pEventData ))
25241 {
25242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 }
25247
Jeff Johnsone7245742012-09-05 17:12:55 -070025248 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025249
25250 /*-------------------------------------------------------------------------
25251 Extract response and send it to UMAC
25252 -------------------------------------------------------------------------*/
25253 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025255
25256 /*Notify UMAC*/
25257 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25258
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025260}/*WDI_ProcessSetRssiFilterRsp*/
25261
25262/**
25263 @brief Process Update Scan Params Rsp function (called when a
25264 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025265
25266 @param pWDICtx: pointer to the WLAN DAL context
25267 pEventData: pointer to the event information structure
25268
Jeff Johnson295189b2012-06-20 16:38:30 -070025269 @see
25270 @return Result of the function call
25271*/
25272WDI_Status
25273WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025274(
Jeff Johnson295189b2012-06-20 16:38:30 -070025275 WDI_ControlBlockType* pWDICtx,
25276 WDI_EventInfoType* pEventData
25277)
25278{
25279 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025280 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025282 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25284
25285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 -------------------------------------------------------------------------*/
25288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25289 ( NULL == pEventData->pEventData ))
25290 {
25291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 }
25296
25297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025298 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025299
Jeff Johnsone7245742012-09-05 17:12:55 -070025300 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025301
25302 /*-------------------------------------------------------------------------
25303 Extract response and send it to UMAC
25304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025305 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25306 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025307 sizeof(halUpdScanParams.status));
25308
25309 uStatus = halUpdScanParams.status;
25310
25311 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025312 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025313
25314 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025316
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025318
25319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025320 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025321 halUpdScanParams.status);
25322
25323 /*Notify UMAC*/
25324 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25325
Jeff Johnsone7245742012-09-05 17:12:55 -070025326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025327}
25328#endif // FEATURE_WLAN_SCAN_PNO
25329
25330#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025332WDI_8023MulticastListReq
25333(
25334 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25335 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25336 void* pUserData
25337)
25338{
25339 WDI_EventInfoType wdiEventData;
25340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25341
25342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025343 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025344
25345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 ------------------------------------------------------------------------*/
25348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25349 {
25350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25351 "WDI API call before module is initialized - Fail request");
25352
Jeff Johnsone7245742012-09-05 17:12:55 -070025353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025354 }
25355
25356 /*------------------------------------------------------------------------
25357 Fill in Event data and post to the Main FSM
25358 ------------------------------------------------------------------------*/
25359 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025360 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 wdiEventData.pUserData = pUserData;
25364
25365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25366}
25367
Jeff Johnsone7245742012-09-05 17:12:55 -070025368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025369WDI_ReceiveFilterSetFilterReq
25370(
25371 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25372 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25373 void* pUserData
25374)
25375{
25376 WDI_EventInfoType wdiEventData;
25377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25378
25379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025380 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025381
25382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 ------------------------------------------------------------------------*/
25385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25386 {
25387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25388 "WDI API call before module is initialized - Fail request");
25389
Jeff Johnsone7245742012-09-05 17:12:55 -070025390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 }
25392
25393 /*------------------------------------------------------------------------
25394 Fill in Event data and post to the Main FSM
25395 ------------------------------------------------------------------------*/
25396 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025397 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25398 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025399 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25400 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025401 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025402 wdiEventData.pUserData = pUserData;
25403
25404
25405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25406}
25407
Jeff Johnsone7245742012-09-05 17:12:55 -070025408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025409WDI_FilterMatchCountReq
25410(
25411 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25412 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25413 void* pUserData
25414)
25415{
25416 WDI_EventInfoType wdiEventData;
25417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25418
25419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025420 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025421
25422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 ------------------------------------------------------------------------*/
25425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25426 {
25427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25428 "WDI API call before module is initialized - Fail request");
25429
Jeff Johnsone7245742012-09-05 17:12:55 -070025430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025431 }
25432
25433 /*------------------------------------------------------------------------
25434 Fill in Event data and post to the Main FSM
25435 ------------------------------------------------------------------------*/
25436 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025437 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 wdiEventData.pUserData = pUserData;
25441
25442
25443 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25444}
25445
Jeff Johnsone7245742012-09-05 17:12:55 -070025446WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025447WDI_ReceiveFilterClearFilterReq
25448(
25449 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25450 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25451 void* pUserData
25452)
25453{
25454 WDI_EventInfoType wdiEventData;
25455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25456
25457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025458 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025459
25460 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025461 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025462 ------------------------------------------------------------------------*/
25463 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25464 {
25465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25466 "WDI API call before module is initialized - Fail request");
25467
Jeff Johnsone7245742012-09-05 17:12:55 -070025468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025469 }
25470
25471 /*------------------------------------------------------------------------
25472 Fill in Event data and post to the Main FSM
25473 ------------------------------------------------------------------------*/
25474 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025475 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025477 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025478 wdiEventData.pUserData = pUserData;
25479
25480
25481 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25482}
25483
25484/**
25485 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025486
25487 @param pWDICtx: pointer to the WLAN DAL context
25488 pEventData: pointer to the event information structure
25489
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 @see
25491 @return Result of the function call
25492*/
25493WDI_Status
25494WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025495(
Jeff Johnson295189b2012-06-20 16:38:30 -070025496 WDI_ControlBlockType* pWDICtx,
25497 WDI_EventInfoType* pEventData
25498)
25499{
25500 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25501 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025503 wpt_uint16 usDataOffset = 0;
25504 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025505 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025506 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 wpt_uint8 ucCurrentBSSSesIdx = 0;
25508 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025509
25510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025511 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025512
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025513 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25514 if( NULL == pRcvFltMcAddrListType )
25515 {
25516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25517 "Failed to alloc in WDI_Process8023MulticastListReq");
25518 return WDI_STATUS_E_FAILURE;
25519 }
25520
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 -------------------------------------------------------------------------*/
25524 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025525 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025527 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25529 {
25530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025531 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025532 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 return WDI_STATUS_E_FAILURE;
25535 }
25536
25537 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25538 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25539 &pBSSSes);
25540 if ( NULL == pBSSSes )
25541 {
25542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025543 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025544 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 }
25547
25548 /*-----------------------------------------------------------------------
25549 Get message buffer
25550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25552 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 sizeof(tHalRcvFltMcAddrListType),
25554 &pSendBuffer, &usDataOffset, &usSendSize))||
25555 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25556 {
25557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25558 "Unable to get send buffer in "
25559 "WDI_Process8023MulticastListReq() %x %x %x",
25560 pEventData, pwdiFltPktSetMcListReqParamsType,
25561 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025562 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 }
25566
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025567 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025568 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025569 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025571 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25573 sizeof(tSirMacAddr));
25574 }
25575
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025576 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025578 pRcvFltMcAddrListType,
25579 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025580
25581 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025582 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025583
25584
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025585 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025587 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025592}
25593
25594/**
25595 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025596
25597 @param pWDICtx: pointer to the WLAN DAL context
25598 pEventData: pointer to the event information structure
25599
Jeff Johnson295189b2012-06-20 16:38:30 -070025600 @see
25601 @return Result of the function call
25602*/
25603WDI_Status
25604WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025605(
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 WDI_ControlBlockType* pWDICtx,
25607 WDI_EventInfoType* pEventData
25608)
25609{
25610 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25611 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 wpt_uint16 usDataOffset = 0;
25614 wpt_uint16 usSendSize = 0;
25615 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025616 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 wpt_uint8 ucCurrentBSSSesIdx = 0;
25619 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025620 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25621 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025622
25623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025624 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025625
25626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 -------------------------------------------------------------------------*/
25629 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025630 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025631 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25634 {
25635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 return WDI_STATUS_E_FAILURE;
25639 }
25640
25641 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25642 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25643 &pBSSSes);
25644 if ( NULL == pBSSSes )
25645 {
25646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025647 " %s : Association for this BSSID does not exist",__func__);
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 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25652 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025654 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25655 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25656 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25657
25658 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25659 usSessRcvPktFilterCfgSize);
25660
25661 if(NULL == pSessRcvPktFilterCfg)
25662 {
25663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25664 "%s: Failed to allocate memory for "
25665 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025666 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025667 WDI_ASSERT(0);
25668 return WDI_STATUS_E_FAILURE;
25669 }
25670
25671 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25672
25673 /*-----------------------------------------------------------------------
25674 Get message buffer
25675 -----------------------------------------------------------------------*/
25676
25677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25678 usSessRcvPktFilterCfgSize,
25679 &pSendBuffer, &usDataOffset, &usSendSize))||
25680 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25681 {
25682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25683 "Unable to get send buffer in "
25684 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25685 pEventData, pwdiSetRcvPktFilterReqInfo,
25686 wdiReceiveFilterSetFilterCb);
25687 WDI_ASSERT(0);
25688 wpalMemoryFree(pSessRcvPktFilterCfg);
25689 return WDI_STATUS_E_FAILURE;
25690 }
25691
25692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25693 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25694 usSendSize,pSessRcvPktFilterCfg);
25695
25696 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25697 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25698 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25699 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25700
25701 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25702
25703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25704 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25705 pSessRcvPktFilterCfg->filterType);
25706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25707 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25708 pSessRcvPktFilterCfg->coleasceTime);
25709
25710 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25711 {
25712 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25713 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25714 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25715 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25716 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25717 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25718 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25719 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25720
25721 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25722 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25723 8);
25724 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25725 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25726 8);
25727
25728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25729 "Out:Proto %d Comp Flag %d \n",
25730 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25731 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25732
25733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25734 "Data Offset %d Data Len %d\n",
25735 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25736 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25737
25738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25739 "CData: %d:%d:%d:%d:%d:%d\n",
25740 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25741 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25742 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25743 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25744 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25745 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25746
25747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25748 "MData: %d:%d:%d:%d:%d:%d\n",
25749 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25750 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25751 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25752 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25753 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25754 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25755 }
25756
25757 wpalMemoryCopy( pSendBuffer+usDataOffset,
25758 pSessRcvPktFilterCfg,
25759 usSessRcvPktFilterCfgSize);
25760
25761
25762 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25763 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25764
25765 wpalMemoryFree(pSessRcvPktFilterCfg);
25766
25767 }
25768 /*If SLM_SESSIONIZATION is not supported then do this */
25769 else
25770 {
25771 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25772 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25773 * sizeof(tHalRcvPktFilterParams));
25774
25775 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 usRcvPktFilterCfgSize);
25777
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025778 if(NULL == pRcvPktFilterCfg)
25779 {
25780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25781 "%s: Failed to allocate memory for "
25782 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025783 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025784 WDI_ASSERT(0);
25785 return WDI_STATUS_E_FAILURE;
25786 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025788 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025789
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025790 /*-----------------------------------------------------------------------
25791 Get message buffer
25792 -----------------------------------------------------------------------*/
25793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025794 usRcvPktFilterCfgSize,
25795 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025796 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25797 {
25798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 "Unable to get send buffer in "
25800 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25801 pEventData, pwdiSetRcvPktFilterReqInfo,
25802 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025803 WDI_ASSERT(0);
25804 wpalMemoryFree(pRcvPktFilterCfg);
25805 return WDI_STATUS_E_FAILURE;
25806 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025807
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025809 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 usSendSize,usRcvPktFilterCfgSize);
25811
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025812 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25813 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25814 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25815 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025816
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025818 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025819 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025821 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025822 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025824 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25825 {
25826 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25827 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25828 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25829 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25830 pRcvPktFilterCfg->paramsData[i].dataOffset =
25831 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25832 pRcvPktFilterCfg->paramsData[i].dataLength =
25833 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025834
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025835 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025836 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25837 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025838 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25840 8);
25841
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025844 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25846
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25848 "Data Offset %d Data Len %d\n",
25849 pRcvPktFilterCfg->paramsData[i].dataOffset,
25850 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025851
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25853 "CData: %d:%d:%d:%d:%d:%d\n",
25854 pRcvPktFilterCfg->paramsData[i].compareData[0],
25855 pRcvPktFilterCfg->paramsData[i].compareData[1],
25856 pRcvPktFilterCfg->paramsData[i].compareData[2],
25857 pRcvPktFilterCfg->paramsData[i].compareData[3],
25858 pRcvPktFilterCfg->paramsData[i].compareData[4],
25859 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025860
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25862 "MData: %d:%d:%d:%d:%d:%d\n",
25863 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25864 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25865 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25866 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25867 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25868 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25869 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025870
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025871 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025872 pRcvPktFilterCfg,
25873 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025874
25875
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025876 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25877 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025878
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025880 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025881 wpalMemoryFree(pRcvPktFilterCfg);
25882 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025884 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025888 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025889}
25890
25891/**
25892 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025893
25894 @param pWDICtx: pointer to the WLAN DAL context
25895 pEventData: pointer to the event information structure
25896
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 @see
25898 @return Result of the function call
25899*/
25900WDI_Status
25901WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025902(
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 WDI_ControlBlockType* pWDICtx,
25904 WDI_EventInfoType* pEventData
25905)
25906{
25907 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25908 NULL;
25909 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25910 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025911 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 wpt_uint16 usDataOffset = 0;
25913 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025914 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25915 wpt_uint8 ucCurrentBSSSesIdx = 0;
25916 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025917
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 == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025925 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025927 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25929 {
25930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 }
25935
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025936 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25937 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25938 &pBSSSes);
25939 if ( NULL == pBSSSes )
25940 {
25941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025942 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025943 return WDI_STATUS_E_FAILURE;
25944 }
25945
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 /*-----------------------------------------------------------------------
25947 Get message buffer
25948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25950 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025951 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025953 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025954 {
25955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25956 "Unable to get send buffer in "
25957 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25958 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25959 wdiFilterMatchCountCb);
25960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 }
25963
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025964 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25965 wpalMemoryCopy( pSendBuffer+usDataOffset,
25966 &rcvFltPktMatchCntReqParam,
25967 sizeof(rcvFltPktMatchCntReqParam));
25968
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 //
25970 // Don't need to fill send buffer other than header
25971 //
25972 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025973 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025974
25975
25976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025977 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25980 wdiFilterMatchCountCb,
25981 pEventData->pUserData,
25982 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025983}
25984
25985/**
25986 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025987
25988 @param pWDICtx: pointer to the WLAN DAL context
25989 pEventData: pointer to the event information structure
25990
Jeff Johnson295189b2012-06-20 16:38:30 -070025991 @see
25992 @return Result of the function call
25993*/
25994WDI_Status
25995WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025996(
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 WDI_ControlBlockType* pWDICtx,
25998 WDI_EventInfoType* pEventData
25999)
Jeff Johnsone7245742012-09-05 17:12:55 -070026000{
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26002 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026004 wpt_uint16 usDataOffset = 0;
26005 wpt_uint16 usSendSize = 0;
26006 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026007 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026008 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026009
26010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026011 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026012
26013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 -------------------------------------------------------------------------*/
26016 if (( NULL == pEventData ) ||
26017 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26018 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026019 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026020 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26021 {
26022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 return WDI_STATUS_E_FAILURE;
26026 }
26027
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026028 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026029 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26030 &pBSSSes);
26031 if ( NULL == pBSSSes )
26032 {
26033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026034 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026036 }
26037
26038 /*-----------------------------------------------------------------------
26039 Get message buffer
26040 -----------------------------------------------------------------------*/
26041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026042 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 sizeof(tHalRcvFltPktClearParam),
26044 &pSendBuffer, &usDataOffset, &usSendSize))||
26045 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26046 {
26047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26048 "Unable to get send buffer in "
26049 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26050 pEventData, pwdiRcvFltPktClearReqParamsType,
26051 wdiRcvFltPktClearFilterCb);
26052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 }
26055
26056
26057 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026058 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026060 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026061
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26063 wpalMemoryCopy( pSendBuffer+usDataOffset,
26064 &rcvFltPktClearParam,
26065 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026066
26067 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026069
26070
26071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026072 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026073 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026074 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026075 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026076 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026077}
26078
26079/**
26080 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026081
26082 @param pWDICtx: pointer to the WLAN DAL context
26083 pEventData: pointer to the event information structure
26084
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 @see
26086 @return Result of the function call
26087*/
26088WDI_Status
26089WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026090(
Jeff Johnson295189b2012-06-20 16:38:30 -070026091 WDI_ControlBlockType* pWDICtx,
26092 WDI_EventInfoType* pEventData
26093)
26094{
Jeff Johnson295189b2012-06-20 16:38:30 -070026095 eHalStatus halStatus;
26096 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026097 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26098 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26100
26101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026102 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026103
26104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 -------------------------------------------------------------------------*/
26107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26108 ( NULL == pEventData->pEventData ))
26109 {
26110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026114 }
26115
Jeff Johnsone7245742012-09-05 17:12:55 -070026116 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026117
26118 /*-------------------------------------------------------------------------
26119 Extract response and send it to UMAC
26120 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026121 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26122 {
26123 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26124 pEventData->pEventData,
26125 sizeof(halRcvFltPktSetMcListRsp));
26126
26127 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26128 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26129 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26130 halRcvFltPktSetMcListRsp.bssIdx;
26131 }
26132 else
26133 {
26134 halStatus = *((eHalStatus*)pEventData->pEventData);
26135 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026137
26138 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026139 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026140
Jeff Johnsone7245742012-09-05 17:12:55 -070026141 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026142}
26143
26144/**
26145 @brief Process Set Rsp function (called when a
26146 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026147
26148 @param pWDICtx: pointer to the WLAN DAL context
26149 pEventData: pointer to the event information structure
26150
Jeff Johnson295189b2012-06-20 16:38:30 -070026151 @see
26152 @return Result of the function call
26153*/
26154WDI_Status
26155WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026156(
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 WDI_ControlBlockType* pWDICtx,
26158 WDI_EventInfoType* pEventData
26159)
26160{
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 eHalStatus halStatus;
26162 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026163 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26164 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26166
26167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026168 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026169
26170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 -------------------------------------------------------------------------*/
26173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26174 ( NULL == pEventData->pEventData ))
26175 {
26176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 }
26181
26182 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026184
26185 /*-------------------------------------------------------------------------
26186 Extract response and send it to UMAC
26187 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026188 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26189 {
26190 wpalMemoryCopy( &halSetPktFilterRspParams,
26191 pEventData->pEventData,
26192 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026193
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026194 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26195 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26196 }
26197 else
26198 {
26199 halStatus = *((eHalStatus*)pEventData->pEventData);
26200 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26201 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026203 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026204
Jeff Johnsone7245742012-09-05 17:12:55 -070026205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026206}
26207
26208/**
26209 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026210
26211 @param pWDICtx: pointer to the WLAN DAL context
26212 pEventData: pointer to the event information structure
26213
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 @see
26215 @return Result of the function call
26216*/
26217WDI_Status
26218WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026219(
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 WDI_ControlBlockType* pWDICtx,
26221 WDI_EventInfoType* pEventData
26222)
26223{
Jeff Johnson295189b2012-06-20 16:38:30 -070026224 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026226 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26227 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026228
26229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26230
26231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026232 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026233
26234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 -------------------------------------------------------------------------*/
26237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26238 ( NULL == pEventData->pEventData ))
26239 {
26240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026244 }
26245
Jeff Johnsone7245742012-09-05 17:12:55 -070026246 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026247
26248 /*-------------------------------------------------------------------------
26249 Extract response and send it to UMAC
26250 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026251 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26252 {
26253 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26254 pEventData->pEventData,
26255 sizeof(halRcvFltrPktMatachRsp));
26256
26257 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26258 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26259 }
26260 else
26261 {
26262 halStatus = *((eHalStatus*)pEventData->pEventData);
26263 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26264 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026265
26266 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026267 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026268
Jeff Johnsone7245742012-09-05 17:12:55 -070026269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026270}
26271
26272/**
26273 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026274
26275 @param pWDICtx: pointer to the WLAN DAL context
26276 pEventData: pointer to the event information structure
26277
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 @see
26279 @return Result of the function call
26280*/
26281WDI_Status
26282WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026283(
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 WDI_ControlBlockType* pWDICtx,
26285 WDI_EventInfoType* pEventData
26286)
26287{
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 eHalStatus halStatus;
26289 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026290 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26291 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26293
26294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026295 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026296
26297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 -------------------------------------------------------------------------*/
26300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26301 ( NULL == pEventData->pEventData ))
26302 {
26303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 }
26308
26309 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026310 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026311
26312 /*-------------------------------------------------------------------------
26313 Extract response and send it to UMAC
26314 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026315 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26316 {
26317 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26318 pEventData->pEventData,
26319 sizeof(halRcvFltPktClearRspMsg));
26320
26321 wdiRcvFltPktClearRspParamsType.wdiStatus =
26322 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26323 wdiRcvFltPktClearRspParamsType.bssIdx =
26324 halRcvFltPktClearRspMsg.bssIdx;
26325 }
26326 else
26327 {
26328 halStatus = *((eHalStatus*)pEventData->pEventData);
26329 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26330 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026331
26332 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026333 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026334
Jeff Johnsone7245742012-09-05 17:12:55 -070026335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026336}
26337#endif // WLAN_FEATURE_PACKET_FILTERING
26338
26339/**
26340 @brief Process Shutdown Rsp function
26341 There is no shutdown response comming from HAL
26342 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026343
Jeff Johnson295189b2012-06-20 16:38:30 -070026344 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026345 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026346
26347 @see
26348 @return Result of the function call
26349*/
26350WDI_Status
26351WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026352(
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 WDI_ControlBlockType* pWDICtx,
26354 WDI_EventInfoType* pEventData
26355)
26356{
26357 /*There is no shutdown response comming from HAL - function just kept for
26358 simmetry */
26359 WDI_ASSERT(0);
26360 return WDI_STATUS_SUCCESS;
26361}/*WDI_ProcessShutdownRsp*/
26362
26363/**
26364 @brief WDI_SetPowerParamsReq
26365
Jeff Johnsone7245742012-09-05 17:12:55 -070026366 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026367 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026368
Jeff Johnson295189b2012-06-20 16:38:30 -070026369 wdiPowerParamsCb: callback for passing back the response
26370 of the Set Power Params operation received from the
26371 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026372
Jeff Johnson295189b2012-06-20 16:38:30 -070026373 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026374 callback
26375
Jeff Johnson295189b2012-06-20 16:38:30 -070026376 @return Result of the function call
26377*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026378WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026379WDI_SetPowerParamsReq
26380(
26381 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26382 WDI_SetPowerParamsCb wdiPowerParamsCb,
26383 void* pUserData
26384)
26385{
26386 WDI_EventInfoType wdiEventData;
26387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26388
26389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026391 ------------------------------------------------------------------------*/
26392 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26393 {
26394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26395 "WDI API call before module is initialized - Fail request");
26396
Jeff Johnsone7245742012-09-05 17:12:55 -070026397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026398 }
26399
26400 /*------------------------------------------------------------------------
26401 Fill in Event data and post to the Main FSM
26402 ------------------------------------------------------------------------*/
26403 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026404 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026405 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 wdiEventData.pUserData = pUserData;
26408
26409 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26410}/*WDI_SetPowerParamsReq*/
26411
26412/**
26413 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026414
26415 @param pWDICtx: pointer to the WLAN DAL context
26416 pEventData: pointer to the event information structure
26417
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 @see
26419 @return Result of the function call
26420*/
26421WDI_Status
26422WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026423(
Jeff Johnson295189b2012-06-20 16:38:30 -070026424 WDI_ControlBlockType* pWDICtx,
26425 WDI_EventInfoType* pEventData
26426)
26427{
26428 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26429 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026430 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026431 wpt_uint16 usDataOffset = 0;
26432 wpt_uint16 usSendSize = 0;
26433 tSetPowerParamsType powerParams;
26434
26435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026437 -------------------------------------------------------------------------*/
26438 if (( NULL == pEventData ) ||
26439 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26440 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26441 {
26442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 }
26447
26448 /*-----------------------------------------------------------------------
26449 Get message buffer
26450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026452 sizeof(powerParams),
26453 &pSendBuffer, &usDataOffset, &usSendSize))||
26454 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26455 {
26456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26457 "Unable to get send buffer in Set PNO req %x %x %x",
26458 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026461 }
26462
26463 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026464 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026465 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26466
26467 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026468 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026469 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26470
26471 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026472 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026473 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26474
26475 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026476 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026477 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26478
26479 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026480 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26482
26483 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026484 powerParams.uBETInterval =
26485 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026486
Yue Ma0da19492013-05-13 17:01:29 -070026487 /* MAX LI for modulated DTIM */
26488 powerParams.uMaxLIModulatedDTIM =
26489 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026490
26491 wpalMemoryCopy( pSendBuffer+usDataOffset,
26492 &powerParams,
26493 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026494
26495 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026496 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026497
26498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026499 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26502 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026503}
26504
26505/**
26506 @brief Process Power Params Rsp function (called when a
26507 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026508
26509 @param pWDICtx: pointer to the WLAN DAL context
26510 pEventData: pointer to the event information structure
26511
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 @see
26513 @return Result of the function call
26514*/
26515WDI_Status
26516WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026517(
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 WDI_ControlBlockType* pWDICtx,
26519 WDI_EventInfoType* pEventData
26520)
26521{
26522 WDI_Status wdiStatus;
26523 eHalStatus halStatus;
26524 WDI_SetPowerParamsCb wdiPowerParamsCb;
26525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26526
26527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026529 -------------------------------------------------------------------------*/
26530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26531 ( NULL == pEventData->pEventData ))
26532 {
26533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 }
26538
Jeff Johnsone7245742012-09-05 17:12:55 -070026539 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026540
26541 /*-------------------------------------------------------------------------
26542 Extract response and send it to UMAC
26543 -------------------------------------------------------------------------*/
26544 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026545 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026546
26547 /*Notify UMAC*/
26548 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26549
Jeff Johnsone7245742012-09-05 17:12:55 -070026550 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026551}/*WDI_ProcessSetPowerParamsRsp*/
26552
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026553/**
26554 @brief WDI_dhcpStartInd
26555 Host will send an event to the FW when DHCP is initiated
26556
26557 @param
26558 WDI_DHCPInd: DHCP Indication
26559 @see
26560 @return Result of the function call
26561*/
26562WDI_Status
26563WDI_dhcpStartInd
26564(
26565 WDI_DHCPInd *wdiDHCPInd
26566)
26567{
26568 WDI_EventInfoType wdiEventData;
26569
26570 /*------------------------------------------------------------------------
26571 Sanity Check
26572 ------------------------------------------------------------------------*/
26573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26574 {
26575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26576 "WDI API call before module is initialized - Fail request");
26577
26578 return WDI_STATUS_E_NOT_ALLOWED;
26579 }
26580
26581 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26582 wdiEventData.pEventData = wdiDHCPInd;
26583 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26584 wdiEventData.pCBfnc = NULL;
26585 wdiEventData.pUserData = NULL;
26586
26587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26588}
26589
26590
26591/**
26592 @brief WDI_dhcpStopInd
26593 Host will send an event to the FW when DHCP is completed
26594
26595 @param
26596 WDI_DHCPInd: DHCP Indication
26597 @see
26598 @return Result of the function call
26599*/
26600WDI_Status
26601WDI_dhcpStopInd
26602(
26603 WDI_DHCPInd *wdiDHCPInd
26604)
26605{
26606 WDI_EventInfoType wdiEventData;
26607
26608 /*------------------------------------------------------------------------
26609 Sanity Check
26610 ------------------------------------------------------------------------*/
26611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26612 {
26613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26614 "WDI API call before module is initialized - Fail request");
26615
26616 return WDI_STATUS_E_NOT_ALLOWED;
26617 }
26618
26619 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26620 wdiEventData.pEventData = wdiDHCPInd;
26621 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26622 wdiEventData.pCBfnc = NULL;
26623 wdiEventData.pUserData = NULL;
26624
26625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26626}
26627
26628
26629/**
26630 @brief Process DHCP Start Indication message and post it to HAL
26631
26632 @param pWDICtx: pointer to the WLAN DAL context
26633 pEventData: pointer to the event information structure
26634
26635 @see
26636 @return Result of the function call
26637*/
26638WDI_Status
26639WDI_ProcessDHCPStartInd
26640(
26641 WDI_ControlBlockType* pWDICtx,
26642 WDI_EventInfoType* pEventData
26643)
26644{
26645 wpt_uint8* pSendBuffer = NULL;
26646 wpt_uint16 usDataOffset = 0;
26647 wpt_uint16 usSendSize = 0;
26648 wpt_uint16 usLen = 0;
26649 WDI_DHCPInd* pwdiDHCPInd = NULL;
26650 tDHCPInfo* pDHCPInfo;
26651
26652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26653
26654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26655 "%s", __func__);
26656
26657 /*-------------------------------------------------------------------------
26658 Sanity check
26659 -------------------------------------------------------------------------*/
26660 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26661 {
26662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26663 "%s: Invalid parameters", __func__);
26664 WDI_ASSERT(0);
26665 return WDI_STATUS_E_FAILURE;
26666 }
26667 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26668 /*-----------------------------------------------------------------------
26669 Get message buffer
26670 -----------------------------------------------------------------------*/
26671
26672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26673 WDI_DHCP_START_IND,
26674 sizeof(tDHCPInfo),
26675 &pSendBuffer, &usDataOffset, &usSendSize))||
26676 ( usSendSize < (usDataOffset + usLen )))
26677 {
26678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26679 "Unable to get send buffer in DHCP Start req %p ",
26680 pEventData);
26681 WDI_ASSERT(0);
26682 return WDI_STATUS_E_FAILURE;
26683 }
26684
26685 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26686 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26687 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26688 WDI_MAC_ADDR_LEN);
26689
26690 pWDICtx->pReqStatusUserData = NULL;
26691 pWDICtx->pfncRspCB = NULL;
26692
26693 /*-------------------------------------------------------------------------
26694 Send DHCP Start Indication to HAL
26695 -------------------------------------------------------------------------*/
26696 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26697
26698}/*WDI_ProcessDHCPStartInd*/
26699
26700/**
26701 @brief Process DHCP Stop indication message and post it to HAL
26702
26703 @param pWDICtx: pointer to the WLAN DAL context
26704 pEventData: pointer to the event information structure
26705
26706 @see
26707 @return Result of the function call
26708*/
26709WDI_Status
26710WDI_ProcessDHCPStopInd
26711(
26712 WDI_ControlBlockType* pWDICtx,
26713 WDI_EventInfoType* pEventData
26714)
26715{
26716 wpt_uint8* pSendBuffer = NULL;
26717 wpt_uint16 usDataOffset = 0;
26718 wpt_uint16 usSendSize = 0;
26719 wpt_uint16 usLen = 0;
26720 WDI_DHCPInd* pwdiDHCPInd = NULL;
26721 tDHCPInfo* pDHCPInfo;
26722
26723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26724
26725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26726 "%s", __func__);
26727
26728 /*-------------------------------------------------------------------------
26729 Sanity check
26730 -------------------------------------------------------------------------*/
26731
26732 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26733 {
26734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26735 "%s: Invalid parameters", __func__);
26736 WDI_ASSERT(0);
26737 return WDI_STATUS_E_FAILURE;
26738 }
26739 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26740 /*-----------------------------------------------------------------------
26741 Get message buffer
26742 -----------------------------------------------------------------------*/
26743
26744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26745 WDI_DHCP_STOP_IND,
26746 sizeof(tDHCPInfo),
26747 &pSendBuffer, &usDataOffset, &usSendSize))||
26748 ( usSendSize < (usDataOffset + usLen )))
26749 {
26750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26751 "Unable to get send buffer in DHCP Start req %p ",
26752 pEventData);
26753 WDI_ASSERT(0);
26754 return WDI_STATUS_E_FAILURE;
26755 }
26756
26757 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26758 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26759 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26760 WDI_MAC_ADDR_LEN);
26761
26762 pWDICtx->pReqStatusUserData = NULL;
26763 pWDICtx->pfncRspCB = NULL;
26764 /*-------------------------------------------------------------------------
26765 Send DHCP Stop indication to HAL
26766 -------------------------------------------------------------------------*/
26767 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26768
26769}/*WDI_ProcessDHCPStopInd*/
26770
26771
Jeff Johnson295189b2012-06-20 16:38:30 -070026772#ifdef WLAN_FEATURE_GTK_OFFLOAD
26773/**
26774 @brief WDI_GTKOffloadReq will be called when the upper MAC
26775 wants to set GTK Rekey Counter while in power save. Upon
26776 the call of this API the WLAN DAL will pack and send a
26777 HAL GTK offload request message to the lower RIVA
26778 sub-system if DAL is in state STARTED.
26779
26780 In state BUSY this request will be queued. Request won't
26781 be allowed in any other state.
26782
26783 WDI_PostAssocReq must have been called.
26784
26785 @param pwdiGtkOffloadParams: the GTK offload as specified
26786 by the Device Interface
26787
26788 wdiGtkOffloadCb: callback for passing back the response
26789 of the GTK offload operation received from the device
26790
26791 pUserData: user data will be passed back with the
26792 callback
26793
26794 @see WDI_PostAssocReq
26795 @return Result of the function call
26796*/
26797WDI_Status
26798WDI_GTKOffloadReq
26799(
26800 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26801 WDI_GtkOffloadCb wdiGtkOffloadCb,
26802 void* pUserData
26803)
26804{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026805 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26807
26808 /*------------------------------------------------------------------------
26809 Sanity Check
26810 ------------------------------------------------------------------------*/
26811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26812 {
26813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26814 "WDI API call before module is initialized - Fail request");
26815
26816 return WDI_STATUS_E_NOT_ALLOWED;
26817 }
26818
26819 /*------------------------------------------------------------------------
26820 Fill in Event data and post to the Main FSM
26821 ------------------------------------------------------------------------*/
26822 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26823 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026824 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026825 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26826 wdiEventData.pUserData = pUserData;
26827
26828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26829}
26830
26831
26832/**
26833 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26834 MAC wants to get GTK Rekey Counter while in power save.
26835 Upon the call of this API the WLAN DAL will pack and
26836 send a HAL GTK offload request message to the lower RIVA
26837 sub-system if DAL is in state STARTED.
26838
26839 In state BUSY this request will be queued. Request won't
26840 be allowed in any other state.
26841
26842 WDI_PostAssocReq must have been called.
26843
26844 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26845 Information Message as specified by the
26846 Device Interface
26847
26848 wdiGtkOffloadGetInfoCb: callback for passing back the
26849 response of the GTK offload operation received from the
26850 device
26851
26852 pUserData: user data will be passed back with the
26853 callback
26854
26855 @see WDI_PostAssocReq
26856 @return Result of the function call
26857*/
26858WDI_Status
26859WDI_GTKOffloadGetInfoReq
26860(
26861 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26862 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26863 void* pUserData
26864)
26865{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026866 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26868
26869 /*------------------------------------------------------------------------
26870 Sanity Check
26871 ------------------------------------------------------------------------*/
26872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26873 {
26874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26875 "WDI API call before module is initialized - Fail request");
26876
26877 return WDI_STATUS_E_NOT_ALLOWED;
26878 }
26879
26880 /*------------------------------------------------------------------------
26881 Fill in Event data and post to the Main FSM
26882 ------------------------------------------------------------------------*/
26883 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26884 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26885 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26886 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26887 wdiEventData.pUserData = pUserData;
26888
26889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26890}
26891
26892
26893/**
26894 @brief Process set GTK Offload Request function
26895
26896 @param pWDICtx: pointer to the WLAN DAL context
26897 pEventData: pointer to the event information structure
26898
26899 @see
26900 @return Result of the function call
26901*/
26902WDI_Status
26903WDI_ProcessGTKOffloadReq
26904(
26905 WDI_ControlBlockType* pWDICtx,
26906 WDI_EventInfoType* pEventData
26907)
26908{
26909 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26910 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26911 wpt_uint8* pSendBuffer = NULL;
26912 wpt_uint16 usDataOffset = 0;
26913 wpt_uint16 usSendSize = 0;
26914 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026915 wpt_uint8 ucCurrentSessionId = 0;
26916 WDI_BSSSessionType* pBSSSes = NULL;
26917
Jeff Johnson295189b2012-06-20 16:38:30 -070026918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26919
26920 /*-------------------------------------------------------------------------
26921 Sanity check
26922 -------------------------------------------------------------------------*/
26923 if (( NULL == pEventData ) ||
26924 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26925 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26926 {
26927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026929 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026930 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026931 }
26932
26933 /*-----------------------------------------------------------------------
26934 Get message buffer
26935 -----------------------------------------------------------------------*/
26936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26937 sizeof(gtkOffloadReqParams),
26938 &pSendBuffer, &usDataOffset, &usSendSize))||
26939 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26940 {
26941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26942 "Unable to get send buffer in GTK offload req %x %x %x",
26943 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26944 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026945 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026946 }
26947
26948 //
26949 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26950 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026951 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26952 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26953 &pBSSSes);
26954 if ( NULL == pBSSSes )
26955 {
26956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026957 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026958 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026959 }
26960
26961 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26962
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26964 // Copy KCK
26965 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26966 // Copy KEK
26967 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26968 // Copy KeyReplayCounter
26969 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26970
26971 wpalMemoryCopy( pSendBuffer+usDataOffset,
26972 &gtkOffloadReqParams,
26973 sizeof(gtkOffloadReqParams));
26974
26975 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26976 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26977
26978 /*-------------------------------------------------------------------------
26979 Send Get STA Request to HAL
26980 -------------------------------------------------------------------------*/
26981 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26982 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026983
26984fail:
26985 // Release the message buffer so we don't leak
26986 wpalMemoryFree(pSendBuffer);
26987
26988failRequest:
26989 //WDA should have failure check to avoid the memory leak
26990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026991}
26992
26993
26994/**
26995 @brief Process GTK Offload Get Information Request function
26996
26997 @param pWDICtx: pointer to the WLAN DAL context
26998 pEventData: pointer to the event information structure
26999
27000 @see
27001 @return Result of the function call
27002*/
27003WDI_Status
27004WDI_ProcessGTKOffloadGetInfoReq
27005(
27006 WDI_ControlBlockType* pWDICtx,
27007 WDI_EventInfoType* pEventData
27008)
27009{
27010 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27011 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27012 wpt_uint8* pSendBuffer = NULL;
27013 wpt_uint16 usDataOffset = 0;
27014 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027015 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27016 wpt_uint8 ucCurrentSessionId = 0;
27017 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027018
27019 /*-------------------------------------------------------------------------
27020 Sanity check
27021 -------------------------------------------------------------------------*/
27022 if (( NULL == pEventData ) ||
27023 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27024 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27025 {
27026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027028 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027029 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027030 }
27031
27032 /*-----------------------------------------------------------------------
27033 Get message buffer
27034 -----------------------------------------------------------------------*/
27035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027036 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027037 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027038 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027039 {
27040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27041 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27042 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27043 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027044 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027045 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027046 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27047 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27048 &pBSSSes);
27049 if ( NULL == pBSSSes )
27050 {
27051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027052 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027053 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027054 }
27055 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027056
27057 //
27058 // Don't need to fill send buffer other than header
27059 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027060 wpalMemoryCopy( pSendBuffer+usDataOffset,
27061 &halGtkOffloadGetInfoReqParams,
27062 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027063
27064 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27065 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27066
27067 /*-------------------------------------------------------------------------
27068 Send Get STA Request to HAL
27069 -------------------------------------------------------------------------*/
27070 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27071 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027072fail:
27073 // Release the message buffer so we don't leak
27074 wpalMemoryFree(pSendBuffer);
27075
27076failRequest:
27077 //WDA should have failure check to avoid the memory leak
27078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027079}
27080
27081/**
27082 @brief Process host offload Rsp function (called when a
27083 response is being received over the bus from HAL)
27084
27085 @param pWDICtx: pointer to the WLAN DAL context
27086 pEventData: pointer to the event information structure
27087
27088 @see
27089 @return Result of the function call
27090*/
27091WDI_Status
27092WDI_ProcessGtkOffloadRsp
27093(
27094 WDI_ControlBlockType* pWDICtx,
27095 WDI_EventInfoType* pEventData
27096)
27097{
Jeff Johnson295189b2012-06-20 16:38:30 -070027098 eHalStatus halStatus;
27099 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027100 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27101 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27103
27104 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27105
27106 /*-------------------------------------------------------------------------
27107 Sanity check
27108 -------------------------------------------------------------------------*/
27109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27110 ( NULL == pEventData->pEventData))
27111 {
27112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 WDI_ASSERT(0);
27115 return WDI_STATUS_E_FAILURE;
27116 }
27117
27118 /*-------------------------------------------------------------------------
27119 Extract response and send it to UMAC
27120 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027121 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27122 {
27123 wpalMemoryCopy( &halGtkOffloadRspParams,
27124 pEventData->pEventData,
27125 sizeof(halGtkOffloadRspParams));
27126
27127 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027128 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027129 wdiGtkOffloadRsparams.bssIdx =
27130 halGtkOffloadRspParams.bssIdx;
27131 }
27132 else
27133 {
27134 halStatus = *((eHalStatus*)pEventData->pEventData);
27135 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027137
27138 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027139 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027140
27141 return WDI_STATUS_SUCCESS;
27142}
27143
27144/**
27145 @brief Process GTK Offload Get Information Response function
27146
27147 @param pWDICtx: pointer to the WLAN DAL context
27148 pEventData: pointer to the event information structure
27149
27150 @see
27151 @return Result of the function call
27152*/
27153WDI_Status
27154WDI_ProcessGTKOffloadGetInfoRsp
27155(
27156 WDI_ControlBlockType* pWDICtx,
27157 WDI_EventInfoType* pEventData
27158)
27159{
Jeff Johnson295189b2012-06-20 16:38:30 -070027160 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027161 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027162 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27163 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027164 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027165
27166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27167
27168 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27169
27170 /*-------------------------------------------------------------------------
27171 Sanity check
27172 -------------------------------------------------------------------------*/
27173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27174 ( NULL == pEventData->pEventData ))
27175 {
27176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 WDI_ASSERT(0);
27179 return WDI_STATUS_E_FAILURE;
27180 }
27181
27182 /*-------------------------------------------------------------------------
27183 Extract response and send it to UMAC
27184 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027185 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27186 {
27187 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27188 pEventData->pEventData,
27189 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027191 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027192 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027193 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27194 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27195 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27196 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27197 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27198 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27199 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27200 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027201
27202 wpalMutexAcquire(&pWDICtx->wptMutex);
27203 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27204 &pBSSSes);
27205
27206 if ( NULL == pBSSSes )
27207 {
27208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27209 "Association sequence for this BSS does not exist or "
27210 "association no longer in progress - mysterious HAL response");
27211 wpalMutexRelease(&pWDICtx->wptMutex);
27212 return WDI_STATUS_E_NOT_ALLOWED;
27213 }
27214
27215 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27216 sizeof (wpt_macAddr));
27217 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027218 }
27219 else
27220 {
27221 halStatus = *((eHalStatus*)pEventData->pEventData);
27222 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27223 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 /*Notify UMAC*/
27225 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27226 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027227 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027228
27229 return WDI_STATUS_SUCCESS;
27230}
27231#endif // WLAN_FEATURE_GTK_OFFLOAD
27232
27233#ifdef WLAN_WAKEUP_EVENTS
27234WDI_Status
27235WDI_ProcessWakeReasonInd
27236(
27237 WDI_ControlBlockType* pWDICtx,
27238 WDI_EventInfoType* pEventData
27239)
27240{
27241 WDI_LowLevelIndType *pWdiInd;
27242 tpWakeReasonParams pWakeReasonParams;
27243 wpt_uint32 allocSize = 0;
27244
27245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027246 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027247
27248 /*-------------------------------------------------------------------------
27249 Sanity check
27250 -------------------------------------------------------------------------*/
27251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27252 ( NULL == pEventData->pEventData ))
27253 {
27254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 WDI_ASSERT( 0 );
27257 return WDI_STATUS_E_FAILURE;
27258 }
27259
27260 /*-------------------------------------------------------------------------
27261 Extract indication and send it to UMAC
27262 -------------------------------------------------------------------------*/
27263 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27264
27265 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27266
27267 //Allocate memory for WDI_WakeReasonIndType structure
27268 pWdiInd = wpalMemoryAllocate(allocSize) ;
27269
27270 if(NULL == pWdiInd)
27271 {
27272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27273 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027274 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 WDI_ASSERT(0);
27276 return WDI_STATUS_E_FAILURE;
27277 }
27278
27279 wpalMemoryZero(pWdiInd, allocSize);
27280
27281 /* Fill in the indication parameters*/
27282 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27283 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27284 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27285 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27286 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27287 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27288 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27289 &(pWakeReasonParams->aDataStart[0]),
27290 pWakeReasonParams->ulStoredDataLen);
27291
ltimariu034f7d62013-01-24 18:54:33 -080027292
27293 if ( pWDICtx->wdiLowLevelIndCB )
27294 {
27295 /*Notify UMAC*/
27296 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27297 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027298
27299 //Free memory allocated for WDI_WakeReasonIndType structure
27300 wpalMemoryFree(pWdiInd);
27301
27302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027303 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027304
27305 return WDI_STATUS_SUCCESS;
27306}
27307#endif // WLAN_WAKEUP_EVENTS
27308
27309void WDI_GetWcnssCompiledApiVersion
27310(
27311 WDI_WlanVersionType *pWcnssApiVersion
27312)
27313{
27314 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27315 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27316 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27317 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27318}
27319
27320/**
27321 @brief Process Set TM Level Rsp function (called when a
27322 response is being received over the bus from HAL)
27323
27324 @param pWDICtx: pointer to the WLAN DAL context
27325 pEventData: pointer to the event information structure
27326
27327 @see
27328 @return Result of the function call
27329*/
27330WDI_Status
27331WDI_ProcessSetTmLevelRsp
27332(
27333 WDI_ControlBlockType* pWDICtx,
27334 WDI_EventInfoType* pEventData
27335)
27336{
27337 WDI_Status wdiStatus;
27338 eHalStatus halStatus;
27339 WDI_SetTmLevelCb wdiSetTmLevelCb;
27340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27341
27342 /*-------------------------------------------------------------------------
27343 Sanity check
27344 -------------------------------------------------------------------------*/
27345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27346 ( NULL == pEventData->pEventData ))
27347 {
27348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 WDI_ASSERT(0);
27351 return WDI_STATUS_E_FAILURE;
27352 }
27353
27354 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27355
27356 /*-------------------------------------------------------------------------
27357 Extract response and send it to UMAC
27358 -------------------------------------------------------------------------*/
27359 halStatus = *((eHalStatus*)pEventData->pEventData);
27360 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27361
27362 /*Notify UMAC*/
27363 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27364
27365 return WDI_STATUS_SUCCESS;
27366}/*WDI_ProcessSetTmLevelRsp*/
27367
27368/**
27369 @brief Process Set Thermal Mitigation level Changed request
27370
27371 @param pWDICtx: pointer to the WLAN DAL context
27372 pEventData: pointer to the event information structure
27373
27374 @see
27375 @return Result of the function call
27376*/
27377WDI_Status
27378WDI_ProcessSetTmLevelReq
27379(
27380 WDI_ControlBlockType* pWDICtx,
27381 WDI_EventInfoType* pEventData
27382)
27383{
27384 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27385 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27386 wpt_uint8* pSendBuffer = NULL;
27387 wpt_uint16 usDataOffset = 0;
27388 wpt_uint16 usSendSize = 0;
27389 tSetThermalMitgationType halTmMsg;
27390
27391 /*-------------------------------------------------------------------------
27392 Sanity check
27393 -------------------------------------------------------------------------*/
27394 if (( NULL == pEventData ) ||
27395 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27396 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
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__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 WDI_ASSERT(0);
27401 return WDI_STATUS_E_FAILURE;
27402 }
27403
27404 /*-----------------------------------------------------------------------
27405 Get message buffer
27406 -----------------------------------------------------------------------*/
27407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27408 sizeof(halTmMsg),
27409 &pSendBuffer, &usDataOffset, &usSendSize))||
27410 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27411 {
27412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27413 "Unable to get send buffer in Set PNO req %x %x %x",
27414 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27415 WDI_ASSERT(0);
27416 return WDI_STATUS_E_FAILURE;
27417 }
27418
27419 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27420 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27421
27422 wpalMemoryCopy( pSendBuffer+usDataOffset,
27423 &halTmMsg,
27424 sizeof(halTmMsg));
27425
27426 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27427 pWDICtx->pfncRspCB = NULL;
27428 /*-------------------------------------------------------------------------
27429 Send Get STA Request to HAL
27430 -------------------------------------------------------------------------*/
27431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27432 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27433}
27434
27435/* Fill the value from the global features enabled array to the global capabilities
27436 * bitmap struct
27437 */
27438static void
27439FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27440{
27441 wpt_int8 i;
27442 for (i=0; i<len; i++)
27443 {
27444 setFeatCaps(fCaps, enabledFeat[i]);
27445 }
27446}
27447
27448/**
27449 @brief WDI_featureCapsExchangeReq
27450 Post feature capability bitmap exchange event.
27451 Host will send its own capability to FW in this req and
27452 expect FW to send its capability back as a bitmap in Response
27453
27454 @param
27455
27456 wdiFeatureCapsExchangeCb: callback called on getting the response.
27457 It is kept to mantain similarity between WDI reqs and if needed, can
27458 be used in future. Currently, It is set to NULL
27459
27460 pUserData: user data will be passed back with the
27461 callback
27462
27463 @see
27464 @return Result of the function call
27465*/
27466WDI_Status
27467WDI_featureCapsExchangeReq
27468(
27469 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27470 void* pUserData
27471)
27472{
27473 WDI_EventInfoType wdiEventData;
27474 wpt_int32 fCapsStructSize;
27475
27476 /*------------------------------------------------------------------------
27477 Sanity Check
27478 ------------------------------------------------------------------------*/
27479 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27480 {
27481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27482 "WDI API call before module is initialized - Fail request");
27483
27484 return WDI_STATUS_E_NOT_ALLOWED;
27485 }
27486
27487 /* Allocate memory separately for global variable carrying FW caps */
27488 fCapsStructSize = sizeof(tWlanFeatCaps);
27489 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27490 if ( NULL == gpHostWlanFeatCaps )
27491 {
27492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27493 "Cannot allocate memory for host capability info\n");
27494 WDI_ASSERT(0);
27495 return WDI_STATUS_MEM_FAILURE;
27496 }
27497
27498 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27499
27500 /*------------------------------------------------------------------------
27501 Fill in Event data and post to the Main FSM
27502 ------------------------------------------------------------------------*/
27503 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27504 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027507 gpHostWlanFeatCaps->featCaps[0],
27508 gpHostWlanFeatCaps->featCaps[1],
27509 gpHostWlanFeatCaps->featCaps[2],
27510 gpHostWlanFeatCaps->featCaps[3]
27511 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27513 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027514 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27515 wdiEventData.pEventData = gpHostWlanFeatCaps;
27516 wdiEventData.uEventDataSize = fCapsStructSize;
27517 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27518 wdiEventData.pUserData = pUserData;
27519
27520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27521}
27522
27523/**
Yathishd8713192012-12-10 14:21:35 -080027524 @brief Disable Active mode offload in Host
27525
27526 @param void
27527 @see
27528 @return void
27529*/
27530void
27531WDI_disableCapablityFeature(wpt_uint8 feature_index)
27532{
27533 supportEnabledFeatures[feature_index] = 0;
27534 return;
27535}
27536
27537/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027538 @brief Process Host-FW Capability Exchange Request function
27539
27540 @param pWDICtx: pointer to the WLAN DAL context
27541 pEventData: pointer to the event information structure
27542
27543 @see
27544 @return Result of the function call
27545*/
27546WDI_Status
27547WDI_ProcessFeatureCapsExchangeReq
27548(
27549 WDI_ControlBlockType* pWDICtx,
27550 WDI_EventInfoType* pEventData
27551)
27552{
27553 wpt_uint8* pSendBuffer = NULL;
27554 wpt_uint16 usDataOffset = 0;
27555 wpt_uint16 usSendSize = 0;
27556 wpt_uint16 usLen = 0;
27557
27558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27559
27560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027561 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027562
27563 /*-------------------------------------------------------------------------
27564 Sanity check
27565 -------------------------------------------------------------------------*/
27566 /* Call back function is NULL since not required for cap exchange req */
27567 if (( NULL == pEventData ) ||
27568 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27569 {
27570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027572 WDI_ASSERT(0);
27573 return WDI_STATUS_E_FAILURE;
27574 }
27575
27576 /*-----------------------------------------------------------------------
27577 Get message buffer
27578 -----------------------------------------------------------------------*/
27579 usLen = sizeof(tWlanFeatCaps);
27580
27581 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27582 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27583 usLen,
27584 &pSendBuffer, &usDataOffset, &usSendSize))||
27585 ( usSendSize < (usDataOffset + usLen )))
27586 {
27587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27588 "Unable to get send buffer in feat caps exchange req %x %x",
27589 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27590 WDI_ASSERT(0);
27591 return WDI_STATUS_E_FAILURE;
27592 }
27593
27594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027595 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027596 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27597 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27598 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27599 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27600 );
27601
27602 /* Copy host caps after the offset in the send buffer */
27603 wpalMemoryCopy( pSendBuffer+usDataOffset,
27604 (tWlanFeatCaps *)pEventData->pEventData,
27605 usLen);
27606
27607 /*-------------------------------------------------------------------------
27608 Send Start Request to HAL
27609 -------------------------------------------------------------------------*/
27610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27611 (WDI_StartRspCb)pEventData->pCBfnc,
27612 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27613
27614}/*WDI_ProcessFeatureCapsExchangeReq*/
27615
27616/**
27617 @brief Process Host-FW Capability Exchange Response function
27618
27619 @param pWDICtx: pointer to the WLAN DAL context
27620 pEventData: pointer to the event information structure
27621
27622 @see
27623 @return Result of the function call
27624*/
27625WDI_Status
27626WDI_ProcessFeatureCapsExchangeRsp
27627(
27628 WDI_ControlBlockType* pWDICtx,
27629 WDI_EventInfoType* pEventData
27630)
27631{
27632 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27633 wpt_int32 fCapsStructSize;
27634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27635
27636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027637 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027638
27639 /*-------------------------------------------------------------------------
27640 Sanity check
27641 -------------------------------------------------------------------------*/
27642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27643 ( NULL == pEventData->pEventData ))
27644 {
27645 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027648 WDI_ASSERT(0);
27649 return WDI_STATUS_E_FAILURE;
27650 }
27651
27652 /* Allocate memory separately for global variable carrying FW caps */
27653 fCapsStructSize = sizeof(tWlanFeatCaps);
27654 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27655 if ( NULL == gpFwWlanFeatCaps )
27656 {
27657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27658 "Cannot allocate memory for host capability info\n");
27659 WDI_ASSERT(0);
27660 return WDI_STATUS_MEM_FAILURE;
27661 }
27662
27663 /*-------------------------------------------------------------------------
27664 Unpack HAL Response Message - the header was already extracted by the
27665 main Response Handling procedure
27666 -------------------------------------------------------------------------*/
27667 /*-------------------------------------------------------------------------
27668 Extract response and send it to UMAC
27669 -------------------------------------------------------------------------*/
27670
27671 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27672 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027674 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027675 gpFwWlanFeatCaps->featCaps[0],
27676 gpFwWlanFeatCaps->featCaps[1],
27677 gpFwWlanFeatCaps->featCaps[2],
27678 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027679 );
27680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27681 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027682 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27683
27684 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27685 if (wdiFeatureCapsExchangeCb != NULL)
27686 wdiFeatureCapsExchangeCb(NULL, NULL);
27687
27688 return WDI_STATUS_SUCCESS;
27689}
27690
Mohit Khanna4a70d262012-09-11 16:30:12 -070027691#ifdef WLAN_FEATURE_11AC
27692WDI_Status
27693WDI_ProcessUpdateVHTOpModeRsp
27694(
27695 WDI_ControlBlockType* pWDICtx,
27696 WDI_EventInfoType* pEventData
27697)
27698{
27699 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27700 WDI_Status wdiStatus;
27701 eHalStatus halStatus;
27702
27703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27704
27705 /*-------------------------------------------------------------------------
27706 Sanity check
27707 -------------------------------------------------------------------------*/
27708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27709 ( NULL == pEventData->pEventData))
27710 {
27711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027712 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027713 WDI_ASSERT(0);
27714 return WDI_STATUS_E_FAILURE;
27715 }
27716 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27717
27718 /*-------------------------------------------------------------------------
27719 Extract response and send it to UMAC
27720 -------------------------------------------------------------------------*/
27721 halStatus = *((eHalStatus*)pEventData->pEventData);
27722 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27723
27724 /*Notify UMAC*/
27725 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27726
27727 return WDI_STATUS_SUCCESS;
27728}
27729#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027730/**
27731 @brief WDI_getHostWlanFeatCaps
27732 WDI API that returns whether the feature passed to it as enum value in
27733 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27734 variable storing host capability bitmap to find this. This can be used by
27735 other moduels to decide certain things like call different APIs based on
27736 whether a particular feature is supported.
27737
27738 @param
27739
27740 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27741
27742 @see
27743 @return
27744 0 - if the feature is NOT supported in host
27745 any non-zero value - if the feature is SUPPORTED in host.
27746*/
27747wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27748{
27749 wpt_uint8 featSupported = 0;
27750 if (gpHostWlanFeatCaps != NULL)
27751 {
27752 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27753 }
27754 else
27755 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027757 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027758 }
27759 return featSupported;
27760}
27761
27762/**
27763 @brief WDI_getFwWlanFeatCaps
27764 WDI API that returns whether the feature passed to it as enum value in
27765 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27766 variable storing host capability bitmap to find this. This can be used by
27767 other moduels to decide certain things like call different APIs based on
27768 whether a particular feature is supported.
27769
27770 @param
27771
27772 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27773 in wlan_hal_msg.h.
27774
27775 @see
27776 @return
27777 0 - if the feature is NOT supported in FW
27778 any non-zero value - if the feature is SUPPORTED in FW.
27779*/
27780wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27781{
27782 wpt_uint8 featSupported = 0;
27783 if (gpFwWlanFeatCaps != NULL)
27784 {
27785 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27786 }
27787 else
27788 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027790 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027791 }
27792 return featSupported;
27793}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027794
27795#ifdef WLAN_FEATURE_11AC
27796WDI_Status
27797WDI_ProcessUpdateVHTOpModeReq
27798(
27799 WDI_ControlBlockType* pWDICtx,
27800 WDI_EventInfoType* pEventData
27801)
27802{
27803 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27804 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27805 wpt_uint8* pSendBuffer = NULL;
27806 wpt_uint16 usDataOffset = 0;
27807 wpt_uint16 usSendSize = 0;
27808
27809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27810
27811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027812 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027813
27814 /*-------------------------------------------------------------------------
27815 Sanity check
27816 -------------------------------------------------------------------------*/
27817 if (( NULL == pEventData ) ||
27818 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27819 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27820 {
27821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027822 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027823 WDI_ASSERT(0);
27824 return WDI_STATUS_E_FAILURE;
27825 }
27826
27827 /*-----------------------------------------------------------------------
27828 Get message buffer
27829 -----------------------------------------------------------------------*/
27830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27831 sizeof(WDI_UpdateVHTOpMode),
27832 &pSendBuffer, &usDataOffset, &usSendSize))||
27833 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27834 {
27835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27836 "Unable to get send buffer in update vht opMode req");
27837 WDI_ASSERT(0);
27838 return WDI_STATUS_E_FAILURE;
27839 }
27840
27841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27842 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27843
27844 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27845 sizeof(WDI_UpdateVHTOpMode));
27846
27847 /*-------------------------------------------------------------------------
27848 Send Start Request to HAL
27849 -------------------------------------------------------------------------*/
27850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27851 wdiVHTOpModeCb,
27852 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27853
27854}
27855
27856WDI_Status
27857WDI_UpdateVHTOpModeReq
27858(
27859 WDI_UpdateVHTOpMode *pData,
27860 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27861 void* pUserData
27862)
27863{
27864 WDI_EventInfoType wdiEventData;
27865
27866 /*------------------------------------------------------------------------
27867 Sanity Check
27868 ------------------------------------------------------------------------*/
27869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27870 {
27871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27872 "WDI API call before module is initialized - Fail request");
27873
27874 return WDI_STATUS_E_NOT_ALLOWED;
27875 }
27876
27877 /*------------------------------------------------------------------------
27878 Fill in Event data and post to the Main FSM
27879 ------------------------------------------------------------------------*/
27880 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27881 wdiEventData.pEventData = pData;
27882 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27883 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27884 wdiEventData.pUserData = pUserData;
27885
27886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27887 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27888
27889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27890
27891}
27892#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027893
27894/**
27895 @brief WDI_TransportChannelDebug -
27896 Display DXE Channel debugging information
27897 User may request to display DXE channel snapshot
27898 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027899
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027900 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027901 @param enableStallDetect : Enable stall detect feature
27902 This feature will take effect to data performance
27903 Not integrate till fully verification
27904 @see
27905 @return none
27906*/
27907void WDI_TransportChannelDebug
27908(
27909 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027910 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027911)
27912{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027913 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027914 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027915}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027916/**
27917 @brief WDI_SsrTimerCB
27918 Callback function for SSR timer, if this is called then the graceful
27919 shutdown for Riva did not happen.
27920
27921 @param pUserData : user data to timer
27922
27923 @see
27924 @return none
27925*/
27926void
27927WDI_SsrTimerCB
27928(
27929 void *pUserData
27930)
27931{
27932 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27934
27935 if (NULL == pWDICtx )
27936 {
27937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027938 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027939 WDI_ASSERT(0);
27940 return;
27941 }
27942 wpalRivaSubystemRestart();
27943
27944 return;
27945
27946}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027947
27948/**
27949 @brief WDI_SetEnableSSR -
27950 This API is called to enable/disable SSR on WDI timeout.
27951
27952 @param enableSSR : enable/disable SSR
27953
27954 @see
27955 @return none
27956*/
27957void WDI_SetEnableSSR(wpt_boolean enableSSR)
27958{
27959 gWDICb.bEnableSSR = enableSSR;
27960}
Leo Chang00bc9132013-08-01 19:21:11 -070027961
27962
27963#ifdef FEATURE_WLAN_LPHB
27964/**
27965 @brief WDI_ProcessLphbWaitTimeoutInd -
27966 This function will be invoked when FW detects low power
27967 heart beat failure
27968
27969 @param pWDICtx : wdi context
27970 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070027971 @see
27972 @return Result of the function call
27973*/
27974WDI_Status
27975WDI_ProcessLphbWaitTimeoutInd
27976(
27977 WDI_ControlBlockType* pWDICtx,
27978 WDI_EventInfoType* pEventData
27979)
27980{
27981 WDI_LowLevelIndType wdiInd;
27982 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27984
27985 /*-------------------------------------------------------------------------
27986 Sanity check
27987 -------------------------------------------------------------------------*/
27988 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27989 (NULL == pEventData->pEventData))
27990 {
27991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27992 "%s: Invalid parameters", __func__);
27993 WDI_ASSERT(0);
27994 return WDI_STATUS_E_FAILURE;
27995 }
27996
27997 /*-------------------------------------------------------------------------
27998 Extract indication and send it to UMAC
27999 -------------------------------------------------------------------------*/
28000 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
28001
28002 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
28003 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
28004 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
28005 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
28006 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
28007 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
28008 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
28009 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
28010 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
28011 /*Notify UMAC*/
28012 if (pWDICtx->wdiLowLevelIndCB)
28013 {
28014 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28015 }
28016
28017 return WDI_STATUS_SUCCESS;
28018}
28019
28020/**
28021 @brief WDI_ProcessLphbCfgRsp -
28022 LPHB configuration response from FW
28023
28024 @param pWDICtx : wdi context
28025 pEventData : indication data
28026
28027 @see
28028 @return Result of the function call
28029*/
28030WDI_Status WDI_ProcessLphbCfgRsp
28031(
28032 WDI_ControlBlockType* pWDICtx,
28033 WDI_EventInfoType* pEventData
28034)
28035{
28036 WDI_Status wdiStatus;
28037 eHalStatus halStatus;
28038 WDI_LphbCfgCb wdiLphbCfgCb;
28039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28040
28041 /*-------------------------------------------------------------------------
28042 Sanity check
28043 -------------------------------------------------------------------------*/
28044 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28045 (NULL == pEventData->pEventData))
28046 {
28047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28048 "%s: Invalid parameters", __func__);
28049 WDI_ASSERT(0);
28050 return WDI_STATUS_E_FAILURE;
28051 }
28052
28053 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28054
28055 /*-------------------------------------------------------------------------
28056 Extract response and send it to UMAC
28057 -------------------------------------------------------------------------*/
28058 halStatus = *((eHalStatus*)pEventData->pEventData);
28059 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28060
28061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28062 "LPHB Cfg Rsp Return status %d", wdiStatus);
28063 /*Notify UMAC*/
28064 if (NULL != wdiLphbCfgCb)
28065 {
28066 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28067 }
28068
28069 return WDI_STATUS_SUCCESS;
28070}
28071
28072/**
28073 @brief WDI_ProcessLPHBConfReq -
28074 LPHB configuration request to FW
28075
28076 @param pWDICtx : wdi context
28077 pEventData : indication data
28078
28079 @see
28080 @return none
28081*/
28082WDI_Status WDI_ProcessLPHBConfReq
28083(
28084 WDI_ControlBlockType* pWDICtx,
28085 WDI_EventInfoType* pEventData
28086)
28087{
28088 WDI_LPHBReq *pLphbReqParams;
28089 WDI_Status wdiStatus;
28090 wpt_uint8* pSendBuffer = NULL;
28091 wpt_uint16 usDataOffset = 0;
28092 wpt_uint16 usSendSize = 0;
28093 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28095
28096 /*-------------------------------------------------------------------------
28097 Sanity check
28098 -------------------------------------------------------------------------*/
28099 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28100 {
28101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28102 "%s: Invalid parameters in Suspend ind",__func__);
28103 WDI_ASSERT(0);
28104 return WDI_STATUS_E_FAILURE;
28105 }
28106
28107 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28108
28109 /*-----------------------------------------------------------------------
28110 Get message buffer
28111 -----------------------------------------------------------------------*/
28112 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28113 WDI_LPHB_CFG_REQ,
28114 sizeof(tHalLowPowerHeartBeatReqMsg),
28115 &pSendBuffer, &usDataOffset, &usSendSize))||
28116 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28117 {
28118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28119 "Unable to get send buffer in LPHB Ind ");
28120 WDI_ASSERT(0);
28121 return WDI_STATUS_E_FAILURE;
28122 }
28123
28124 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28125 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28126
28127 halLphbReqRarams->lowPowerHeartBeatCmdType =
28128 (tANI_U16)(++pLphbReqParams->cmd);
28129 switch ((tANI_U16)pLphbReqParams->cmd)
28130 {
28131 case WDI_LPHB_SET_EN_PARAMS_INDID:
28132 halLphbReqRarams->sessionIdx =
28133 pLphbReqParams->params.lphbEnableReq.session;
28134 halLphbReqRarams->options.control.heartBeatEnable =
28135 pLphbReqParams->params.lphbEnableReq.enable;
28136 halLphbReqRarams->options.control.heartBeatType =
28137 pLphbReqParams->params.lphbEnableReq.item;
28138 break;
28139
28140 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28141 halLphbReqRarams->sessionIdx =
28142 pLphbReqParams->params.lphbTcpParamReq.session;
28143 halLphbReqRarams->options.tcpParams.timeOutSec =
28144 pLphbReqParams->params.lphbTcpParamReq.timeout;
28145 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28146 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28147 sizeof(v_U32_t));
28148 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28149 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28150 sizeof(v_U32_t));
28151
28152 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28153 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28154 WDI_MAC_ADDR_LEN);
28155
28156 halLphbReqRarams->options.tcpParams.hostPort =
28157 pLphbReqParams->params.lphbTcpParamReq.src_port;
28158 halLphbReqRarams->options.tcpParams.destPort =
28159 pLphbReqParams->params.lphbTcpParamReq.dst_port;
28160 break;
28161
28162 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28163 halLphbReqRarams->sessionIdx =
28164 pLphbReqParams->params.lphbTcpFilterReq.session;
28165 halLphbReqRarams->options.tcpUdpFilter.offset =
28166 pLphbReqParams->params.lphbTcpFilterReq.offset;
28167 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28168 pLphbReqParams->params.lphbTcpFilterReq.length;
28169 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28170 pLphbReqParams->params.lphbTcpFilterReq.filter,
28171 WDI_LPHB_FILTER_LEN);
28172 break;
28173
28174 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28175 halLphbReqRarams->sessionIdx =
28176 pLphbReqParams->params.lphbUdpParamReq.session;
28177 halLphbReqRarams->options.udpParams.timeOutSec =
28178 pLphbReqParams->params.lphbUdpParamReq.timeout;
28179 halLphbReqRarams->options.udpParams.timePeriodSec =
28180 pLphbReqParams->params.lphbUdpParamReq.interval;
28181 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28182 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28183 sizeof(v_U32_t));
28184 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28185 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28186 sizeof(v_U32_t));
28187
28188 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28189 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28190 WDI_MAC_ADDR_LEN);
28191
28192 halLphbReqRarams->options.udpParams.hostPort =
28193 pLphbReqParams->params.lphbUdpParamReq.src_port;
28194 halLphbReqRarams->options.udpParams.destPort =
28195 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28196 break;
28197
28198 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28199 halLphbReqRarams->sessionIdx =
28200 pLphbReqParams->params.lphbUdpFilterReq.session;
28201 halLphbReqRarams->options.tcpUdpFilter.offset =
28202 pLphbReqParams->params.lphbUdpFilterReq.offset;
28203 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28204 pLphbReqParams->params.lphbUdpFilterReq.length;
28205 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28206 pLphbReqParams->params.lphbUdpFilterReq.filter,
28207 WDI_LPHB_FILTER_LEN);
28208 break;
28209
28210 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28211 /* NA */
28212 break;
28213
28214 default:
28215 break;
28216 }
28217
28218 /*-------------------------------------------------------------------------
28219 Send Suspend Request to HAL
28220 -------------------------------------------------------------------------*/
28221 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28222 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28223
28224 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28225 usSendSize, pWDICtx->pfncRspCB,
28226 pWDICtx->pReqStatusUserData,
28227 WDI_LPHB_CFG_RESP);
28228
28229 return wdiStatus;
28230}
28231
28232/**
28233 @brief WDI_LPHBConfReq -
28234 LPHB configuration request API
28235
28236 @param lphbconfParam : configuration parameter
28237 usrData : client context
28238 lphbCfgCb : callback function pointer
28239
28240 @see
28241 @return Success or fail status code
28242*/
28243WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28244 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28245{
28246 WDI_EventInfoType wdiEventData;
28247
28248 /*------------------------------------------------------------------------
28249 Sanity Check
28250 ------------------------------------------------------------------------*/
28251 if (eWLAN_PAL_FALSE == gWDIInitialized)
28252 {
28253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28254 "WDI API call before module is initialized - Fail request");
28255
28256 return WDI_STATUS_E_NOT_ALLOWED;
28257 }
28258
28259 /*------------------------------------------------------------------------
28260 Fill in Event data and post to the Main FSM
28261 ------------------------------------------------------------------------*/
28262 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28263 wdiEventData.pEventData = lphbconfParam;
28264 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28265 wdiEventData.pCBfnc = lphbCfgCb;
28266 wdiEventData.pUserData = usrData;
28267
28268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28269}
28270#endif /* FEATURE_WLAN_LPHB */
28271
Ravi Joshi96d77342013-07-23 08:37:49 -070028272/**
28273 @brief WDI_ProcessIbssPeerInactivityInd
28274 Process peer inactivity indication coming from HAL
28275
28276 @param pWDICtx: pointer to the WLAN DAL context
28277 pEventData: pointer to the event information structure
28278 @see
28279 @return Result of the function call
28280*/
28281WDI_Status
28282WDI_ProcessIbssPeerInactivityInd
28283(
28284 WDI_ControlBlockType* pWDICtx,
28285 WDI_EventInfoType* pEventData
28286)
28287{
28288 WDI_LowLevelIndType wdiInd;
28289 tIbssPeerInactivityIndMsg halIbssIndMsg;
28290
28291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28292
28293 /*-------------------------------------------------------------------------
28294 Sanity check
28295 -------------------------------------------------------------------------*/
28296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28297 ( NULL == pEventData->pEventData ))
28298 {
28299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28300 "%s: Invalid parameters", __func__);
28301 WDI_ASSERT( 0 );
28302 return WDI_STATUS_E_FAILURE;
28303 }
28304
28305 /*-------------------------------------------------------------------------
28306 Extract indication and send it to UMAC
28307 -------------------------------------------------------------------------*/
28308 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28309 pEventData->pEventData,
28310 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28311
28312 /*Fill in the indication parameters*/
28313 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28314
28315 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28316 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28317
28318 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28319 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28320
28321 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28322 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28323 sizeof(tSirMacAddr));
28324
28325 /*Notify UMAC*/
28326 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28327
28328 return WDI_STATUS_SUCCESS;
28329
28330} /*WDI_ProcessIbssPeerInactivityInd*/