blob: 6814ae59e0ca8e75d0682ffcf4a65b4325d03943 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700131 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700136 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700142 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700146 ,FEATURE_NOT_SUPPORTED //9
147 ,FEATURE_NOT_SUPPORTED //10
148 ,FEATURE_NOT_SUPPORTED //11
149 ,FEATURE_NOT_SUPPORTED //12
150 ,FEATURE_NOT_SUPPORTED //13
151 ,FEATURE_NOT_SUPPORTED //14
152 ,FEATURE_NOT_SUPPORTED //15
153 ,FEATURE_NOT_SUPPORTED //16
154 ,FEATURE_NOT_SUPPORTED //17
155 ,FEATURE_NOT_SUPPORTED //18
156 ,FEATURE_NOT_SUPPORTED //19
157 ,FEATURE_NOT_SUPPORTED //20
158 ,FEATURE_NOT_SUPPORTED //21
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700159#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Ravi Joshi96d77342013-07-23 08:37:49 -0700160 ,WLAN_ROAM_SCAN_OFFLOAD //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700161#else
162 ,FEATURE_NOT_SUPPORTED
163#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700164 ,FEATURE_NOT_SUPPORTED //23
165 ,FEATURE_NOT_SUPPORTED //24
166 ,FEATURE_NOT_SUPPORTED //25
167 ,IBSS_HEARTBEAT_OFFLOAD //26
Mohit Khannac0b992f2012-12-04 15:08:18 -0800168 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700169
170/*--------------------------------------------------------------------------
171 WLAN DAL State Machine
172 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700173WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700174{
175 /*WDI_INIT_ST*/
176 {{
177 WDI_MainStart, /*WDI_START_EVENT*/
178 NULL, /*WDI_STOP_EVENT*/
179 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
180 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
181 WDI_MainClose, /*WDI_CLOSE_EVENT*/
182 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
183 }},
184
185 /*WDI_STARTED_ST*/
186 {{
187 WDI_MainStartStarted, /*WDI_START_EVENT*/
188 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
189 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
190 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
191 NULL, /*WDI_CLOSE_EVENT*/
192 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
193 }},
194
195 /*WDI_STOPPED_ST*/
196 {{
197 WDI_MainStart, /*WDI_START_EVENT*/
198 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
199 NULL, /*WDI_REQUEST_EVENT*/
200 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
201 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700202 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700203 }},
204
205 /*WDI_BUSY_ST*/
206 {{
207 WDI_MainStartBusy, /*WDI_START_EVENT*/
208 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
209 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
210 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
211 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
212 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
213 }}
214};
215
Jeff Johnsone7245742012-09-05 17:12:55 -0700216/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700217 DAL Request Processing Array - the functions in this table will only be
218 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700219 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700220 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700221WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700222{
223 /*INIT*/
224 WDI_ProcessStartReq, /* WDI_START_REQ */
225 WDI_ProcessStopReq, /* WDI_STOP_REQ */
226 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
227
228 /*SCAN*/
229 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
230 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
231 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
232 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
233
234 /*ASSOCIATION*/
235 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
236 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
237 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
238 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
239 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
240
241 /* Security */
242 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
243 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
244 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
245 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
246
247 /* QoS and BA APIs */
248 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
249 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
250 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
251 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
252 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
253
254 /* Miscellaneous Control APIs */
255 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
256 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
257 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
258 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
259 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
260
261 /*BA APIs*/
262 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
263 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
264
265 /*Beacon processing APIs*/
266 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
267 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
268
269 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
270 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
271 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
272 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700273 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 /* PowerSave APIs */
275 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
276 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
277 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
278 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
279 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
280 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
281 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
282 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
283 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
284 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
285 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
286 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
287 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
288 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
289 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
290 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
291 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
292 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
293 /*NV Download APIs*/
294 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
295 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
296 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
297#ifdef WLAN_FEATURE_VOWIFI_11R
298 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
299#else
300 NULL,
301#endif /* WLAN_FEATURE_VOWIFI_11R */
302 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
303 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700304 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700305
306#ifdef FEATURE_OEM_DATA_SUPPORT
307 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
308#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700309 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700310#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700312
313 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700314
315#ifdef FEATURE_WLAN_SCAN_PNO
316 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
317 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
318 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
319#else
320 NULL,
321 NULL,
322 NULL,
323#endif /* FEATURE_WLAN_SCAN_PNO */
324
325 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700326
Jeff Johnson295189b2012-06-20 16:38:30 -0700327#ifdef WLAN_FEATURE_PACKET_FILTERING
328 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700329 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700330 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700331 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700332 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700333 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700334 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700335 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700336#else
337 NULL,
338 NULL,
339 NULL,
340 NULL,
341#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700342 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
344 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
345
346 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
347#ifdef FEATURE_WLAN_CCX
348 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
349#else
350 NULL,
351#endif
352
353#ifdef WLAN_FEATURE_GTK_OFFLOAD
354 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
355 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
356#else
357 NULL,
358 NULL,
359#endif // WLAN_FEATURE_GTK_OFFLOAD
360
361 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
362 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700363#ifdef WLAN_FEATURE_11AC
364 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800365#else
366 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700367#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800368#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
369 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
370#else
schangd82195a2013-03-13 18:41:24 -0700371 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800372#endif
schangd82195a2013-03-13 18:41:24 -0700373 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700374#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700375 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700376#else
377 NULL,
378#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530379#ifdef FEATURE_WLAN_TDLS
380 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
381#else
382 NULL,
383#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700384#ifdef FEATURE_WLAN_LPHB
385 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
386#else
387 NULL,
388#endif /* FEATURE_WLAN_LPHB */
schangd82195a2013-03-13 18:41:24 -0700389 /*-------------------------------------------------------------------------
390 Indications
391 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700392 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800393 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530394 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
395 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700396#ifdef WLAN_FEATURE_11W
397 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
398#else
399 NULL,
400#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700401};
402
403
Jeff Johnsone7245742012-09-05 17:12:55 -0700404/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 DAL Request Processing Array - the functions in this table will only be
406 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700407 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700409WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700410{
411 /*INIT*/
412 WDI_ProcessStartRsp, /* WDI_START_RESP */
413 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
414 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
415
416 /*SCAN*/
417 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
418 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
419 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
420 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
421
422 /* ASSOCIATION*/
423 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
424 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
425 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
426 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
427 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
428
429 /* Security */
430 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
431 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
432 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
433 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
434
435 /* QoS and BA APIs */
436 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
437 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
438 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
439 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
440 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
441
442 /* Miscellaneous Control APIs */
443 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
444 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
445 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
446 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
447 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
448
449 /* BA APIs*/
450 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
451 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700452
Jeff Johnson295189b2012-06-20 16:38:30 -0700453 /* IBSS APIs*/
454 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
455 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
456
457 /*Soft AP APIs*/
458 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
459 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
460 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
461 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
462
463 /* PowerSave APIs */
464 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
465 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
466 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
467 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
468 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
469 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
470 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
471 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
472 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
473 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
474 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
475 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
476 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
477 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
478 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
479 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
480 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
481 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700482
Jeff Johnson295189b2012-06-20 16:38:30 -0700483
484 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
485
486 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
487 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
488#ifdef WLAN_FEATURE_VOWIFI_11R
489 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
490#else
491 NULL,
492#endif /* WLAN_FEATURE_VOWIFI_11R */
493 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
494 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495#ifdef FEATURE_OEM_DATA_SUPPORT
496 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
497#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700498 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700499#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700500 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
501
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700503
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700505
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#ifdef FEATURE_WLAN_SCAN_PNO
509 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
510 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
511 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
512#else
513 NULL,
514 NULL,
515 NULL,
516#endif // FEATURE_WLAN_SCAN_PNO
517
518 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
519
520 /*---------------------------------------------------------------------
521 Indications
522 ---------------------------------------------------------------------*/
523#ifdef WLAN_FEATURE_PACKET_FILTERING
524 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700525 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700529 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700530 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700532#else
533 NULL,
534 NULL,
535 NULL,
536 NULL,
537#endif // WLAN_FEATURE_PACKET_FILTERING
538
539 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
540 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
541
542 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
543#ifdef FEATURE_WLAN_CCX
544 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
545#else
546 NULL,
547#endif
548
549#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
551 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552#else
553 NULL,
554 NULL,
555#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
557 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700558#ifdef WLAN_FEATURE_11AC
559 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700560#else
561 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700562#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800563#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
564 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
565#else
566 NULL,
567#endif
schangd82195a2013-03-13 18:41:24 -0700568 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700569#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700570 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700571#else
572 NULL,
573#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530574#ifdef FEATURE_WLAN_TDLS
575 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
576#else
577 NULL,
578#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700579#ifdef FEATURE_WLAN_LPHB
580 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
581#else
582 NULL,
583#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700584 /*---------------------------------------------------------------------
585 Indications
586 ---------------------------------------------------------------------*/
587 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
588 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
589 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
590 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
591 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
592 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
593
594 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
595
596 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
597
Jeff Johnson295189b2012-06-20 16:38:30 -0700598 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700599
600#ifdef FEATURE_WLAN_SCAN_PNO
601 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
602#else
603 NULL,
604#endif // FEATURE_WLAN_SCAN_PNO
605
606#ifdef WLAN_WAKEUP_EVENTS
607 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
608#else // WLAN_WAKEUP_EVENTS
609 NULL,
610#endif // WLAN_WAKEUP_EVENTS
611
612 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800613
Viral Modi9dc288a2012-12-10 13:09:21 -0800614 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530615#ifdef FEATURE_WLAN_TDLS
616 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
617#else
618 NULL,
619#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700620
621#ifdef FEATURE_WLAN_LPHB
622 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
623#else
624 NULL,
625#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700626
627 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700628};
629
630
Jeff Johnsone7245742012-09-05 17:12:55 -0700631/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700632 WLAN DAL Global Control Block
633 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700634WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700635static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
636
Jeff Johnsone7245742012-09-05 17:12:55 -0700637const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700638
639/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700640WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700641void* WDI_GET_PAL_CTX( void )
642{
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700644}/*WDI_GET_PAL_CTX*/
645
Jeff Johnsone7245742012-09-05 17:12:55 -0700646/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700647 Helper inline converters
648 ============================================================================*/
649/*Convert WDI driver type into HAL driver type*/
650WPT_STATIC WPT_INLINE WDI_Status
651WDI_HAL_2_WDI_STATUS
652(
653 eHalStatus halStatus
654);
655
656/*Convert WDI request type into HAL request type*/
657WPT_STATIC WPT_INLINE tHalHostMsgType
658WDI_2_HAL_REQ_TYPE
659(
660 WDI_RequestEnumType wdiReqType
661);
662
663/*Convert WDI response type into HAL response type*/
664WPT_STATIC WPT_INLINE WDI_ResponseEnumType
665HAL_2_WDI_RSP_TYPE
666(
667 tHalHostMsgType halMsg
668);
669
670/*Convert WDI driver type into HAL driver type*/
671WPT_STATIC WPT_INLINE tDriverType
672WDI_2_HAL_DRV_TYPE
673(
674 WDI_DriverType wdiDriverType
675);
676
677/*Convert WDI stop reason into HAL stop reason*/
678WPT_STATIC WPT_INLINE tHalStopType
679WDI_2_HAL_STOP_REASON
680(
681 WDI_StopType wdiStopType
682);
683
684/*Convert WDI scan mode type into HAL scan mode type*/
685WPT_STATIC WPT_INLINE eHalSysMode
686WDI_2_HAL_SCAN_MODE
687(
688 WDI_ScanMode wdiScanMode
689);
690
691/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700692WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700693WDI_2_HAL_SEC_CH_OFFSET
694(
695 WDI_HTSecondaryChannelOffset wdiSecChOffset
696);
697
698/*Convert WDI BSS type into HAL BSS type*/
699WPT_STATIC WPT_INLINE tSirBssType
700WDI_2_HAL_BSS_TYPE
701(
702 WDI_BssType wdiBSSType
703);
704
705/*Convert WDI NW type into HAL NW type*/
706WPT_STATIC WPT_INLINE tSirNwType
707WDI_2_HAL_NW_TYPE
708(
709 WDI_NwType wdiNWType
710);
711
712/*Convert WDI chanel bonding type into HAL cb type*/
713WPT_STATIC WPT_INLINE ePhyChanBondState
714WDI_2_HAL_CB_STATE
715(
716 WDI_PhyChanBondState wdiCbState
717);
718
719/*Convert WDI chanel bonding type into HAL cb type*/
720WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
721WDI_2_HAL_HT_OPER_MODE
722(
723 WDI_HTOperatingMode wdiHTOperMode
724);
725
726/*Convert WDI mimo PS type into HAL mimo PS type*/
727WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
728WDI_2_HAL_MIMO_PS
729(
730 WDI_HTMIMOPowerSaveState wdiHTOperMode
731);
732
733/*Convert WDI ENC type into HAL ENC type*/
734WPT_STATIC WPT_INLINE tAniEdType
735WDI_2_HAL_ENC_TYPE
736(
737 WDI_EncryptType wdiEncType
738);
739
740/*Convert WDI WEP type into HAL WEP type*/
741WPT_STATIC WPT_INLINE tAniWepType
742WDI_2_HAL_WEP_TYPE
743(
744 WDI_WepType wdiWEPType
745);
746
747/*Convert WDI Link State into HAL Link State*/
748WPT_STATIC WPT_INLINE tSirLinkState
749WDI_2_HAL_LINK_STATE
750(
751 WDI_LinkStateType wdiLinkState
752);
753
Jeff Johnsone7245742012-09-05 17:12:55 -0700754/*Translate a STA Context from WDI into HAL*/
755WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700756void
757WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700758(
Jeff Johnson295189b2012-06-20 16:38:30 -0700759 tConfigStaParams* phalConfigSta,
760 WDI_ConfigStaReqInfoType* pwdiConfigSta
761);
Jeff Johnsone7245742012-09-05 17:12:55 -0700762
763/*Translate a Rate set info from WDI into HAL*/
764WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700765WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700766(
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 tSirMacRateSet* pHalRateSet,
768 WDI_RateSet* pwdiRateSet
769);
770
771/*Translate an EDCA Parameter Record from WDI into HAL*/
772WPT_STATIC WPT_INLINE void
773WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700774(
Jeff Johnson295189b2012-06-20 16:38:30 -0700775 tSirMacEdcaParamRecord* phalEdcaParam,
776 WDI_EdcaParamRecord* pWDIEdcaParam
777);
778
779/*Copy a management frame header from WDI fmt into HAL fmt*/
780WPT_STATIC WPT_INLINE void
781WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
782(
783 tSirMacMgmtHdr* pmacMgmtHdr,
784 WDI_MacMgmtHdr* pwdiMacMgmtHdr
785);
786
787/*Copy config bss parameters from WDI fmt into HAL fmt*/
788WPT_STATIC WPT_INLINE void
789WDI_CopyWDIConfigBSSToHALConfigBSS
790(
791 tConfigBssParams* phalConfigBSS,
792 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
793);
794
Jeff Johnsone7245742012-09-05 17:12:55 -0700795/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700796 pointed to by user data */
797WPT_STATIC WPT_INLINE void
798WDI_ExtractRequestCBFromEvent
799(
800 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700801 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700802 void** ppUserData
803);
804
805wpt_uint8
806WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700807(
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 WDI_ControlBlockType* pWDICtx,
809 WDI_BSSSessionType** ppSession
810);
811
812void
813WDI_AddBcastSTAtoSTATable
814(
815 WDI_ControlBlockType* pWDICtx,
816 WDI_AddStaParams * staParams,
817 wpt_uint16 usBcastStaIdx
818);
819
820WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700821(
Jeff Johnson295189b2012-06-20 16:38:30 -0700822 WDI_ControlBlockType* pWDICtx,
823 WDI_EventInfoType* pEventData
824);
825
826void
827WDI_SetPowerStateCb
828(
829 wpt_status status,
830 unsigned int dxePhyAddr,
831 void *pContext
832);
833
834#define CASE_RETURN_STRING( str ) \
835 case ( ( str ) ): return( #str ); break \
836
837/**
838 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700839
840 @param wdiReqMsgId: WDI Message request Id
841
842 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700843 @return Result of the function call
844*/
845static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
846{
847 switch (wdiReqMsgId)
848 {
849 CASE_RETURN_STRING( WDI_START_REQ );
850 CASE_RETURN_STRING( WDI_STOP_REQ );
851 CASE_RETURN_STRING( WDI_CLOSE_REQ );
852 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
853 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
854 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
855 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
856 CASE_RETURN_STRING( WDI_JOIN_REQ );
857 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
858 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
859 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
860 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
861 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
862 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
863 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
864 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
865 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
866 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
867 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
868 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
869 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
870 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
871 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
872 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
873 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
874 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
875 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
876 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
877 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
878 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
879 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
880 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
881 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
882 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
883 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530884#ifdef FEATURE_WLAN_TDLS
885 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
886#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700887 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
888 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
889 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
890 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
891 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
892 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
893 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
894 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
895 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
896 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
897 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
898 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
899 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
900 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
901 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
902 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
903 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
904 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
905 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
906 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
907 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
908 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
909 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
910 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
911 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700912 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700913 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
914 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
915 #ifdef FEATURE_WLAN_SCAN_PNO
916 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
917 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
918 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
919 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700920#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700921 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700922#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700923 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
924 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
925 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
926 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
927 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
928 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
929 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
930 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
931 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800932 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800933 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700934#ifdef WLAN_FEATURE_11W
935 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
936#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 default:
938 return "Unknown WDI MessageId";
939 }
940}
941
942
943
944/**
945 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700946
947 @param wdiRespMsgId: WDI Message response Id
948
949 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700950 @return Result of the function call
951*/
952static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
953{
954 switch (wdiRespMsgId)
955 {
956 CASE_RETURN_STRING( WDI_START_RESP );
957 CASE_RETURN_STRING( WDI_STOP_RESP );
958 CASE_RETURN_STRING( WDI_CLOSE_RESP );
959 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
960 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
961 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
962 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
963 CASE_RETURN_STRING( WDI_JOIN_RESP );
964 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
965 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
966 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
967 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
968 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
969 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
970 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
971 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
972 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
973 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
974 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
975 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
976 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
977 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
978 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
979 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
980 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
981 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
982 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
983 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
984 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
985 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
986 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
987 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
988 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
989 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
990 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530991#ifdef FEATURE_WLAN_TDLS
992 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
993 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
994#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700995 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
996 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
997 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
998 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
999 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1000 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1001 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1002 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1003 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1004 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1005 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1006 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1007 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1008 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1009 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1010 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1011 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1012 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1013 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1014 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1015 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1016 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1017 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1018 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1019 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001020 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1022 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1023 #ifdef FEATURE_WLAN_SCAN_PNO
1024 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1025 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1026 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1027 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001028#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001029 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001030#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001031 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1032 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1033 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1034 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1035 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1036 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1037 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1038 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001039 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001040 default:
1041 return "Unknown WDI MessageId";
1042 }
1043}
1044
1045/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301046 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1047 Capability bitmap array.
1048 @param capabilityBitmap - Base address of Bitmap array
1049 @see
1050 @returns None
1051 */
1052void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1053{
1054 int i;
1055 char capStr[512];
1056 char *pCapStr = capStr;
1057 for (i = 0; i < 32; i++) {
1058 if ((*(capabilityBitmap + 0) & (1 << i))) {
1059 switch(i) {
1060 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1061 pCapStr += strlen("MCC");
1062 break;
1063 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1064 pCapStr += strlen("P2P");
1065 break;
1066 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1067 pCapStr += strlen("DOT11AC");
1068 break;
1069 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1070 pCapStr += strlen("SLM_SESSIONIZATION");
1071 break;
1072 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1073 pCapStr += strlen("DOT11AC_OPMODE");
1074 break;
1075 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1076 pCapStr += strlen("SAP32STA");
1077 break;
1078 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1079 pCapStr += strlen("TDLS");
1080 break;
1081 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1082 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1083 break;
1084 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1085 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1086 break;
1087 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1088 pCapStr += strlen("BEACON_OFFLOAD");
1089 break;
1090 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1091 pCapStr += strlen("SCAN_OFFLOAD");
1092 break;
1093 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1094 pCapStr += strlen("ROAM_OFFLOAD");
1095 break;
1096 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1097 pCapStr += strlen("BCN_MISS_OFFLOAD");
1098 break;
1099 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1100 pCapStr += strlen("STA_POWERSAVE");
1101 break;
1102 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1103 pCapStr += strlen("AP_UAPSD");
1104 break;
1105 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1106 pCapStr += strlen("AP_DFS");
1107 break;
1108 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1109 pCapStr += strlen("BLOCKACK");
1110 break;
1111 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1112 pCapStr += strlen("PHY_ERR");
1113 break;
1114 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1115 pCapStr += strlen("BCN_FILTER");
1116 break;
1117 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1118 pCapStr += strlen("RTT");
1119 break;
1120 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1121 pCapStr += strlen("RATECTRL");
1122 break;
1123 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1124 pCapStr += strlen("WOW");
1125 break;
1126 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1127 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1128 break;
1129 }
1130 *pCapStr++ = ',';
1131 *pCapStr++ = ' ';
1132 }
1133 }
1134 pCapStr = capStr;
1135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t\t%s", pCapStr);
1136}
1137
1138/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001139 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001140
1141 @param halStatusId: HAL status Id
1142
1143 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 @return Result of the function call
1145*/
1146static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1147{
1148 switch (halStatusId)
1149 {
1150 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1151 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1152 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1153 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1154 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1155 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1156 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1157 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1158 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1159 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1160 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1161 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1162 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1163 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1164 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1165 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1166 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1167 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1168 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1169 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1170 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1171 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1172 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1173 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1174 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1175 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1176 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1177 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1178 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1179 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1180 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1181 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1182 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1183 default:
1184 return "Unknown HAL status";
1185 }
1186}
1187
Jeff Johnsone7245742012-09-05 17:12:55 -07001188/*========================================================================
1189
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001191
Jeff Johnson295189b2012-06-20 16:38:30 -07001192==========================================================================*/
1193
1194/**
1195 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001196
Jeff Johnson295189b2012-06-20 16:38:30 -07001197 DAL will allocate all the resources it needs. It will open PAL, it will also
1198 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001199 DXE/SMD or any other drivers that they need.
1200
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 @param pOSContext: pointer to the OS context provided by the UMAC
1202 will be passed on to PAL on Open
1203 ppWDIGlobalCtx: output pointer of Global Context
1204 pWdiDevCapability: output pointer of device capability
1205
1206 @return Result of the function call
1207*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001209WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001210(
Jeff Johnson295189b2012-06-20 16:38:30 -07001211 void* pOSContext,
1212 void** ppWDIGlobalCtx,
1213 WDI_DeviceCapabilityType* pWdiDevCapability,
1214 unsigned int driverType
1215)
1216{
1217 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001218 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001219 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001220 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1222
1223 /*---------------------------------------------------------------------
1224 Sanity check
1225 ---------------------------------------------------------------------*/
1226 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1227 {
1228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1229 "Invalid input parameters in WDI_Init");
1230
Jeff Johnsone7245742012-09-05 17:12:55 -07001231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001232 }
1233
1234 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001235 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001236 ---------------------------------------------------------------------*/
1237 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1238 {
1239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1240 "WDI module already initialized - return");
1241
Jeff Johnsone7245742012-09-05 17:12:55 -07001242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 }
1244
1245 /*Module is now initialized - this flag is to ensure the fact that multiple
1246 init will not happen on WDI
1247 !! - potential race does exist because read and set are not atomic,
1248 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001250
1251 /*Setup the control block */
1252 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001253 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001254
1255 /*Setup the STA Table*/
1256 wdiStatus = WDI_STATableInit(&gWDICb);
1257 if ( WDI_STATUS_SUCCESS != wdiStatus )
1258 {
1259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1260 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001261 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001262 goto fail_STATableInit;
1263 }
1264
1265 /*------------------------------------------------------------------------
1266 Open the PAL
1267 ------------------------------------------------------------------------*/
1268 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1269 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1270 {
1271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1272 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001273 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001274 goto fail_wpalOpen;
1275 }
1276
1277 /*Initialize main synchro mutex - it will be used to ensure integrity of
1278 the main WDI Control Block*/
1279 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1280 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1281 {
1282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1283 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001284 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001285 goto fail_mutex;
1286 }
1287
1288 /*Initialize the response timer - it will be used to time all messages
1289 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001290 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1291 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 &gWDICb);
1293 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1294 {
1295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1296 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001297 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001298 goto fail_timer;
1299 }
1300
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001301 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1302 WDI_SsrTimerCB,
1303 &gWDICb);
1304 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1305 {
1306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1307 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001308 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001309 goto fail_timer2;
1310 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001311 /* Initialize the WDI Pending Request Queue*/
1312 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1313 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1314 {
1315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1316 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001317 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001318 goto fail_pend_queue;
1319 }
1320
1321 /*Init WDI Pending Assoc Id Queue */
1322 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1323 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1324 {
1325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1326 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001327 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001328 goto fail_assoc_queue;
1329 }
1330
1331 /*Initialize the BSS sessions pending Queue */
1332 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1333 {
1334 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1335 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1336 {
1337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1338 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001339 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001340 goto fail_bss_queue;
1341 }
1342 }
1343
1344 /*Indicate the control block is sufficiently initialized for callbacks*/
1345 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1346
1347 /*------------------------------------------------------------------------
1348 Initialize the Data Path Utility Module
1349 ------------------------------------------------------------------------*/
1350 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1351 if ( WDI_STATUS_SUCCESS != wdiStatus )
1352 {
1353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1354 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001355 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001356 goto fail_dp_util_init;
1357 }
1358
1359 /* Init Set power state event */
1360 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001361 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 {
1363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1364 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001365 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001366 goto fail_power_event;
1367 }
1368
1369 /* Init WCTS action event */
1370 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001371 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001372 {
1373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1374 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001375 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001376 goto fail_wcts_event;
1377 }
1378
1379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001380 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 ------------------------------------------------------------------------*/
1382 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1383 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001384 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 wctsCBs.wctsRxMsgCBData = &gWDICb;
1386
Jeff Johnsone7245742012-09-05 17:12:55 -07001387 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001388 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001389 WDI_CT_CHANNEL_SIZE,
1390 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001391
1392 if ( NULL == gWDICb.wctsHandle )
1393 {
1394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001395 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001396 goto fail_wcts_open;
1397 }
1398
1399 gWDICb.driverMode = (tDriverType)driverType;
1400 /* FTM mode not need to open Transport Driver */
1401 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001402 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 /*------------------------------------------------------------------------
1404 Open the Data Transport
1405 ------------------------------------------------------------------------*/
1406 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1407 {
1408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001409 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 goto fail_wdts_open;
1411 }
1412 }
1413
1414 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001415 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001416
1417 /*Send the context as a ptr to the global WDI Control Block*/
1418 *ppWDIGlobalCtx = &gWDICb;
1419
1420 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001421 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001422 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1423 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1424 return WDI_STATUS_SUCCESS;
1425
1426 /* ERROR handlers
1427 Undo everything that completed successfully */
1428
1429 fail_wdts_open:
1430 {
1431 wpt_status eventStatus;
1432
1433 /* Closing WCTS in this scenario is tricky since it has to close
1434 the SMD channel and then we get notified asynchronously when
1435 the channel has been closed. So we take some of the logic from
1436 the "normal" close procedure in WDI_Close()
1437 */
1438
1439 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 {
1442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001443 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001444 }
1445
1446 WCTS_CloseTransport(gWDICb.wctsHandle);
1447
1448 /* Wait for WCTS to close the control transport. If we were able
1449 to reset the event flag, then we'll wait for the event,
1450 otherwise we'll wait for a maximum amount of time required for
1451 the channel to be closed */
1452 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1453 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001454 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 WDI_WCTS_ACTION_TIMEOUT);
1456 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1457 {
1458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001459 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 }
1461 }
1462 else
1463 {
1464 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1465 }
1466 }
1467 fail_wcts_open:
1468 wpalEventDelete(&gWDICb.wctsActionEvent);
1469 fail_wcts_event:
1470 wpalEventDelete(&gWDICb.setPowerStateEvent);
1471 fail_power_event:
1472 WDI_DP_UtilsExit(&gWDICb);
1473 fail_dp_util_init:
1474 gWDICb.magic = 0;
1475 fail_bss_queue:
1476 /* entries 0 thru i-1 were successfully initialized */
1477 while (0 < i)
1478 {
1479 i--;
1480 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1481 }
1482 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1483 fail_assoc_queue:
1484 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1485 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001486 wpalTimerDelete(&gWDICb.ssrTimer);
1487 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001488 wpalTimerDelete(&gWDICb.wptResponseTimer);
1489 fail_timer:
1490 wpalMutexDelete(&gWDICb.wptMutex);
1491 fail_mutex:
1492 wpalClose(gWDICb.pPALContext);
1493 fail_wpalOpen:
1494 WDI_STATableClose(&gWDICb);
1495 fail_STATableInit:
1496 gWDIInitialized = eWLAN_PAL_FALSE;
1497
1498 return WDI_STATUS_E_FAILURE;
1499
1500}/*WDI_Init*/;
1501
1502/**
1503 @brief WDI_Start will be called when the upper MAC is ready to
1504 commence operation with the WLAN Device. Upon the call
1505 of this API the WLAN DAL will pack and send a HAL Start
1506 message to the lower RIVA sub-system if the SMD channel
1507 has been fully opened and the RIVA subsystem is up.
1508
1509 If the RIVA sub-system is not yet up and running DAL
1510 will queue the request for Open and will wait for the
1511 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001512 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001513
1514 WDI_Init must have been called.
1515
Jeff Johnsone7245742012-09-05 17:12:55 -07001516 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001517 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001518
Jeff Johnson295189b2012-06-20 16:38:30 -07001519 wdiStartRspCb: callback for passing back the response of
1520 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001521
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001523 callback
1524
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 @see WDI_Start
1526 @return Result of the function call
1527*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001528WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001529WDI_Start
1530(
1531 WDI_StartReqParamsType* pwdiStartParams,
1532 WDI_StartRspCb wdiStartRspCb,
1533 void* pUserData
1534)
1535{
1536 WDI_EventInfoType wdiEventData;
1537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1538
1539 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001540 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001541 ------------------------------------------------------------------------*/
1542 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1543 {
1544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1545 "WDI API call before module is initialized - Fail request");
1546
Jeff Johnsone7245742012-09-05 17:12:55 -07001547 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001548 }
1549
1550 /*------------------------------------------------------------------------
1551 Fill in Event data and post to the Main FSM
1552 ------------------------------------------------------------------------*/
1553 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001554 wdiEventData.pEventData = pwdiStartParams;
1555 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1556 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 wdiEventData.pUserData = pUserData;
1558
1559 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1560
1561}/*WDI_Start*/
1562
1563/**
1564 @brief WDI_Stop will be called when the upper MAC is ready to
1565 stop any operation with the WLAN Device. Upon the call
1566 of this API the WLAN DAL will pack and send a HAL Stop
1567 message to the lower RIVA sub-system if the DAL Core is
1568 in started state.
1569
1570 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001571
1572 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001573
1574 WDI_Start must have been called.
1575
Jeff Johnsone7245742012-09-05 17:12:55 -07001576 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001578
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 wdiStopRspCb: callback for passing back the response of
1580 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001581
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001583 callback
1584
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 @see WDI_Start
1586 @return Result of the function call
1587*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001588WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001589WDI_Stop
1590(
1591 WDI_StopReqParamsType* pwdiStopParams,
1592 WDI_StopRspCb wdiStopRspCb,
1593 void* pUserData
1594)
1595{
1596 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001597 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1599
1600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 ------------------------------------------------------------------------*/
1603 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1604 {
1605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1606 "WDI API call before module is initialized - Fail request");
1607
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 }
1610
Jeff Johnson43971f52012-07-17 12:26:56 -07001611 /*Access to the global state must be locked before cleaning */
1612 wpalMutexAcquire(&pWDICtx->wptMutex);
1613
1614 /*Clear all pending request*/
1615 WDI_ClearPendingRequests(pWDICtx);
1616
1617 /*We have completed cleaning unlock now*/
1618 wpalMutexRelease(&pWDICtx->wptMutex);
1619
Jeff Johnson295189b2012-06-20 16:38:30 -07001620 /* Free the global variables */
1621 wpalMemoryFree(gpHostWlanFeatCaps);
1622 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001623 gpHostWlanFeatCaps = NULL;
1624 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001625
1626 /*------------------------------------------------------------------------
1627 Fill in Event data and post to the Main FSM
1628 ------------------------------------------------------------------------*/
1629 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001630 wdiEventData.pEventData = pwdiStopParams;
1631 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1632 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 wdiEventData.pUserData = pUserData;
1634
1635 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1636
1637}/*WDI_Stop*/
1638
1639
1640
1641/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001642 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 needs to interact with DAL. DAL will free its control
1644 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001645
1646 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001647
1648 WDI_Stop must have been called.
1649
1650 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001651
Jeff Johnson295189b2012-06-20 16:38:30 -07001652 @see WDI_Stop
1653 @return Result of the function call
1654*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001655WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001656WDI_Close
1657(
1658 void
1659)
1660{
1661 wpt_uint8 i;
1662 WDI_EventInfoType wdiEventData;
1663 wpt_status wptStatus;
1664 wpt_status eventStatus;
1665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1666
1667 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001668 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001669 ------------------------------------------------------------------------*/
1670 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1671 {
1672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1673 "WDI API call before module is initialized - Fail request");
1674
Jeff Johnsone7245742012-09-05 17:12:55 -07001675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001676 }
1677
1678 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1679 (the control transport will be closed by the FSM and we'll want
1680 to wait until that completes)*/
1681 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001682 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001685 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001686 /* fall through and try to finish closing via the FSM */
1687 }
1688
1689 /*------------------------------------------------------------------------
1690 Fill in Event data and post to the Main FSM
1691 ------------------------------------------------------------------------*/
1692 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 wdiEventData.pEventData = NULL;
1694 wdiEventData.uEventDataSize = 0;
1695 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001696 wdiEventData.pUserData = NULL;
1697
1698 gWDIInitialized = eWLAN_PAL_FALSE;
1699
1700 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1701
1702 /*Wait for WCTS to close the control transport
1703 (but only if we were able to reset the event flag*/
1704 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1705 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001706 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001707 WDI_WCTS_ACTION_TIMEOUT);
1708 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1709 {
1710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001711 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 }
1713 }
1714
1715 /* Destroy the WCTS action event */
1716 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1717 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1720 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001721 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 }
1723
1724 /* Destroy the Set Power State event */
1725 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1726 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1727 {
1728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1729 "WDI Close failed to destroy an event");
1730
Jeff Johnsone7245742012-09-05 17:12:55 -07001731 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001732 }
1733
1734 /*------------------------------------------------------------------------
1735 Closes the Data Path Utility Module
1736 ------------------------------------------------------------------------*/
1737 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1738 {
1739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1740 "WDI Init failed to close the DP Util Module");
1741
Jeff Johnsone7245742012-09-05 17:12:55 -07001742 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001743 }
1744
1745 /*destroy the BSS sessions pending Queue */
1746 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1747 {
1748 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1749 }
1750
1751 /* destroy the WDI Pending Assoc Id Request Queue*/
1752 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1753
1754 /* destroy the WDI Pending Request Queue*/
1755 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001756
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 /*destroy the response timer */
1758 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1759
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001760 /*destroy the SSR timer */
1761 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1762
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 /*invalidate the main synchro mutex */
1764 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1765 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1766 {
1767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1768 "Failed to delete mutex %d", wptStatus);
1769 WDI_ASSERT(0);
1770 }
1771
1772 /*Clear control block. note that this will clear the "magic"
1773 which will inhibit all asynchronous callbacks*/
1774 WDI_CleanCB(&gWDICb);
1775
1776 return wptStatus;
1777
1778}/*WDI_Close*/
1779
1780/**
1781 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1782 This will do most of the WDI stop & close
1783 operations without doing any handshake with Riva
1784
1785 This will also make sure that the control transport
1786 will NOT be closed.
1787
1788 This request will not be queued.
1789
1790
1791 WDI_Start must have been called.
1792
1793 @param closeTransport: Close control channel if this is set
1794
1795 @return Result of the function call
1796*/
1797WDI_Status
1798WDI_Shutdown
1799(
1800 wpt_boolean closeTransport
1801)
1802{
1803 WDI_EventInfoType wdiEventData;
1804 wpt_status wptStatus;
1805 int i = 0;
1806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1807
1808 /*------------------------------------------------------------------------
1809 Sanity Check
1810 ------------------------------------------------------------------------*/
1811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1812 {
1813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1814 "WDI API call before module is initialized - Fail request");
1815
1816 return WDI_STATUS_E_NOT_ALLOWED;
1817 }
1818
1819 /*------------------------------------------------------------------------
1820 Fill in Event data and post to the Main FSM
1821 ------------------------------------------------------------------------*/
1822 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1823 wdiEventData.pEventData = NULL;
1824 wdiEventData.uEventDataSize = 0;
1825
1826 /* Shutdown will not be queued, if the state is busy timer will be
1827 * stopped & this message will be processed.*/
1828 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1829 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1830 {
1831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001832 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001833 }
1834 /* Destroy the Set Power State event */
1835 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1836 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1837 {
1838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1839 "WDI Close failed to destroy an event");
1840
1841 WDI_ASSERT(0);
1842 }
1843 /*------------------------------------------------------------------------
1844 Closes the Data Path Utility Module
1845 ------------------------------------------------------------------------*/
1846 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1847 {
1848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1849 "WDI Init failed to close the DP Util Module");
1850
1851 WDI_ASSERT(0);
1852 }
1853 if ( closeTransport )
1854 {
1855 /* Close control transport, called from module unload */
1856 WCTS_CloseTransport(gWDICb.wctsHandle);
1857 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001858 else
1859 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001860 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001861 the pending messages in the transport queue */
1862 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1863 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 /*destroy the BSS sessions pending Queue */
1865 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1866 {
1867 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1868 }
1869
1870 /* destroy the WDI Pending Assoc Id Request Queue*/
1871 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1872 /* destroy the WDI Pending Request Queue*/
1873 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1874 /*destroy the response timer */
1875 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001876 /*destroy the SSR timer */
1877 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001878
1879 /*invalidate the main synchro mutex */
1880 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1881 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1882 {
1883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001884 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 WDI_ASSERT(0);
1886 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001887 /* Free the global variables */
1888 wpalMemoryFree(gpHostWlanFeatCaps);
1889 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001890 gpHostWlanFeatCaps = NULL;
1891 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 /*Clear control block. note that this will clear the "magic"
1893 which will inhibit all asynchronous callbacks*/
1894 WDI_CleanCB(&gWDICb);
1895 return wptStatus;
1896
1897}/*WDI_Shutdown*/
1898
1899
Jeff Johnsone7245742012-09-05 17:12:55 -07001900/*========================================================================
1901
Jeff Johnson295189b2012-06-20 16:38:30 -07001902 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001903
Jeff Johnson295189b2012-06-20 16:38:30 -07001904==========================================================================*/
1905
1906/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001907 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 the WLAN Device to get ready for a scan procedure. Upon
1909 the call of this API the WLAN DAL will pack and send a
1910 HAL Init Scan request message to the lower RIVA
1911 sub-system if DAL is in state STARTED.
1912
1913 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001914 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001915
1916 WDI_Start must have been called.
1917
1918 @param wdiInitScanParams: the init scan parameters as specified
1919 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001920
Jeff Johnson295189b2012-06-20 16:38:30 -07001921 wdiInitScanRspCb: callback for passing back the response
1922 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001923
Jeff Johnson295189b2012-06-20 16:38:30 -07001924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 callback
1926
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 @see WDI_Start
1928 @return Result of the function call
1929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001931WDI_InitScanReq
1932(
1933 WDI_InitScanReqParamsType* pwdiInitScanParams,
1934 WDI_InitScanRspCb wdiInitScanRspCb,
1935 void* pUserData
1936)
1937{
1938 WDI_EventInfoType wdiEventData;
1939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1940
1941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 ------------------------------------------------------------------------*/
1944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1945 {
1946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1947 "WDI API call before module is initialized - Fail request");
1948
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 }
1951
1952 /*------------------------------------------------------------------------
1953 Fill in Event data and post to the Main FSM
1954 ------------------------------------------------------------------------*/
1955 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001956 wdiEventData.pEventData = pwdiInitScanParams;
1957 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1958 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 wdiEventData.pUserData = pUserData;
1960
1961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1962
1963}/*WDI_InitScanReq*/
1964
1965/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001966 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001967 wishes to change the Scan channel on the WLAN Device.
1968 Upon the call of this API the WLAN DAL will pack and
1969 send a HAL Start Scan request message to the lower RIVA
1970 sub-system if DAL is in state STARTED.
1971
1972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001974
1975 WDI_InitScanReq must have been called.
1976
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001979
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 wdiStartScanRspCb: callback for passing back the
1981 response of the start scan operation received from the
1982 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 callback
1986
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 @see WDI_InitScanReq
1988 @return Result of the function call
1989*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001991WDI_StartScanReq
1992(
1993 WDI_StartScanReqParamsType* pwdiStartScanParams,
1994 WDI_StartScanRspCb wdiStartScanRspCb,
1995 void* pUserData
1996)
1997{
1998 WDI_EventInfoType wdiEventData;
1999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2000
2001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 ------------------------------------------------------------------------*/
2004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2005 {
2006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2007 "WDI API call before module is initialized - Fail request");
2008
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 }
2011
2012 /*------------------------------------------------------------------------
2013 Fill in Event data and post to the Main FSM
2014 ------------------------------------------------------------------------*/
2015 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 wdiEventData.pEventData = pwdiStartScanParams;
2017 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2018 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 wdiEventData.pUserData = pUserData;
2020
2021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2022
2023}/*WDI_StartScanReq*/
2024
2025
2026/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wants to end scanning for a particular channel that it
2029 had set before by calling Scan Start on the WLAN Device.
2030 Upon the call of this API the WLAN DAL will pack and
2031 send a HAL End Scan request message to the lower RIVA
2032 sub-system if DAL is in state STARTED.
2033
2034 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002036
2037 WDI_StartScanReq must have been called.
2038
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002041
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 wdiEndScanRspCb: callback for passing back the response
2043 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002044
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 callback
2047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 @see WDI_StartScanReq
2049 @return Result of the function call
2050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002052WDI_EndScanReq
2053(
2054 WDI_EndScanReqParamsType* pwdiEndScanParams,
2055 WDI_EndScanRspCb wdiEndScanRspCb,
2056 void* pUserData
2057)
2058{
2059 WDI_EventInfoType wdiEventData;
2060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2061
2062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002064 ------------------------------------------------------------------------*/
2065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2066 {
2067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2068 "WDI API call before module is initialized - Fail request");
2069
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072
2073 /*------------------------------------------------------------------------
2074 Fill in Event data and post to the Main FSM
2075 ------------------------------------------------------------------------*/
2076 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 wdiEventData.pEventData = pwdiEndScanParams;
2078 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2079 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 wdiEventData.pUserData = pUserData;
2081
2082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2083
2084}/*WDI_EndScanReq*/
2085
2086
2087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 completed the scan process on the WLAN Device. Upon the
2090 call of this API the WLAN DAL will pack and send a HAL
2091 Finish Scan Request request message to the lower RIVA
2092 sub-system if DAL is in state STARTED.
2093
2094 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002096
2097 WDI_InitScanReq must have been called.
2098
Jeff Johnsone7245742012-09-05 17:12:55 -07002099 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002100 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002101
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 wdiFinishScanRspCb: callback for passing back the
2103 response of the finish scan operation received from the
2104 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002105
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002107 callback
2108
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 @see WDI_InitScanReq
2110 @return Result of the function call
2111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002113WDI_FinishScanReq
2114(
2115 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2116 WDI_FinishScanRspCb wdiFinishScanRspCb,
2117 void* pUserData
2118)
2119{
2120 WDI_EventInfoType wdiEventData;
2121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2122
2123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 ------------------------------------------------------------------------*/
2126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2127 {
2128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2129 "WDI API call before module is initialized - Fail request");
2130
Jeff Johnsone7245742012-09-05 17:12:55 -07002131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002132 }
2133
2134 /*------------------------------------------------------------------------
2135 Fill in Event data and post to the Main FSM
2136 ------------------------------------------------------------------------*/
2137 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002138 wdiEventData.pEventData = pwdiFinishScanParams;
2139 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2140 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002141 wdiEventData.pUserData = pUserData;
2142
2143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2144
2145}/*WDI_FinishScanReq*/
2146
Jeff Johnsone7245742012-09-05 17:12:55 -07002147/*========================================================================
2148
Jeff Johnson295189b2012-06-20 16:38:30 -07002149 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002150
Jeff Johnson295189b2012-06-20 16:38:30 -07002151==========================================================================*/
2152
2153/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 to start an association procedure to a BSS. Upon the
2156 call of this API the WLAN DAL will pack and send a HAL
2157 Join request message to the lower RIVA sub-system if
2158 DAL is in state STARTED.
2159
2160 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002162
2163 WDI_Start must have been called.
2164
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002166 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002167
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 wdiJoinRspCb: callback for passing back the response of
2169 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002170
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002172 callback
2173
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 @see WDI_Start
2175 @return Result of the function call
2176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002178WDI_JoinReq
2179(
2180 WDI_JoinReqParamsType* pwdiJoinParams,
2181 WDI_JoinRspCb wdiJoinRspCb,
2182 void* pUserData
2183)
2184{
2185 WDI_EventInfoType wdiEventData;
2186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2187
2188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002190 ------------------------------------------------------------------------*/
2191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2192 {
2193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2194 "WDI API call before module is initialized - Fail request");
2195
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 }
2198
2199 /*------------------------------------------------------------------------
2200 Fill in Event data and post to the Main FSM
2201 ------------------------------------------------------------------------*/
2202 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 wdiEventData.pEventData = pwdiJoinParams;
2204 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2205 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 wdiEventData.pUserData = pUserData;
2207
2208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2209
2210}/*WDI_JoinReq*/
2211
2212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 wishes to configure the newly acquired or in process of
2215 being acquired BSS to the HW . Upon the call of this API
2216 the WLAN DAL will pack and send a HAL Config BSS request
2217 message to the lower RIVA sub-system if DAL is in state
2218 STARTED.
2219
2220 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002222
2223 WDI_JoinReq must have been called.
2224
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002226 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 wdiConfigBSSRspCb: callback for passing back the
2229 response of the config BSS operation received from the
2230 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002231
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 callback
2234
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 @see WDI_JoinReq
2236 @return Result of the function call
2237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002239WDI_ConfigBSSReq
2240(
2241 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2242 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2243 void* pUserData
2244)
2245{
2246 WDI_EventInfoType wdiEventData;
2247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2248
2249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 ------------------------------------------------------------------------*/
2252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2253 {
2254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2255 "WDI API call before module is initialized - Fail request");
2256
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 }
2259
2260 /*------------------------------------------------------------------------
2261 Fill in Event data and post to the Main FSM
2262 ------------------------------------------------------------------------*/
2263 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 wdiEventData.pEventData = pwdiConfigBSSParams;
2265 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2266 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 wdiEventData.pUserData = pUserData;
2268
2269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2270
2271}/*WDI_ConfigBSSReq*/
2272
2273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 disassociating from the BSS and wishes to notify HW.
2276 Upon the call of this API the WLAN DAL will pack and
2277 send a HAL Del BSS request message to the lower RIVA
2278 sub-system if DAL is in state STARTED.
2279
2280 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002282
2283 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2284
Jeff Johnsone7245742012-09-05 17:12:55 -07002285 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002287
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 wdiDelBSSRspCb: callback for passing back the response
2289 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002290
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 callback
2293
2294 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002295 @return Result of the function call
2296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002298WDI_DelBSSReq
2299(
2300 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2301 WDI_DelBSSRspCb wdiDelBSSRspCb,
2302 void* pUserData
2303)
2304{
2305 WDI_EventInfoType wdiEventData;
2306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2307
2308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002310 ------------------------------------------------------------------------*/
2311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2312 {
2313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2314 "WDI API call before module is initialized - Fail request");
2315
Jeff Johnsone7245742012-09-05 17:12:55 -07002316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002317 }
2318
2319 /*------------------------------------------------------------------------
2320 Fill in Event data and post to the Main FSM
2321 ------------------------------------------------------------------------*/
2322 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 wdiEventData.pEventData = pwdiDelBSSParams;
2324 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2325 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 wdiEventData.pUserData = pUserData;
2327
2328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2329
2330}/*WDI_DelBSSReq*/
2331
2332/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002333 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002334 associated to a BSS and wishes to configure HW for
2335 associated state. Upon the call of this API the WLAN DAL
2336 will pack and send a HAL Post Assoc request message to
2337 the lower RIVA sub-system if DAL is in state STARTED.
2338
2339 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002341
2342 WDI_JoinReq must have been called.
2343
2344 @param wdiPostAssocReqParams: the assoc parameters as specified
2345 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002346
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 wdiPostAssocRspCb: callback for passing back the
2348 response of the post assoc operation received from the
2349 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002350
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002352 callback
2353
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 @see WDI_JoinReq
2355 @return Result of the function call
2356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002358WDI_PostAssocReq
2359(
2360 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2361 WDI_PostAssocRspCb wdiPostAssocRspCb,
2362 void* pUserData
2363)
2364{
2365 WDI_EventInfoType wdiEventData;
2366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2367
2368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 ------------------------------------------------------------------------*/
2371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2372 {
2373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2374 "WDI API call before module is initialized - Fail request");
2375
Jeff Johnsone7245742012-09-05 17:12:55 -07002376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 }
2378
2379 /*------------------------------------------------------------------------
2380 Fill in Event data and post to the Main FSM
2381 ------------------------------------------------------------------------*/
2382 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 wdiEventData.pEventData = pwdiPostAssocReqParams;
2384 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2385 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002386 wdiEventData.pUserData = pUserData;
2387
2388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2389
2390}/*WDI_PostAssocReq*/
2391
2392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 association with another STA has ended and the station
2395 must be deleted from HW. Upon the call of this API the
2396 WLAN DAL will pack and send a HAL Del STA request
2397 message to the lower RIVA sub-system if DAL is in state
2398 STARTED.
2399
2400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002402
2403 WDI_PostAssocReq must have been called.
2404
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiDelSTARspCb: callback for passing back the response
2409 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 callback
2413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 @see WDI_PostAssocReq
2415 @return Result of the function call
2416*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002417WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002418WDI_DelSTAReq
2419(
2420 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2421 WDI_DelSTARspCb wdiDelSTARspCb,
2422 void* pUserData
2423)
2424{
2425 WDI_EventInfoType wdiEventData;
2426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2427
2428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 ------------------------------------------------------------------------*/
2431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2432 {
2433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2434 "WDI API call before module is initialized - Fail request");
2435
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 }
2438
2439 /*------------------------------------------------------------------------
2440 Fill in Event data and post to the Main FSM
2441 ------------------------------------------------------------------------*/
2442 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 wdiEventData.pEventData = pwdiDelSTAParams;
2444 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2445 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 wdiEventData.pUserData = pUserData;
2447
2448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2449
2450}/*WDI_DelSTAReq*/
2451
Jeff Johnsone7245742012-09-05 17:12:55 -07002452/*========================================================================
2453
Jeff Johnson295189b2012-06-20 16:38:30 -07002454 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002455
Jeff Johnson295189b2012-06-20 16:38:30 -07002456==========================================================================*/
2457
2458/**
2459 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2460 install a BSS encryption key on the HW. Upon the call of this
2461 API the WLAN DAL will pack and send a Set BSS Key request
2462 message to the lower RIVA sub-system if DAL is in state
2463 STARTED.
2464
2465 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002467
2468 WDI_PostAssocReq must have been called.
2469
Jeff Johnsone7245742012-09-05 17:12:55 -07002470 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002472
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 wdiSetBSSKeyRspCb: callback for passing back the
2474 response of the set BSS Key operation received from the
2475 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002476
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 callback
2479
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 @see WDI_PostAssocReq
2481 @return Result of the function call
2482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002484WDI_SetBSSKeyReq
2485(
2486 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2487 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2488 void* pUserData
2489)
2490{
2491 WDI_EventInfoType wdiEventData;
2492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2493
2494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 ------------------------------------------------------------------------*/
2497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2498 {
2499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2500 "WDI API call before module is initialized - Fail request");
2501
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 }
2504
2505 /*------------------------------------------------------------------------
2506 Fill in Event data and post to the Main FSM
2507 ------------------------------------------------------------------------*/
2508 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2510 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2511 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 wdiEventData.pUserData = pUserData;
2513
2514 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2515
2516}/*WDI_SetBSSKeyReq*/
2517
2518/**
2519 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2520 uninstall a BSS key from HW. Upon the call of this API the
2521 WLAN DAL will pack and send a HAL Remove BSS Key request
2522 message to the lower RIVA sub-system if DAL is in state
2523 STARTED.
2524
2525 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002526 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002527
2528 WDI_SetBSSKeyReq must have been called.
2529
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 wdiRemoveBSSKeyRspCb: callback for passing back the
2534 response of the remove BSS key operation received from
2535 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002536
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002538 callback
2539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 @see WDI_SetBSSKeyReq
2541 @return Result of the function call
2542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002544WDI_RemoveBSSKeyReq
2545(
2546 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2547 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2548 void* pUserData
2549)
2550{
2551 WDI_EventInfoType wdiEventData;
2552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2553
2554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 ------------------------------------------------------------------------*/
2557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2558 {
2559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2560 "WDI API call before module is initialized - Fail request");
2561
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 }
2564
2565 /*------------------------------------------------------------------------
2566 Fill in Event data and post to the Main FSM
2567 ------------------------------------------------------------------------*/
2568 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2570 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2571 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 wdiEventData.pUserData = pUserData;
2573
2574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2575
2576}/*WDI_RemoveBSSKeyReq*/
2577
2578
2579/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 ready to install a STA(ast) encryption key in HW. Upon
2582 the call of this API the WLAN DAL will pack and send a
2583 HAL Set STA Key request message to the lower RIVA
2584 sub-system if DAL is in state STARTED.
2585
2586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002588
2589 WDI_PostAssocReq must have been called.
2590
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiSetSTAKeyRspCb: callback for passing back the
2595 response of the set STA key operation received from the
2596 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 callback
2600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @see WDI_PostAssocReq
2602 @return Result of the function call
2603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002605WDI_SetSTAKeyReq
2606(
2607 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2608 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2609 void* pUserData
2610)
2611{
2612 WDI_EventInfoType wdiEventData;
2613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2614
2615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 ------------------------------------------------------------------------*/
2618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2619 {
2620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2621 "WDI API call before module is initialized - Fail request");
2622
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2631 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2632 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = pUserData;
2634
2635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2636
2637}/*WDI_SetSTAKeyReq*/
2638
2639
2640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 wants to uninstall a previously set STA key in HW. Upon
2643 the call of this API the WLAN DAL will pack and send a
2644 HAL Remove STA Key request message to the lower RIVA
2645 sub-system if DAL is in state STARTED.
2646
2647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002649
2650 WDI_SetSTAKeyReq must have been called.
2651
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 wdiRemoveSTAKeyRspCb: callback for passing back the
2656 response of the remove STA key operation received from
2657 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002658
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002660 callback
2661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 @see WDI_SetSTAKeyReq
2663 @return Result of the function call
2664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002666WDI_RemoveSTAKeyReq
2667(
2668 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2669 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2670 void* pUserData
2671)
2672{
2673 WDI_EventInfoType wdiEventData;
2674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2675
2676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 ------------------------------------------------------------------------*/
2679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2680 {
2681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2682 "WDI API call before module is initialized - Fail request");
2683
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 }
2686
2687 /*------------------------------------------------------------------------
2688 Fill in Event data and post to the Main FSM
2689 ------------------------------------------------------------------------*/
2690 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2692 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2693 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 wdiEventData.pUserData = pUserData;
2695
2696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2697
2698}/*WDI_RemoveSTAKeyReq*/
2699
2700
2701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 wants to install a STA Bcast encryption key on the HW.
2704 Upon the call of this API the WLAN DAL will pack and
2705 send a HAL Start request message to the lower RIVA
2706 sub-system if DAL is in state STARTED.
2707
2708 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002710
2711 WDI_PostAssocReq must have been called.
2712
Jeff Johnsone7245742012-09-05 17:12:55 -07002713 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 wdiSetSTABcastKeyRspCb: callback for passing back the
2717 response of the set BSS Key operation received from the
2718 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 callback
2722
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 @see WDI_PostAssocReq
2724 @return Result of the function call
2725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002727WDI_SetSTABcastKeyReq
2728(
2729 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2730 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2731 void* pUserData
2732)
2733
2734{
2735 WDI_EventInfoType wdiEventData;
2736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2737
2738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 ------------------------------------------------------------------------*/
2741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2742 {
2743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2744 "WDI API call before module is initialized - Fail request");
2745
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 }
2748
2749 /*------------------------------------------------------------------------
2750 Fill in Event data and post to the Main FSM
2751 ------------------------------------------------------------------------*/
2752 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2754 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2755 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 wdiEventData.pUserData = pUserData;
2757
2758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2759
2760}/*WDI_SetSTABcastKeyReq*/
2761
2762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 MAC wants to uninstall a STA Bcast key from HW. Upon the
2765 call of this API the WLAN DAL will pack and send a HAL
2766 Remove STA Bcast Key request message to the lower RIVA
2767 sub-system if DAL is in state STARTED.
2768
2769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002771
2772 WDI_SetSTABcastKeyReq must have been called.
2773
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002775 parameters as specified by the Device
2776 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002777
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2779 response of the remove STA Bcast key operation received
2780 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002781
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 callback
2784
Jeff Johnson295189b2012-06-20 16:38:30 -07002785 @see WDI_SetSTABcastKeyReq
2786 @return Result of the function call
2787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002789WDI_RemoveSTABcastKeyReq
2790(
2791 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2792 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2793 void* pUserData
2794)
2795{
2796 WDI_EventInfoType wdiEventData;
2797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2798
2799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 ------------------------------------------------------------------------*/
2802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2803 {
2804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2805 "WDI API call before module is initialized - Fail request");
2806
Jeff Johnsone7245742012-09-05 17:12:55 -07002807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 }
2809
2810 /*------------------------------------------------------------------------
2811 Fill in Event data and post to the Main FSM
2812 ------------------------------------------------------------------------*/
2813 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2815 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2816 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 wdiEventData.pUserData = pUserData;
2818
2819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2820
2821}/*WDI_RemoveSTABcastKeyReq*/
2822
2823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 MAC wants to set Max Tx Power to HW. Upon the
2826 call of this API the WLAN DAL will pack and send a HAL
2827 Remove STA Bcast Key request message to the lower RIVA
2828 sub-system if DAL is in state STARTED.
2829
2830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002832
2833 WDI_SetSTABcastKeyReq must have been called.
2834
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 parameters as specified by the Device
2837 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2840 response of the remove STA Bcast key operation received
2841 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 callback
2845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 @see WDI_SetMaxTxPowerReq
2847 @return Result of the function call
2848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002850WDI_SetMaxTxPowerReq
2851(
2852 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2853 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2854 void* pUserData
2855)
2856{
2857 WDI_EventInfoType wdiEventData;
2858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2859
2860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 ------------------------------------------------------------------------*/
2863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2864 {
2865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2866 "WDI API call before module is initialized - Fail request");
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 }
2870
2871 /*------------------------------------------------------------------------
2872 Fill in Event data and post to the Main FSM
2873 ------------------------------------------------------------------------*/
2874 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2876 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2877 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wdiEventData.pUserData = pUserData;
2879
2880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2881}
2882
schangd82195a2013-03-13 18:41:24 -07002883/**
2884 @brief WDI_SetTxPowerReq will be called when the upper
2885 MAC wants to set Tx Power to HW.
2886 In state BUSY this request will be queued. Request won't
2887 be allowed in any other state.
2888
2889
2890 @param pwdiSetTxPowerParams: set TS Power parameters
2891 BSSID and target TX Power with dbm included
2892
2893 wdiReqStatusCb: callback for passing back the response
2894
2895 pUserData: user data will be passed back with the
2896 callback
2897
2898 @return Result of the function call
2899*/
2900WDI_Status
2901WDI_SetTxPowerReq
2902(
2903 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2904 WDA_SetTxPowerRspCb wdiReqStatusCb,
2905 void* pUserData
2906)
2907{
2908 WDI_EventInfoType wdiEventData;
2909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2910
2911 /*------------------------------------------------------------------------
2912 Sanity Check
2913 ------------------------------------------------------------------------*/
2914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2915 {
2916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2917 "WDI API call before module is initialized - Fail request");
2918
2919 return WDI_STATUS_E_NOT_ALLOWED;
2920 }
2921
2922 /*------------------------------------------------------------------------
2923 Fill in Event data and post to the Main FSM
2924 ------------------------------------------------------------------------*/
2925 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2926 wdiEventData.pEventData = pwdiSetTxPowerParams;
2927 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2928 wdiEventData.pCBfnc = wdiReqStatusCb;
2929 wdiEventData.pUserData = pUserData;
2930
2931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2932}
2933
Jeff Johnson295189b2012-06-20 16:38:30 -07002934#ifdef FEATURE_WLAN_CCX
2935WDI_Status
2936WDI_TSMStatsReq
2937(
2938 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2939 WDI_TsmRspCb wdiReqStatusCb,
2940 void* pUserData
2941)
2942{
2943 WDI_EventInfoType wdiEventData;
2944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 /*------------------------------------------------------------------------
2946 Sanity Check
2947 ------------------------------------------------------------------------*/
2948 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2949 {
2950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2951 "WDI API call before module is initialized - Fail request");
2952
2953 return WDI_STATUS_E_NOT_ALLOWED;
2954 }
2955
2956 /*------------------------------------------------------------------------
2957 Fill in Event data and post to the Main FSM
2958 ------------------------------------------------------------------------*/
2959 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2960 wdiEventData.pEventData = pwdiTsmReqParams;
2961 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2962 wdiEventData.pCBfnc = wdiReqStatusCb;
2963 wdiEventData.pUserData = pUserData;
2964
2965 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2966
2967}
2968#endif
2969
2970/*========================================================================
2971
2972 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002973
Jeff Johnson295189b2012-06-20 16:38:30 -07002974==========================================================================*/
2975
2976/**
2977 @brief WDI_AddTSReq will be called when the upper MAC to inform
2978 the device of a successful add TSpec negotiation. HW
2979 needs to receive the TSpec Info from the UMAC in order
2980 to configure properly the QoS data traffic. Upon the
2981 call of this API the WLAN DAL will pack and send a HAL
2982 Add TS request message to the lower RIVA sub-system if
2983 DAL is in state STARTED.
2984
2985 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002987
2988 WDI_PostAssocReq must have been called.
2989
2990 @param wdiAddTsReqParams: the add TS parameters as specified by
2991 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002992
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 wdiAddTsRspCb: callback for passing back the response of
2994 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002995
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 callback
2998
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 @see WDI_PostAssocReq
3000 @return Result of the function call
3001*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003002WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003003WDI_AddTSReq
3004(
3005 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3006 WDI_AddTsRspCb wdiAddTsRspCb,
3007 void* pUserData
3008)
3009{
3010 WDI_EventInfoType wdiEventData;
3011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3012
3013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003015 ------------------------------------------------------------------------*/
3016 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3017 {
3018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3019 "WDI API call before module is initialized - Fail request");
3020
Jeff Johnsone7245742012-09-05 17:12:55 -07003021 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 }
3023
3024 /*------------------------------------------------------------------------
3025 Fill in Event data and post to the Main FSM
3026 ------------------------------------------------------------------------*/
3027 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003028 wdiEventData.pEventData = pwdiAddTsReqParams;
3029 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3030 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 wdiEventData.pUserData = pUserData;
3032
3033 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3034
3035}/*WDI_AddTSReq*/
3036
3037
3038
3039/**
3040 @brief WDI_DelTSReq will be called when the upper MAC has ended
3041 admission on a specific AC. This is to inform HW that
3042 QoS traffic parameters must be rest. Upon the call of
3043 this API the WLAN DAL will pack and send a HAL Del TS
3044 request message to the lower RIVA sub-system if DAL is
3045 in state STARTED.
3046
3047 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003048 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003049
3050 WDI_AddTSReq must have been called.
3051
3052 @param wdiDelTsReqParams: the del TS parameters as specified by
3053 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003054
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 wdiDelTsRspCb: callback for passing back the response of
3056 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003057
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003059 callback
3060
Jeff Johnson295189b2012-06-20 16:38:30 -07003061 @see WDI_AddTSReq
3062 @return Result of the function call
3063*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003064WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003065WDI_DelTSReq
3066(
3067 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3068 WDI_DelTsRspCb wdiDelTsRspCb,
3069 void* pUserData
3070)
3071{
3072 WDI_EventInfoType wdiEventData;
3073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3074
3075 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 ------------------------------------------------------------------------*/
3078 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3079 {
3080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3081 "WDI API call before module is initialized - Fail request");
3082
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003084 }
3085
3086 /*------------------------------------------------------------------------
3087 Fill in Event data and post to the Main FSM
3088 ------------------------------------------------------------------------*/
3089 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003090 wdiEventData.pEventData = pwdiDelTsReqParams;
3091 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3092 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003093 wdiEventData.pUserData = pUserData;
3094
3095 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3096
3097}/*WDI_DelTSReq*/
3098
3099
3100
3101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 wishes to update the EDCA parameters used by HW for QoS
3104 data traffic. Upon the call of this API the WLAN DAL
3105 will pack and send a HAL Update EDCA Params request
3106 message to the lower RIVA sub-system if DAL is in state
3107 STARTED.
3108
3109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003111
3112 WDI_PostAssocReq must have been called.
3113
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003116
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 wdiUpdateEDCAParamsRspCb: callback for passing back the
3118 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003119
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003121 callback
3122
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 @see WDI_PostAssocReq
3124 @return Result of the function call
3125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003127WDI_UpdateEDCAParams
3128(
3129 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3130 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3131 void* pUserData
3132)
3133{
3134 WDI_EventInfoType wdiEventData;
3135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3136
3137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 ------------------------------------------------------------------------*/
3140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3141 {
3142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3143 "WDI API call before module is initialized - Fail request");
3144
Jeff Johnsone7245742012-09-05 17:12:55 -07003145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 }
3147
3148 /*------------------------------------------------------------------------
3149 Fill in Event data and post to the Main FSM
3150 ------------------------------------------------------------------------*/
3151 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3153 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3154 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003155 wdiEventData.pUserData = pUserData;
3156
3157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3158
3159}/*WDI_UpdateEDCAParams*/
3160
3161
3162/**
3163 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3164 successfully a BA session and needs to notify the HW for
3165 the appropriate settings to take place. Upon the call of
3166 this API the WLAN DAL will pack and send a HAL Add BA
3167 request message to the lower RIVA sub-system if DAL is
3168 in state STARTED.
3169
3170 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003172
3173 WDI_PostAssocReq must have been called.
3174
3175 @param wdiAddBAReqParams: the add BA parameters as specified by
3176 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003177
Jeff Johnson295189b2012-06-20 16:38:30 -07003178 wdiAddBARspCb: callback for passing back the response of
3179 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003180
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003182 callback
3183
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 @see WDI_PostAssocReq
3185 @return Result of the function call
3186*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003187WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003188WDI_AddBASessionReq
3189(
3190 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3191 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3192 void* pUserData
3193)
3194{
3195 WDI_EventInfoType wdiEventData;
3196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3197
3198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003200 ------------------------------------------------------------------------*/
3201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3202 {
3203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3204 "WDI API call before module is initialized - Fail request");
3205
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 }
3208
3209 /*------------------------------------------------------------------------
3210 Fill in Event data and post to the Main FSM
3211 ------------------------------------------------------------------------*/
3212 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3214 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3215 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 wdiEventData.pUserData = pUserData;
3217
3218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3219
3220}/*WDI_AddBASessionReq*/
3221
3222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 inform HW that it has deleted a previously created BA
3225 session. Upon the call of this API the WLAN DAL will
3226 pack and send a HAL Del BA request message to the lower
3227 RIVA sub-system if DAL is in state STARTED.
3228
3229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003231
3232 WDI_AddBAReq must have been called.
3233
3234 @param wdiDelBAReqParams: the del BA parameters as specified by
3235 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003236
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wdiDelBARspCb: callback for passing back the response of
3238 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003239
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 callback
3242
Jeff Johnson295189b2012-06-20 16:38:30 -07003243 @see WDI_AddBAReq
3244 @return Result of the function call
3245*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003246WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003247WDI_DelBAReq
3248(
3249 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3250 WDI_DelBARspCb wdiDelBARspCb,
3251 void* pUserData
3252)
3253{
3254 WDI_EventInfoType wdiEventData;
3255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3256
3257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003258 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003259 ------------------------------------------------------------------------*/
3260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3261 {
3262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3263 "WDI API call before module is initialized - Fail request");
3264
Jeff Johnsone7245742012-09-05 17:12:55 -07003265 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 }
3267
3268 /*------------------------------------------------------------------------
3269 Fill in Event data and post to the Main FSM
3270 ------------------------------------------------------------------------*/
3271 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003272 wdiEventData.pEventData = pwdiDelBAReqParams;
3273 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3274 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003275 wdiEventData.pUserData = pUserData;
3276
3277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3278
3279}/*WDI_DelBAReq*/
3280
Jeff Johnsone7245742012-09-05 17:12:55 -07003281/*========================================================================
3282
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003284
Jeff Johnson295189b2012-06-20 16:38:30 -07003285==========================================================================*/
3286
3287/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003288 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 wants to set the power save related configurations of
3290 the WLAN Device. Upon the call of this API the WLAN DAL
3291 will pack and send a HAL Update CFG request message to
3292 the lower RIVA sub-system if DAL is in state STARTED.
3293
3294 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003296
3297 WDI_Start must have been called.
3298
Jeff Johnsone7245742012-09-05 17:12:55 -07003299 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003301
Jeff Johnson295189b2012-06-20 16:38:30 -07003302 wdiSetPwrSaveCfgCb: callback for passing back the
3303 response of the set power save cfg operation received
3304 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003305
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003307 callback
3308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003310 @return Result of the function call
3311*/
3312WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003313WDI_SetPwrSaveCfgReq
3314(
3315 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3316 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3317 void* pUserData
3318)
3319{
3320 WDI_EventInfoType wdiEventData;
3321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3322
3323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003324 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003325 ------------------------------------------------------------------------*/
3326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3327 {
3328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3329 "WDI API call before module is initialized - Fail request");
3330
Jeff Johnsone7245742012-09-05 17:12:55 -07003331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003332 }
3333
3334 /*------------------------------------------------------------------------
3335 Fill in Event data and post to the Main FSM
3336 ------------------------------------------------------------------------*/
3337 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 wdiEventData.pEventData = pwdiPowerSaveCfg;
3339 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3340 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003341 wdiEventData.pUserData = pUserData;
3342
3343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3344
3345}/*WDI_SetPwrSaveCfgReq*/
3346
3347/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003348 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 request the device to get into IMPS power state. Upon
3350 the call of this API the WLAN DAL will send a HAL Enter
3351 IMPS request message to the lower RIVA sub-system if DAL
3352 is in state STARTED.
3353
3354 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003355 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003356
Jeff Johnsone7245742012-09-05 17:12:55 -07003357
3358 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003359 response of the Enter IMPS operation received from the
3360 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003361
Jeff Johnson295189b2012-06-20 16:38:30 -07003362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003363 callback
3364
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 @see WDI_Start
3366 @return Result of the function call
3367*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003369WDI_EnterImpsReq
3370(
3371 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3372 void* pUserData
3373)
3374{
3375 WDI_EventInfoType wdiEventData;
3376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3377
3378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003380 ------------------------------------------------------------------------*/
3381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3382 {
3383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3384 "WDI API call before module is initialized - Fail request");
3385
Jeff Johnsone7245742012-09-05 17:12:55 -07003386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 }
3388
3389 /*------------------------------------------------------------------------
3390 Fill in Event data and post to the Main FSM
3391 ------------------------------------------------------------------------*/
3392 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 wdiEventData.pEventData = NULL;
3394 wdiEventData.uEventDataSize = 0;
3395 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 wdiEventData.pUserData = pUserData;
3397
3398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3399
3400}/*WDI_EnterImpsReq*/
3401
3402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 request the device to get out of IMPS power state. Upon
3405 the call of this API the WLAN DAL will send a HAL Exit
3406 IMPS request message to the lower RIVA sub-system if DAL
3407 is in state STARTED.
3408
3409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412
Jeff Johnsone7245742012-09-05 17:12:55 -07003413
3414 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003416
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003418 callback
3419
Jeff Johnson295189b2012-06-20 16:38:30 -07003420 @see WDI_Start
3421 @return Result of the function call
3422*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003423WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003424WDI_ExitImpsReq
3425(
3426 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3427 void* pUserData
3428)
3429{
3430 WDI_EventInfoType wdiEventData;
3431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3432
3433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 ------------------------------------------------------------------------*/
3436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3437 {
3438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3439 "WDI API call before module is initialized - Fail request");
3440
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 }
3443
3444 /*------------------------------------------------------------------------
3445 Fill in Event data and post to the Main FSM
3446 ------------------------------------------------------------------------*/
3447 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 wdiEventData.pEventData = NULL;
3449 wdiEventData.uEventDataSize = 0;
3450 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 wdiEventData.pUserData = pUserData;
3452
3453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3454
3455}/*WDI_ExitImpsReq*/
3456
3457/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 request the device to get into BMPS power state. Upon
3460 the call of this API the WLAN DAL will pack and send a
3461 HAL Enter BMPS request message to the lower RIVA
3462 sub-system if DAL is in state STARTED.
3463
3464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003466
3467 WDI_PostAssocReq must have been called.
3468
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 wdiEnterBmpsRspCb: callback for passing back the
3473 response of the Enter BMPS operation received from the
3474 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003477 callback
3478
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 @see WDI_PostAssocReq
3480 @return Result of the function call
3481*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003482WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003483WDI_EnterBmpsReq
3484(
3485 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3486 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3487 void* pUserData
3488)
3489{
3490 WDI_EventInfoType wdiEventData;
3491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3492
3493 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003495 ------------------------------------------------------------------------*/
3496 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3497 {
3498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3499 "WDI API call before module is initialized - Fail request");
3500
Jeff Johnsone7245742012-09-05 17:12:55 -07003501 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003502 }
3503
3504 /*------------------------------------------------------------------------
3505 Fill in Event data and post to the Main FSM
3506 ------------------------------------------------------------------------*/
3507 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3509 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3510 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 wdiEventData.pUserData = pUserData;
3512
3513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3514
3515}/*WDI_EnterBmpsReq*/
3516
3517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 request the device to get out of BMPS power state. Upon
3520 the call of this API the WLAN DAL will pack and send a
3521 HAL Exit BMPS request message to the lower RIVA
3522 sub-system if DAL is in state STARTED.
3523
3524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003526
3527 WDI_PostAssocReq must have been called.
3528
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 wdiExitBmpsRspCb: callback for passing back the response
3533 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003534
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 callback
3537
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 @see WDI_PostAssocReq
3539 @return Result of the function call
3540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003542WDI_ExitBmpsReq
3543(
3544 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3545 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3546 void* pUserData
3547)
3548{
3549 WDI_EventInfoType wdiEventData;
3550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3551
3552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 ------------------------------------------------------------------------*/
3555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3556 {
3557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3558 "WDI API call before module is initialized - Fail request");
3559
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 }
3562
3563 /*------------------------------------------------------------------------
3564 Fill in Event data and post to the Main FSM
3565 ------------------------------------------------------------------------*/
3566 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3568 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3569 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 wdiEventData.pUserData = pUserData;
3571
3572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3573
3574}/*WDI_ExitBmpsReq*/
3575
3576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 request the device to get into UAPSD power state. Upon
3579 the call of this API the WLAN DAL will pack and send a
3580 HAL Enter UAPSD request message to the lower RIVA
3581 sub-system if DAL is in state STARTED.
3582
3583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003585
3586 WDI_PostAssocReq must have been called.
3587 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
3589 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003590 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 wdiEnterUapsdRspCb: callback for passing back the
3593 response of the Enter UAPSD operation received from the
3594 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003595
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 callback
3598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3600 @return Result of the function call
3601*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003603WDI_EnterUapsdReq
3604(
3605 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3606 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3607 void* pUserData
3608)
3609{
3610 WDI_EventInfoType wdiEventData;
3611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3612
3613 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 ------------------------------------------------------------------------*/
3616 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3617 {
3618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3619 "WDI API call before module is initialized - Fail request");
3620
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 }
3623
3624 /*------------------------------------------------------------------------
3625 Fill in Event data and post to the Main FSM
3626 ------------------------------------------------------------------------*/
3627 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3629 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3630 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 wdiEventData.pUserData = pUserData;
3632
3633 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3634
3635}/*WDI_EnterUapsdReq*/
3636
3637/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 request the device to get out of UAPSD power state. Upon
3640 the call of this API the WLAN DAL will send a HAL Exit
3641 UAPSD request message to the lower RIVA sub-system if
3642 DAL is in state STARTED.
3643
3644 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003645 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003646
3647 WDI_PostAssocReq must have been called.
3648
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 response of the Exit UAPSD operation received from the
3651 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003652
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003654 callback
3655
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 @see WDI_PostAssocReq
3657 @return Result of the function call
3658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003660WDI_ExitUapsdReq
3661(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003662 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3664 void* pUserData
3665)
3666{
3667 WDI_EventInfoType wdiEventData;
3668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3669
3670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 ------------------------------------------------------------------------*/
3673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3674 {
3675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3676 "WDI API call before module is initialized - Fail request");
3677
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 }
3680
3681 /*------------------------------------------------------------------------
3682 Fill in Event data and post to the Main FSM
3683 ------------------------------------------------------------------------*/
3684 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003685 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3686 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 wdiEventData.pUserData = pUserData;
3689
3690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3691
3692}/*WDI_ExitUapsdReq*/
3693
3694/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 MAC wants to set the UAPSD related configurations
3697 of an associated STA (while acting as an AP) to the WLAN
3698 Device. Upon the call of this API the WLAN DAL will pack
3699 and send a HAL Update UAPSD params request message to
3700 the lower RIVA sub-system if DAL is in state STARTED.
3701
3702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003704
3705 WDI_ConfigBSSReq must have been called.
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 wdiUpdateUapsdParamsCb: callback for passing back the
3711 response of the update UAPSD params operation received
3712 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 callback
3716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 @see WDI_ConfigBSSReq
3718 @return Result of the function call
3719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003721WDI_UpdateUapsdParamsReq
3722(
3723 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3724 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3725 void* pUserData
3726)
3727{
3728 WDI_EventInfoType wdiEventData;
3729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3730
3731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 ------------------------------------------------------------------------*/
3734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3735 {
3736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3737 "WDI API call before module is initialized - Fail request");
3738
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 }
3741
3742 /*------------------------------------------------------------------------
3743 Fill in Event data and post to the Main FSM
3744 ------------------------------------------------------------------------*/
3745 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003747 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 wdiEventData.pUserData = pUserData;
3750
3751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3752
3753}/*WDI_UpdateUapsdParamsReq*/
3754
3755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 MAC wants to set the UAPSD related configurations before
3758 requesting for enter UAPSD power state to the WLAN
3759 Device. Upon the call of this API the WLAN DAL will pack
3760 and send a HAL Set UAPSD params request message to
3761 the lower RIVA sub-system if DAL is in state STARTED.
3762
3763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003765
3766 WDI_PostAssocReq must have been called.
3767
3768 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3769 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 wdiSetUapsdAcParamsCb: callback for passing back the
3772 response of the set UAPSD params operation received from
3773 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003774
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 callback
3777
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 @see WDI_PostAssocReq
3779 @return Result of the function call
3780*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003781WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003782WDI_SetUapsdAcParamsReq
3783(
3784 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3785 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3786 void* pUserData
3787)
3788{
3789 WDI_EventInfoType wdiEventData;
3790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3791
3792 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003793 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003794 ------------------------------------------------------------------------*/
3795 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3796 {
3797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3798 "WDI API call before module is initialized - Fail request");
3799
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 }
3802
3803 /*------------------------------------------------------------------------
3804 Fill in Event data and post to the Main FSM
3805 ------------------------------------------------------------------------*/
3806 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 wdiEventData.pEventData = pwdiUapsdInfo;
3808 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3809 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 wdiEventData.pUserData = pUserData;
3811
3812 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3813
3814}/*WDI_SetUapsdAcParamsReq*/
3815
3816/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 MAC wants to set/reset the RXP filters for received pkts
3819 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3820 and send a HAL configure RXP filter request message to
3821 the lower RIVA sub-system.
3822
3823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003825
Jeff Johnsone7245742012-09-05 17:12:55 -07003826
3827 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 filter as specified by the Device
3829 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003830
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 wdiConfigureRxpFilterCb: callback for passing back the
3832 response of the configure RXP filter operation received
3833 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003834
Jeff Johnson295189b2012-06-20 16:38:30 -07003835 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003836 callback
3837
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 @return Result of the function call
3839*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003840WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003841WDI_ConfigureRxpFilterReq
3842(
3843 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3844 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3845 void* pUserData
3846)
3847{
3848 WDI_EventInfoType wdiEventData;
3849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3850
3851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 ------------------------------------------------------------------------*/
3854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3855 {
3856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3857 "WDI API call before module is initialized - Fail request");
3858
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 }
3861
3862 /*------------------------------------------------------------------------
3863 Fill in Event data and post to the Main FSM
3864 ------------------------------------------------------------------------*/
3865 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3867 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3868 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 wdiEventData.pUserData = pUserData;
3870
3871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3872}/*WDI_ConfigureRxpFilterReq*/
3873
3874/**
3875 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3876 wants to set the beacon filters while in power save.
3877 Upon the call of this API the WLAN DAL will pack and
3878 send a Beacon filter request message to the
3879 lower RIVA sub-system.
3880
3881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003883
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
3885 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 filter as specified by the Device
3887 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 wdiBeaconFilterCb: callback for passing back the
3890 response of the set beacon filter operation received
3891 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003894 callback
3895
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 @return Result of the function call
3897*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003898WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003899WDI_SetBeaconFilterReq
3900(
3901 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3902 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3903 void* pUserData
3904)
3905{
3906 WDI_EventInfoType wdiEventData;
3907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3908
3909 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 ------------------------------------------------------------------------*/
3912 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3913 {
3914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3915 "WDI API call before module is initialized - Fail request");
3916
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 }
3919
3920 /*------------------------------------------------------------------------
3921 Fill in Event data and post to the Main FSM
3922 ------------------------------------------------------------------------*/
3923 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003925 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 wdiEventData.pUserData = pUserData;
3928
3929 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3930}/*WDI_SetBeaconFilterReq*/
3931
3932/**
3933 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3934 wants to remove the beacon filter for particular IE
3935 while in power save. Upon the call of this API the WLAN
3936 DAL will pack and send a remove Beacon filter request
3937 message to the lower RIVA sub-system.
3938
3939 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003941
Jeff Johnsone7245742012-09-05 17:12:55 -07003942
3943 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 filter as specified by the Device
3945 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003946
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 wdiBeaconFilterCb: callback for passing back the
3948 response of the remove beacon filter operation received
3949 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003950
Jeff Johnson295189b2012-06-20 16:38:30 -07003951 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 callback
3953
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 @return Result of the function call
3955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003957WDI_RemBeaconFilterReq
3958(
3959 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3960 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3961 void* pUserData
3962)
3963{
3964 WDI_EventInfoType wdiEventData;
3965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3966
3967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 ------------------------------------------------------------------------*/
3970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3971 {
3972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3973 "WDI API call before module is initialized - Fail request");
3974
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003976 }
3977
3978 /*------------------------------------------------------------------------
3979 Fill in Event data and post to the Main FSM
3980 ------------------------------------------------------------------------*/
3981 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003983 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 wdiEventData.pUserData = pUserData;
3986
3987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3988}/*WDI_RemBeaconFilterReq*/
3989
3990/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 MAC wants to set the RSSI thresholds related
3993 configurations while in power save. Upon the call of
3994 this API the WLAN DAL will pack and send a HAL Set RSSI
3995 thresholds request message to the lower RIVA
3996 sub-system if DAL is in state STARTED.
3997
3998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004000
4001 WDI_PostAssocReq must have been called.
4002
4003 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4004 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 wdiSetUapsdAcParamsCb: callback for passing back the
4007 response of the set UAPSD params operation received from
4008 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004009
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 callback
4012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 @see WDI_PostAssocReq
4014 @return Result of the function call
4015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004017WDI_SetRSSIThresholdsReq
4018(
4019 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4020 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4021 void* pUserData
4022)
4023{
4024 WDI_EventInfoType wdiEventData;
4025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4026
4027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 ------------------------------------------------------------------------*/
4030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4031 {
4032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4033 "WDI API call before module is initialized - Fail request");
4034
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 }
4037
4038 /*------------------------------------------------------------------------
4039 Fill in Event data and post to the Main FSM
4040 ------------------------------------------------------------------------*/
4041 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004043 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 wdiEventData.pUserData = pUserData;
4046
4047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4048}/* WDI_SetRSSIThresholdsReq*/
4049
4050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 wants to set the filter to minimize unnecessary host
4053 wakeup due to broadcast traffic while in power save.
4054 Upon the call of this API the WLAN DAL will pack and
4055 send a HAL host offload request message to the
4056 lower RIVA sub-system if DAL is in state STARTED.
4057
4058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004060
4061 WDI_PostAssocReq must have been called.
4062
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 wdiHostOffloadCb: callback for passing back the response
4067 of the host offload operation received from the
4068 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @see WDI_PostAssocReq
4074 @return Result of the function call
4075*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004077WDI_HostOffloadReq
4078(
4079 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4080 WDI_HostOffloadCb wdiHostOffloadCb,
4081 void* pUserData
4082)
4083{
4084 WDI_EventInfoType wdiEventData;
4085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4086
4087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 ------------------------------------------------------------------------*/
4090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4091 {
4092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4093 "WDI API call before module is initialized - Fail request");
4094
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 }
4097
4098 /*------------------------------------------------------------------------
4099 Fill in Event data and post to the Main FSM
4100 ------------------------------------------------------------------------*/
4101 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004103 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEventData.pUserData = pUserData;
4106
4107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4108}/*WDI_HostOffloadReq*/
4109
4110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 @brief WDI_KeepAliveReq will be called when the upper MAC
4112 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 and minimize unnecessary host wakeups due to while in power save.
4114 Upon the call of this API the WLAN DAL will pack and
4115 send a HAL Keep Alive request message to the
4116 lower RIVA sub-system if DAL is in state STARTED.
4117
4118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004120
4121 WDI_PostAssocReq must have been called.
4122
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004125
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 wdiKeepAliveCb: callback for passing back the response
4127 of the Keep Alive operation received from the
4128 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004129
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 callback
4132
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 @see WDI_PostAssocReq
4134 @return Result of the function call
4135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004137WDI_KeepAliveReq
4138(
4139 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4140 WDI_KeepAliveCb wdiKeepAliveCb,
4141 void* pUserData
4142)
4143{
4144 WDI_EventInfoType wdiEventData;
4145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4146
4147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 ------------------------------------------------------------------------*/
4150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4151 {
4152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4153 "WDI_KeepAliveReq: WDI API call before module "
4154 "is initialized - Fail request");
4155
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 }
4158
4159 /*------------------------------------------------------------------------
4160 Fill in Event data and post to the Main FSM
4161 ------------------------------------------------------------------------*/
4162 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 wdiEventData.pEventData = pwdiKeepAliveParams;
4164 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4165 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 wdiEventData.pUserData = pUserData;
4167
4168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4169}/*WDI_KeepAliveReq*/
4170
4171/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 wants to set the Wowl Bcast ptrn to minimize unnecessary
4174 host wakeup due to broadcast traffic while in power
4175 save. Upon the call of this API the WLAN DAL will pack
4176 and send a HAL Wowl Bcast ptrn request message to the
4177 lower RIVA sub-system if DAL is in state STARTED.
4178
4179 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004180 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004181
4182 WDI_PostAssocReq must have been called.
4183
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004186
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 wdiWowlAddBcPtrnCb: callback for passing back the
4188 response of the add Wowl bcast ptrn operation received
4189 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004192 callback
4193
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 @see WDI_PostAssocReq
4195 @return Result of the function call
4196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004198WDI_WowlAddBcPtrnReq
4199(
4200 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4201 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4202 void* pUserData
4203)
4204{
4205 WDI_EventInfoType wdiEventData;
4206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4207
4208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 ------------------------------------------------------------------------*/
4211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4212 {
4213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4214 "WDI API call before module is initialized - Fail request");
4215
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 }
4218
4219 /*------------------------------------------------------------------------
4220 Fill in Event data and post to the Main FSM
4221 ------------------------------------------------------------------------*/
4222 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004224 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 wdiEventData.pUserData = pUserData;
4227
4228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4229}/*WDI_WowlAddBcPtrnReq*/
4230
4231/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 wants to clear the Wowl Bcast ptrn. Upon the call of
4234 this API the WLAN DAL will pack and send a HAL delete
4235 Wowl Bcast ptrn request message to the lower RIVA
4236 sub-system if DAL is in state STARTED.
4237
4238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004240
4241 WDI_WowlAddBcPtrnReq must have been called.
4242
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004245
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 wdiWowlDelBcPtrnCb: callback for passing back the
4247 response of the del Wowl bcast ptrn operation received
4248 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004249
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 callback
4252
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 @see WDI_WowlAddBcPtrnReq
4254 @return Result of the function call
4255*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004256WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004257WDI_WowlDelBcPtrnReq
4258(
4259 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4260 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4261 void* pUserData
4262)
4263{
4264 WDI_EventInfoType wdiEventData;
4265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4266
4267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 ------------------------------------------------------------------------*/
4270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4271 {
4272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4273 "WDI API call before module is initialized - Fail request");
4274
Jeff Johnsone7245742012-09-05 17:12:55 -07004275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 }
4277
4278 /*------------------------------------------------------------------------
4279 Fill in Event data and post to the Main FSM
4280 ------------------------------------------------------------------------*/
4281 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004283 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 wdiEventData.pUserData = pUserData;
4286
4287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4288}/*WDI_WowlDelBcPtrnReq*/
4289
4290/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004292 wants to enter the Wowl state to minimize unnecessary
4293 host wakeup while in power save. Upon the call of this
4294 API the WLAN DAL will pack and send a HAL Wowl enter
4295 request message to the lower RIVA sub-system if DAL is
4296 in state STARTED.
4297
4298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004300
4301 WDI_PostAssocReq must have been called.
4302
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004305
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 wdiWowlEnterReqCb: callback for passing back the
4307 response of the enter Wowl operation received from the
4308 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004309
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 callback
4312
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 @see WDI_PostAssocReq
4314 @return Result of the function call
4315*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004317WDI_WowlEnterReq
4318(
4319 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4320 WDI_WowlEnterReqCb wdiWowlEnterCb,
4321 void* pUserData
4322)
4323{
4324 WDI_EventInfoType wdiEventData;
4325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4326
4327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 ------------------------------------------------------------------------*/
4330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4331 {
4332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4333 "WDI API call before module is initialized - Fail request");
4334
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 }
4337
4338 /*------------------------------------------------------------------------
4339 Fill in Event data and post to the Main FSM
4340 ------------------------------------------------------------------------*/
4341 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004343 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 wdiEventData.pUserData = pUserData;
4346
4347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4348}/*WDI_WowlEnterReq*/
4349
4350/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 wants to exit the Wowl state. Upon the call of this API
4353 the WLAN DAL will pack and send a HAL Wowl exit request
4354 message to the lower RIVA sub-system if DAL is in state
4355 STARTED.
4356
4357 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004358 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004359
4360 WDI_WowlEnterReq must have been called.
4361
Jeff Johnsone7245742012-09-05 17:12:55 -07004362 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004364
Jeff Johnson295189b2012-06-20 16:38:30 -07004365 wdiWowlExitReqCb: callback for passing back the response
4366 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004367
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004369 callback
4370
Jeff Johnson295189b2012-06-20 16:38:30 -07004371 @see WDI_WowlEnterReq
4372 @return Result of the function call
4373*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004374WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004375WDI_WowlExitReq
4376(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004377 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004378 WDI_WowlExitReqCb wdiWowlExitCb,
4379 void* pUserData
4380)
4381{
4382 WDI_EventInfoType wdiEventData;
4383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4384
4385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 ------------------------------------------------------------------------*/
4388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4389 {
4390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4391 "WDI API call before module is initialized - Fail request");
4392
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004394 }
4395
4396 /*------------------------------------------------------------------------
4397 Fill in Event data and post to the Main FSM
4398 ------------------------------------------------------------------------*/
4399 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004400 wdiEventData.pEventData = pwdiWowlExitParams;
4401 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004402 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 wdiEventData.pUserData = pUserData;
4404
4405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4406}/*WDI_WowlExitReq*/
4407
4408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 the upper MAC wants to dynamically adjusts the listen
4411 interval based on the WLAN/MSM activity. Upon the call
4412 of this API the WLAN DAL will pack and send a HAL
4413 configure Apps Cpu Wakeup State request message to the
4414 lower RIVA sub-system.
4415
4416 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004418
Jeff Johnsone7245742012-09-05 17:12:55 -07004419
4420 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 Apps Cpu Wakeup State as specified by the
4422 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004423
Jeff Johnson295189b2012-06-20 16:38:30 -07004424 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4425 back the response of the configure Apps Cpu Wakeup State
4426 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004427
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004429 callback
4430
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 @return Result of the function call
4432*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004434WDI_ConfigureAppsCpuWakeupStateReq
4435(
4436 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4437 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4438 void* pUserData
4439)
4440{
4441 WDI_EventInfoType wdiEventData;
4442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4443
4444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 ------------------------------------------------------------------------*/
4447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4448 {
4449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4450 "WDI API call before module is initialized - Fail request");
4451
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 }
4454
4455 /*------------------------------------------------------------------------
4456 Fill in Event data and post to the Main FSM
4457 ------------------------------------------------------------------------*/
4458 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4460 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4461 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 wdiEventData.pUserData = pUserData;
4463
4464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4465}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004467 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 to to perform a flush operation on a given AC. Upon the
4469 call of this API the WLAN DAL will pack and send a HAL
4470 Flush AC request message to the lower RIVA sub-system if
4471 DAL is in state STARTED.
4472
4473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004475
4476 WDI_AddBAReq must have been called.
4477
Jeff Johnsone7245742012-09-05 17:12:55 -07004478 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 wdiFlushAcRspCb: callback for passing back the response
4482 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004483
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 callback
4486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 @see WDI_AddBAReq
4488 @return Result of the function call
4489*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004490WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004491WDI_FlushAcReq
4492(
4493 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4494 WDI_FlushAcRspCb wdiFlushAcRspCb,
4495 void* pUserData
4496)
4497{
4498 WDI_EventInfoType wdiEventData;
4499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4500
4501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 ------------------------------------------------------------------------*/
4504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4505 {
4506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4507 "WDI API call before module is initialized - Fail request");
4508
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 }
4511
4512 /*------------------------------------------------------------------------
4513 Fill in Event data and post to the Main FSM
4514 ------------------------------------------------------------------------*/
4515 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 wdiEventData.pEventData = pwdiFlushAcReqParams;
4517 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4518 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 wdiEventData.pUserData = pUserData;
4520
4521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4522
4523}/*WDI_FlushAcReq*/
4524
4525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 wants to notify the lower mac on a BT AMP event. This is
4528 to inform BTC-SLM that some BT AMP event occurred. Upon
4529 the call of this API the WLAN DAL will pack and send a
4530 HAL BT AMP event request message to the lower RIVA
4531 sub-system if DAL is in state STARTED.
4532
4533 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004535
Jeff Johnsone7245742012-09-05 17:12:55 -07004536
4537 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004539
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wdiBtAmpEventRspCb: callback for passing back the
4541 response of the BT AMP event operation received from the
4542 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 callback
4546
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 @return Result of the function call
4548*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004550WDI_BtAmpEventReq
4551(
4552 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4553 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4554 void* pUserData
4555)
4556{
4557 WDI_EventInfoType wdiEventData;
4558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4559
4560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 ------------------------------------------------------------------------*/
4563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4564 {
4565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4566 "WDI API call before module is initialized - Fail request");
4567
Jeff Johnsone7245742012-09-05 17:12:55 -07004568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 }
4570
4571 /*------------------------------------------------------------------------
4572 Fill in Event data and post to the Main FSM
4573 ------------------------------------------------------------------------*/
4574 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4576 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4577 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 wdiEventData.pUserData = pUserData;
4579
4580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4581
4582}/*WDI_BtAmpEventReq*/
4583
Jeff Johnsone7245742012-09-05 17:12:55 -07004584#ifdef FEATURE_OEM_DATA_SUPPORT
4585/**
4586 @brief WDI_Start Oem Data Req will be called when the upper MAC
4587 wants to notify the lower mac on a oem data Req event.Upon
4588 the call of this API the WLAN DAL will pack and send a
4589 HAL OEM Data Req event request message to the lower RIVA
4590 sub-system if DAL is in state STARTED.
4591
4592 In state BUSY this request will be queued. Request won't
4593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004594
4595
Jeff Johnsone7245742012-09-05 17:12:55 -07004596
4597 @param pwdiOemDataReqParams: the Oem Data Req as
4598 specified by the Device Interface
4599
4600 wdiStartOemDataRspCb: callback for passing back the
4601 response of the Oem Data Req received from the
4602 device
4603
4604 pUserData: user data will be passed back with the
4605 callback
4606
4607 @return Result of the function call
4608*/
4609WDI_Status
4610WDI_StartOemDataReq
4611(
4612 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4613 WDI_oemDataRspCb wdiOemDataRspCb,
4614 void* pUserData
4615)
4616{
4617 WDI_EventInfoType wdiEventData;
4618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4619
4620 /*------------------------------------------------------------------------
4621 Sanity Check
4622 ------------------------------------------------------------------------*/
4623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4624 {
4625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4626 "WDI API call before module is initialized - Fail request");
4627
4628 return WDI_STATUS_E_NOT_ALLOWED;
4629 }
4630
4631 /*------------------------------------------------------------------------
4632 Fill in Event data and post to the Main FSM
4633 ------------------------------------------------------------------------*/
4634 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4635 wdiEventData.pEventData = pwdiOemDataReqParams;
4636 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4637 wdiEventData.pCBfnc = wdiOemDataRspCb;
4638 wdiEventData.pUserData = pUserData;
4639
4640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4641
4642
4643}
4644
4645#endif
4646
4647
4648/*========================================================================
4649
Jeff Johnson295189b2012-06-20 16:38:30 -07004650 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004651
Jeff Johnson295189b2012-06-20 16:38:30 -07004652==========================================================================*/
4653/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004654 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 the WLAN HW to change the current channel of operation.
4656 Upon the call of this API the WLAN DAL will pack and
4657 send a HAL Start request message to the lower RIVA
4658 sub-system if DAL is in state STARTED.
4659
4660 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004662
4663 WDI_Start must have been called.
4664
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004667
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 wdiSwitchChRspCb: callback for passing back the response
4669 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004670
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 callback
4673
Jeff Johnson295189b2012-06-20 16:38:30 -07004674 @see WDI_Start
4675 @return Result of the function call
4676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004678WDI_SwitchChReq
4679(
4680 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4681 WDI_SwitchChRspCb wdiSwitchChRspCb,
4682 void* pUserData
4683)
4684{
4685 WDI_EventInfoType wdiEventData;
4686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4687
4688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 ------------------------------------------------------------------------*/
4691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4692 {
4693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4694 "WDI API call before module is initialized - Fail request");
4695
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 }
4698
4699 /*------------------------------------------------------------------------
4700 Fill in Event data and post to the Main FSM
4701 ------------------------------------------------------------------------*/
4702 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 wdiEventData.pEventData = pwdiSwitchChReqParams;
4704 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4705 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 wdiEventData.pUserData = pUserData;
4707
4708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4709
4710}/*WDI_SwitchChReq*/
4711
4712
4713/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004714 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 wishes to add or update a STA in HW. Upon the call of
4716 this API the WLAN DAL will pack and send a HAL Start
4717 message request message to the lower RIVA sub-system if
4718 DAL is in state STARTED.
4719
4720 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004721 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004722
4723 WDI_Start must have been called.
4724
Jeff Johnsone7245742012-09-05 17:12:55 -07004725 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004726 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004727
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 wdiConfigSTARspCb: callback for passing back the
4729 response of the config STA operation received from the
4730 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004731
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004733 callback
4734
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 @see WDI_Start
4736 @return Result of the function call
4737*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004738WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004739WDI_ConfigSTAReq
4740(
4741 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4742 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4743 void* pUserData
4744)
4745{
4746 WDI_EventInfoType wdiEventData;
4747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4748
4749 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 ------------------------------------------------------------------------*/
4752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4753 {
4754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4755 "WDI API call before module is initialized - Fail request");
4756
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 }
4759
4760 /*------------------------------------------------------------------------
4761 Fill in Event data and post to the Main FSM
4762 ------------------------------------------------------------------------*/
4763 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4765 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4766 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 wdiEventData.pUserData = pUserData;
4768
4769 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4770
4771}/*WDI_ConfigSTAReq*/
4772
4773/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004774 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004775 wants to change the state of an ongoing link. Upon the
4776 call of this API the WLAN DAL will pack and send a HAL
4777 Start message request message to the lower RIVA
4778 sub-system if DAL is in state STARTED.
4779
4780 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004781 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004782
4783 WDI_JoinStartReq must have been called.
4784
Jeff Johnsone7245742012-09-05 17:12:55 -07004785 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004787
Jeff Johnson295189b2012-06-20 16:38:30 -07004788 wdiSetLinkStateRspCb: callback for passing back the
4789 response of the set link state operation received from
4790 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004791
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 callback
4794
Jeff Johnson295189b2012-06-20 16:38:30 -07004795 @see WDI_JoinStartReq
4796 @return Result of the function call
4797*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004798WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004799WDI_SetLinkStateReq
4800(
4801 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4802 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4803 void* pUserData
4804)
4805{
4806 WDI_EventInfoType wdiEventData;
4807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4808
4809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004811 ------------------------------------------------------------------------*/
4812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4813 {
4814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4815 "WDI API call before module is initialized - Fail request");
4816
Jeff Johnsone7245742012-09-05 17:12:55 -07004817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 }
4819
4820 /*------------------------------------------------------------------------
4821 Fill in Event data and post to the Main FSM
4822 ------------------------------------------------------------------------*/
4823 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4825 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4826 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004827 wdiEventData.pUserData = pUserData;
4828
4829 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4830
4831}/*WDI_SetLinkStateReq*/
4832
4833
4834/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 to get statistics (MIB counters) from the device. Upon
4837 the call of this API the WLAN DAL will pack and send a
4838 HAL Start request message to the lower RIVA sub-system
4839 if DAL is in state STARTED.
4840
4841 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004843
4844 WDI_Start must have been called.
4845
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004848
Jeff Johnson295189b2012-06-20 16:38:30 -07004849 wdiGetStatsRspCb: callback for passing back the response
4850 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004851
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 callback
4854
Jeff Johnson295189b2012-06-20 16:38:30 -07004855 @see WDI_Start
4856 @return Result of the function call
4857*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004858WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004859WDI_GetStatsReq
4860(
4861 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4862 WDI_GetStatsRspCb wdiGetStatsRspCb,
4863 void* pUserData
4864)
4865{
4866 WDI_EventInfoType wdiEventData;
4867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4868
4869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 ------------------------------------------------------------------------*/
4872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4873 {
4874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4875 "WDI API call before module is initialized - Fail request");
4876
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 }
4879
4880 /*------------------------------------------------------------------------
4881 Fill in Event data and post to the Main FSM
4882 ------------------------------------------------------------------------*/
4883 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 wdiEventData.pEventData = pwdiGetStatsReqParams;
4885 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4886 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004887 wdiEventData.pUserData = pUserData;
4888
4889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4890
4891}/*WDI_GetStatsReq*/
4892
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004893#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4894/**
4895 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4896 to get roam rssi from the device. Upon
4897 the call of this API the WLAN DAL will pack and send a
4898 HAL Start request message to the lower RIVA sub-system
4899 if DAL is in state STARTED.
4900
4901 In state BUSY this request will be queued. Request won't
4902 be allowed in any other state.
4903
4904 WDI_Start must have been called.
4905
4906 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4907 specified by the Device Interface
4908
4909 wdiGetRoamRssiRspCb: callback for passing back the response
4910 of the get stats operation received from the device
4911
4912 pUserData: user data will be passed back with the
4913 callback
4914
4915 @see WDI_Start
4916 @return Result of the function call
4917*/
4918WDI_Status
4919WDI_GetRoamRssiReq
4920(
4921 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4922 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4923 void* pUserData
4924)
4925{
4926 WDI_EventInfoType wdiEventData;
4927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4928
4929 /*------------------------------------------------------------------------
4930 Sanity Check
4931 ------------------------------------------------------------------------*/
4932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4933 {
4934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4935 "WDI API call before module is initialized - Fail request");
4936
4937 return WDI_STATUS_E_NOT_ALLOWED;
4938 }
4939 /*------------------------------------------------------------------------
4940 Fill in Event data and post to the Main FSM
4941 ------------------------------------------------------------------------*/
4942 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4943 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4944 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4945 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4946 wdiEventData.pUserData = pUserData;
4947
4948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4949
4950}/*WDI_GetRoamRssiReq*/
4951#endif
4952
Jeff Johnson295189b2012-06-20 16:38:30 -07004953
4954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 it wishes to change the configuration of the WLAN
4957 Device. Upon the call of this API the WLAN DAL will pack
4958 and send a HAL Update CFG request message to the lower
4959 RIVA sub-system if DAL is in state STARTED.
4960
4961 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004963
4964 WDI_Start must have been called.
4965
Jeff Johnsone7245742012-09-05 17:12:55 -07004966 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004967 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004968
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 wdiUpdateCfgsRspCb: callback for passing back the
4970 response of the update cfg operation received from the
4971 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004972
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004974 callback
4975
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 @see WDI_Start
4977 @return Result of the function call
4978*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004979WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004980WDI_UpdateCfgReq
4981(
4982 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4983 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4984 void* pUserData
4985)
4986{
4987 WDI_EventInfoType wdiEventData;
4988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4989
4990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004991 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 ------------------------------------------------------------------------*/
4993 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4994 {
4995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4996 "WDI API call before module is initialized - Fail request");
4997
Jeff Johnsone7245742012-09-05 17:12:55 -07004998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 }
5000
5001 /*------------------------------------------------------------------------
5002 Fill in Event data and post to the Main FSM
5003 ------------------------------------------------------------------------*/
5004 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005005 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5006 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5007 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005008 wdiEventData.pUserData = pUserData;
5009
5010 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5011
5012}/*WDI_UpdateCfgReq*/
5013
5014
5015
5016/**
5017 @brief WDI_AddBAReq will be called when the upper MAC has setup
5018 successfully a BA session and needs to notify the HW for
5019 the appropriate settings to take place. Upon the call of
5020 this API the WLAN DAL will pack and send a HAL Add BA
5021 request message to the lower RIVA sub-system if DAL is
5022 in state STARTED.
5023
5024 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005026
5027 WDI_PostAssocReq must have been called.
5028
5029 @param wdiAddBAReqParams: the add BA parameters as specified by
5030 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005031
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 wdiAddBARspCb: callback for passing back the response of
5033 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005036 callback
5037
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 @see WDI_PostAssocReq
5039 @return Result of the function call
5040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005042WDI_AddBAReq
5043(
5044 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5045 WDI_AddBARspCb wdiAddBARspCb,
5046 void* pUserData
5047)
5048{
5049 WDI_EventInfoType wdiEventData;
5050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5051
5052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005054 ------------------------------------------------------------------------*/
5055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5056 {
5057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5058 "WDI API call before module is initialized - Fail request");
5059
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 }
5062
5063 /*------------------------------------------------------------------------
5064 Fill in Event data and post to the Main FSM
5065 ------------------------------------------------------------------------*/
5066 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 wdiEventData.pEventData = pwdiAddBAReqParams;
5068 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5069 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005070 wdiEventData.pUserData = pUserData;
5071
5072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5073
5074}/*WDI_AddBAReq*/
5075
5076
5077/**
5078 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5079 successfully a BA session and needs to notify the HW for
5080 the appropriate settings to take place. Upon the call of
5081 this API the WLAN DAL will pack and send a HAL Add BA
5082 request message to the lower RIVA sub-system if DAL is
5083 in state STARTED.
5084
5085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005087
5088 WDI_PostAssocReq must have been called.
5089
5090 @param wdiAddBAReqParams: the add BA parameters as specified by
5091 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005092
Jeff Johnson295189b2012-06-20 16:38:30 -07005093 wdiAddBARspCb: callback for passing back the response of
5094 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005095
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005097 callback
5098
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 @see WDI_PostAssocReq
5100 @return Result of the function call
5101*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005102WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005103WDI_TriggerBAReq
5104(
5105 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5106 WDI_TriggerBARspCb wdiTriggerBARspCb,
5107 void* pUserData
5108)
5109{
5110 WDI_EventInfoType wdiEventData;
5111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5112
5113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005114 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 ------------------------------------------------------------------------*/
5116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5117 {
5118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5119 "WDI API call before module is initialized - Fail request");
5120
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 }
5123
5124 /*------------------------------------------------------------------------
5125 Fill in Event data and post to the Main FSM
5126 ------------------------------------------------------------------------*/
5127 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5129 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5130 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 wdiEventData.pUserData = pUserData;
5132
5133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5134
5135}/*WDI_AddBAReq*/
5136
5137/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005138 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005139 wishes to update any of the Beacon parameters used by HW.
5140 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5141 message to the lower RIVA sub-system if DAL is in state
5142 STARTED.
5143
5144 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005146
5147 WDI_PostAssocReq must have been called.
5148
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005151
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 wdiUpdateBeaconParamsRspCb: callback for passing back the
5153 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 callback
5157
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 @see WDI_PostAssocReq
5159 @return Result of the function call
5160*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005161WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005162WDI_UpdateBeaconParamsReq
5163(
5164 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5165 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5166 void* pUserData
5167)
5168{
5169 WDI_EventInfoType wdiEventData;
5170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5171
5172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 ------------------------------------------------------------------------*/
5175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5176 {
5177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5178 "WDI API call before module is initialized - Fail request");
5179
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 }
5182
5183 /*------------------------------------------------------------------------
5184 Fill in Event data and post to the Main FSM
5185 ------------------------------------------------------------------------*/
5186 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5188 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5189 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wdiEventData.pUserData = pUserData;
5191
5192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5193
5194}/*WDI_UpdateBeaconParamsReq*/
5195
5196/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005197 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 wishes to update the Beacon template used by HW.
5199 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5200 message to the lower RIVA sub-system if DAL is in state
5201 STARTED.
5202
5203 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005204 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005205
5206 WDI_PostAssocReq must have been called.
5207
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005210
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 wdiSendBeaconParamsRspCb: callback for passing back the
5212 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005213
Jeff Johnson295189b2012-06-20 16:38:30 -07005214 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005215 callback
5216
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 @see WDI_PostAssocReq
5218 @return Result of the function call
5219*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005220WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005221WDI_SendBeaconParamsReq
5222(
5223 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5224 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5225 void* pUserData
5226)
5227{
5228 WDI_EventInfoType wdiEventData;
5229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5230
5231 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 ------------------------------------------------------------------------*/
5234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5235 {
5236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5237 "WDI API call before module is initialized - Fail request");
5238
Jeff Johnsone7245742012-09-05 17:12:55 -07005239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 }
5241
5242 /*------------------------------------------------------------------------
5243 Fill in Event data and post to the Main FSM
5244 ------------------------------------------------------------------------*/
5245 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 wdiEventData.pEventData = pwdiSendBeaconParams;
5247 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5248 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 wdiEventData.pUserData = pUserData;
5250
5251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5252
5253}/*WDI_SendBeaconParamsReq*/
5254
5255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 upper MAC wants to update the probe response template to
5258 be transmitted as Soft AP
5259 Upon the call of this API the WLAN DAL will
5260 pack and send the probe rsp template message to the
5261 lower RIVA sub-system if DAL is in state STARTED.
5262
5263 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005265
5266
Jeff Johnsone7245742012-09-05 17:12:55 -07005267 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 wdiSendBeaconParamsRspCb: callback for passing back the
5271 response of the Send Beacon Params operation received
5272 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005273
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 callback
5276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 @see WDI_AddBAReq
5278 @return Result of the function call
5279*/
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005282WDI_UpdateProbeRspTemplateReq
5283(
5284 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5285 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5286 void* pUserData
5287)
5288{
5289 WDI_EventInfoType wdiEventData;
5290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5291
5292 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 ------------------------------------------------------------------------*/
5295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5296 {
5297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5298 "WDI API call before module is initialized - Fail request");
5299
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 }
5302
5303 /*------------------------------------------------------------------------
5304 Fill in Event data and post to the Main FSM
5305 ------------------------------------------------------------------------*/
5306 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5308 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5309 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 wdiEventData.pUserData = pUserData;
5311
5312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5313
5314}/*WDI_UpdateProbeRspTemplateReq*/
5315
5316/**
5317 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5318 to the NV memory.
5319
5320
5321 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5322 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 wdiNvDownloadRspCb: callback for passing back the response of
5325 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 callback
5329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 @see WDI_PostAssocReq
5331 @return Result of the function call
5332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005334WDI_NvDownloadReq
5335(
5336 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5337 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5338 void* pUserData
5339)
5340{
5341 WDI_EventInfoType wdiEventData;
5342
5343 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 ------------------------------------------------------------------------*/
5346 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5347 {
5348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5349 "WDI API call before module is initialized - Fail request");
5350
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 }
5353
5354 /*------------------------------------------------------------------------
5355 Fill in Event data and post to the Main FSM
5356 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5358 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5359 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5360 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 wdiEventData.pUserData = pUserData;
5362
5363 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5364
5365}/*WDI_NVDownloadReq*/
5366
Jeff Johnson295189b2012-06-20 16:38:30 -07005367/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 upper MAC wants to send Notice of Absence
5370 Upon the call of this API the WLAN DAL will
5371 pack and send the probe rsp template message to the
5372 lower RIVA sub-system if DAL is in state STARTED.
5373
5374 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005376
5377
Jeff Johnsone7245742012-09-05 17:12:55 -07005378 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005379 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 wdiSendBeaconParamsRspCb: callback for passing back the
5382 response of the Send Beacon Params operation received
5383 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005384
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005386 callback
5387
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 @see WDI_AddBAReq
5389 @return Result of the function call
5390*/
5391WDI_Status
5392WDI_SetP2PGONOAReq
5393(
5394 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5395 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5396 void* pUserData
5397)
5398{
5399 WDI_EventInfoType wdiEventData;
5400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5401
5402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 ------------------------------------------------------------------------*/
5405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5406 {
5407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5408 "WDI API call before module is initialized - Fail request");
5409
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 }
5412
5413 /*------------------------------------------------------------------------
5414 Fill in Event data and post to the Main FSM
5415 ------------------------------------------------------------------------*/
5416 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5418 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5419 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 wdiEventData.pUserData = pUserData;
5421
5422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5423
5424}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005425
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305426#ifdef FEATURE_WLAN_TDLS
5427/**
5428 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5429 upper MAC wants to send TDLS Link Establish Request Parameters
5430 Upon the call of this API the WLAN DAL will
5431 pack and send the TDLS Link Establish Request message to the
5432 lower RIVA sub-system if DAL is in state STARTED.
5433
5434 In state BUSY this request will be queued. Request won't
5435 be allowed in any other state.
5436
5437
5438 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5439 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5440
5441 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5442 response of the TDLS Link Establish request received
5443 from the device
5444
5445 pUserData: user data will be passed back with the
5446 callback
5447
5448 @see
5449 @return Result of the function call
5450*/
5451WDI_Status
5452WDI_SetTDLSLinkEstablishReq
5453(
5454 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5455 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5456 void* pUserData
5457)
5458{
5459 WDI_EventInfoType wdiEventData;
5460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5461
5462 /*------------------------------------------------------------------------
5463 Sanity Check
5464 ------------------------------------------------------------------------*/
5465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5466 {
5467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5468 "WDI API call before module is initialized - Fail request");
5469
5470 return WDI_STATUS_E_NOT_ALLOWED;
5471 }
5472
5473 /*------------------------------------------------------------------------
5474 Fill in Event data and post to the Main FSM
5475 ------------------------------------------------------------------------*/
5476 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5477 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5478 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5479 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5480 wdiEventData.pUserData = pUserData;
5481
5482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5483
5484}/*WDI_SetTDLSLinkEstablishReq*/
5485#endif
5486
Jeff Johnson295189b2012-06-20 16:38:30 -07005487/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005488 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005489 UMAC wanted to add STA self while opening any new session
5490 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005491 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005492
5493
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005495 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005496
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005498 callback
5499
5500 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 @return Result of the function call
5502*/
5503WDI_Status
5504WDI_AddSTASelfReq
5505(
5506 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5507 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5508 void* pUserData
5509)
5510{
5511 WDI_EventInfoType wdiEventData;
5512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5513
5514 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005515 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 ------------------------------------------------------------------------*/
5517 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5518 {
5519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5520 "WDI API call before module is initialized - Fail request");
5521
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005523 }
5524
5525 /*------------------------------------------------------------------------
5526 Fill in Event data and post to the Main FSM
5527 ------------------------------------------------------------------------*/
5528 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5530 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5531 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 wdiEventData.pUserData = pUserData;
5533
5534 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5535
5536}/*WDI_AddSTASelfReq*/
5537
5538
Jeff Johnsone7245742012-09-05 17:12:55 -07005539#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005540/**
5541 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5542 the device of a successful add TSpec negotiation. HW
5543 needs to receive the TSpec Info from the UMAC in order
5544 to configure properly the QoS data traffic. Upon the
5545 call of this API the WLAN DAL will pack and send a HAL
5546 Add TS request message to the lower RIVA sub-system if
5547 DAL is in state STARTED.
5548
5549 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005551
5552 WDI_PostAssocReq must have been called.
5553
5554 @param wdiAddTsReqParams: the add TS parameters as specified by
5555 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005556
Jeff Johnson295189b2012-06-20 16:38:30 -07005557 wdiAddTsRspCb: callback for passing back the response of
5558 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005559
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005561 callback
5562
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 @see WDI_PostAssocReq
5564 @return Result of the function call
5565*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005567WDI_AggrAddTSReq
5568(
5569 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5570 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5571 void* pUserData
5572)
5573{
5574 WDI_EventInfoType wdiEventData;
5575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5576
5577 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005578 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005579 ------------------------------------------------------------------------*/
5580 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5581 {
5582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5583 "WDI API call before module is initialized - Fail request");
5584
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 }
5587
5588 /*------------------------------------------------------------------------
5589 Fill in Event data and post to the Main FSM
5590 ------------------------------------------------------------------------*/
5591 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5593 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5594 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 wdiEventData.pUserData = pUserData;
5596
5597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5598
5599}/*WDI_AggrAddTSReq*/
5600
5601#endif /* WLAN_FEATURE_VOWIFI_11R */
5602
Jeff Johnson295189b2012-06-20 16:38:30 -07005603/**
5604 @brief WDI_FTMCommandReq
5605 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005606
5607 @param ftmCommandReq: FTM Command Body
5608 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005609 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005610
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 @see
5612 @return Result of the function call
5613*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005614WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005615WDI_FTMCommandReq
5616(
5617 WDI_FTMCommandReqType *ftmCommandReq,
5618 WDI_FTMCommandRspCb ftmCommandRspCb,
5619 void *pUserData
5620)
5621{
5622 WDI_EventInfoType wdiEventData;
5623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5624
5625 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005627 ------------------------------------------------------------------------*/
5628 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5629 {
5630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5631 "WDI API call before module is initialized - Fail request");
5632
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 }
5635
5636 /*------------------------------------------------------------------------
5637 Fill in Event data and post to the Main FSM
5638 ------------------------------------------------------------------------*/
5639 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5640 wdiEventData.pEventData = (void *)ftmCommandReq;
5641 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5642 wdiEventData.pCBfnc = ftmCommandRspCb;
5643 wdiEventData.pUserData = pUserData;
5644
5645 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5646}
Jeff Johnson295189b2012-06-20 16:38:30 -07005647/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005648 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005649
5650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005652
5653
5654 @param pwdiResumeReqParams: as specified by
5655 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005656
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 wdiResumeReqRspCb: callback for passing back the response of
5658 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005659
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 callback
5662
5663 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005664 @return Result of the function call
5665*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005666WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005667WDI_HostResumeReq
5668(
5669 WDI_ResumeParamsType* pwdiResumeReqParams,
5670 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5671 void* pUserData
5672)
5673{
5674 WDI_EventInfoType wdiEventData;
5675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5676
5677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 ------------------------------------------------------------------------*/
5680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5681 {
5682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5683 "WDI API call before module is initialized - Fail request");
5684
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005686 }
5687
5688 /*------------------------------------------------------------------------
5689 Fill in Event data and post to the Main FSM
5690 ------------------------------------------------------------------------*/
5691 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 wdiEventData.pEventData = pwdiResumeReqParams;
5693 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5694 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005695 wdiEventData.pUserData = pUserData;
5696
5697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5698
5699}/*WDI_HostResumeReq*/
5700
5701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005702 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005703
5704 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005705 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005706
5707
5708 @param pwdiDelStaSelfReqParams: as specified by
5709 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005710
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 wdiDelStaSelfRspCb: callback for passing back the response of
5712 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005713
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005715 callback
5716
Jeff Johnson295189b2012-06-20 16:38:30 -07005717 @see WDI_PostAssocReq
5718 @return Result of the function call
5719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005721WDI_DelSTASelfReq
5722(
5723 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5724 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5725 void* pUserData
5726)
5727{
5728 WDI_EventInfoType wdiEventData;
5729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5730
5731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 ------------------------------------------------------------------------*/
5734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5735 {
5736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5737 "WDI API call before module is initialized - Fail request");
5738
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 }
5741
5742 /*------------------------------------------------------------------------
5743 Fill in Event data and post to the Main FSM
5744 ------------------------------------------------------------------------*/
5745 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5747 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5748 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 wdiEventData.pUserData = pUserData;
5750
5751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5752
5753}/*WDI_AggrAddTSReq*/
5754
5755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005756 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5757 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 Upon the call of this API the WLAN DAL will pack
5759 and send a HAL Set Tx Per Tracking request message to the
5760 lower RIVA sub-system if DAL is in state STARTED.
5761
5762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005764
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005766 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005767
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 pwdiSetTxPerTrackingRspCb: callback for passing back the
5769 response of the set Tx PER Tracking configurations operation received
5770 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005771
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005773 callback
5774
Jeff Johnson295189b2012-06-20 16:38:30 -07005775 @return Result of the function call
5776*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005777WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005778WDI_SetTxPerTrackingReq
5779(
5780 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5781 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5782 void* pUserData
5783)
5784{
5785 WDI_EventInfoType wdiEventData;
5786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5787
5788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 ------------------------------------------------------------------------*/
5791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5792 {
5793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5794 "WDI API call before module is initialized - Fail request");
5795
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 }
5798
5799 /*------------------------------------------------------------------------
5800 Fill in Event data and post to the Main FSM
5801 ------------------------------------------------------------------------*/
5802 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005805 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 wdiEventData.pUserData = pUserData;
5807
5808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5809
5810}/*WDI_SetTxPerTrackingReq*/
5811
5812/**
5813 @brief WDI_SetTmLevelReq
5814 If HW Thermal condition changed, driver should react based on new
5815 HW thermal condition.
5816
5817 @param pwdiSetTmLevelReq: New thermal condition information
5818
5819 pwdiSetTmLevelRspCb: callback
5820
5821 usrData: user data will be passed back with the
5822 callback
5823
5824 @return Result of the function call
5825*/
5826WDI_Status
5827WDI_SetTmLevelReq
5828(
5829 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5830 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5831 void *usrData
5832)
5833{
5834 WDI_EventInfoType wdiEventData;
5835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5836
5837 /*------------------------------------------------------------------------
5838 Sanity Check
5839 ------------------------------------------------------------------------*/
5840 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5841 {
5842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5843 "WDI API call before module is initialized - Fail request");
5844
5845 return WDI_STATUS_E_NOT_ALLOWED;
5846 }
5847
5848 /*------------------------------------------------------------------------
5849 Fill in Event data and post to the Main FSM
5850 ------------------------------------------------------------------------*/
5851 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5852 wdiEventData.pEventData = pwdiSetTmLevelReq;
5853 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5854 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5855 wdiEventData.pUserData = usrData;
5856
5857 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5858}
5859
5860/**
5861 @brief WDI_HostSuspendInd
5862
5863 Suspend Indication from the upper layer will be sent
5864 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005865
Jeff Johnson295189b2012-06-20 16:38:30 -07005866 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005867
5868 @see
5869
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 @return Status of the request
5871*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005873WDI_HostSuspendInd
5874(
5875 WDI_SuspendParamsType* pwdiSuspendIndParams
5876)
5877{
5878
5879 WDI_EventInfoType wdiEventData;
5880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5881
5882 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 ------------------------------------------------------------------------*/
5885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5886 {
5887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5888 "WDI API call before module is initialized - Fail request");
5889
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 }
5892
5893 /*------------------------------------------------------------------------
5894 Fill in Event data and post to the Main FSM
5895 ------------------------------------------------------------------------*/
5896 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 wdiEventData.pEventData = pwdiSuspendIndParams;
5898 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5899 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 wdiEventData.pUserData = NULL;
5901
5902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5903
5904}/*WDI_HostSuspendInd*/
5905
5906/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005907 @brief WDI_TrafficStatsInd
5908 Traffic Stats from the upper layer will be sent
5909 down to HAL
5910
5911 @param WDI_TrafficStatsIndType
5912
5913 @see
5914
5915 @return Status of the request
5916*/
5917WDI_Status
5918WDI_TrafficStatsInd
5919(
5920 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5921)
5922{
5923
5924 WDI_EventInfoType wdiEventData;
5925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5926
5927 /*------------------------------------------------------------------------
5928 Sanity Check
5929 ------------------------------------------------------------------------*/
5930 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5931 {
5932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5933 "WDI API call before module is initialized - Fail request");
5934
5935 return WDI_STATUS_E_NOT_ALLOWED;
5936 }
5937
5938 /*------------------------------------------------------------------------
5939 Fill in Event data and post to the Main FSM
5940 ------------------------------------------------------------------------*/
5941 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5942 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5943 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5944 wdiEventData.pCBfnc = NULL;
5945 wdiEventData.pUserData = NULL;
5946
5947 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5948
5949}/*WDI_TrafficStatsInd*/
5950
Chet Lanctota96bb432013-03-18 10:26:30 -07005951#ifdef WLAN_FEATURE_11W
5952/**
5953 @brief WDI_ExcludeUnencryptedInd
5954 Register with HAL to receive/drop unencrypted frames
5955
5956 @param WDI_ExcludeUnencryptIndType
5957
5958 @see
5959
5960 @return Status of the request
5961*/
5962WDI_Status
5963WDI_ExcludeUnencryptedInd
5964(
5965 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5966)
5967{
5968
5969 WDI_EventInfoType wdiEventData;
5970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5971
5972 /*------------------------------------------------------------------------
5973 Sanity Check
5974 ------------------------------------------------------------------------*/
5975 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5976 {
5977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5978 "WDI API call before module is initialized - Fail request");
5979
5980 return WDI_STATUS_E_NOT_ALLOWED;
5981 }
5982
5983 /*------------------------------------------------------------------------
5984 Fill in Event data and post to the Main FSM
5985 ------------------------------------------------------------------------*/
5986 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5987 wdiEventData.pEventData = pWdiExcUnencParams;
5988 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5989 wdiEventData.pCBfnc = NULL;
5990 wdiEventData.pUserData = NULL;
5991
5992 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5993
5994}/*WDI_TrafficStatsInd*/
5995#endif
5996
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005997/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 @brief WDI_HALDumpCmdReq
5999 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006000
6001 @param halDumpCmdReqParams: Hal Dump Command Body
6002 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006004
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 @see
6006 @return Result of the function call
6007*/
6008WDI_Status WDI_HALDumpCmdReq
6009(
6010 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6011 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6012 void *pUserData
6013)
6014{
6015 WDI_EventInfoType wdiEventData;
6016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6017
6018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 ------------------------------------------------------------------------*/
6021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6022 {
6023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6024 "WDI API call before module is initialized - Fail request");
6025
Jeff Johnsone7245742012-09-05 17:12:55 -07006026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 }
6028
6029 /*------------------------------------------------------------------------
6030 Fill in Event data and post to the Main FSM
6031 ------------------------------------------------------------------------*/
6032 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6033 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6034 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6035 wdiEventData.pCBfnc = halDumpCmdRspCb;
6036 wdiEventData.pUserData = pUserData;
6037
6038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6039}
6040
Jeff Johnsone7245742012-09-05 17:12:55 -07006041/*============================================================================
6042
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006044
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 ============================================================================*/
6046
6047/**
6048 @brief Main FSM Start function for all states except BUSY
6049
Jeff Johnsone7245742012-09-05 17:12:55 -07006050
6051 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006052 wdiEV: event posted to the main DAL FSM
6053 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 structure
6055
Jeff Johnson295189b2012-06-20 16:38:30 -07006056 @see
6057 @return Result of the function call
6058*/
6059WDI_Status
6060WDI_PostMainEvent
6061(
Jeff Johnsone7245742012-09-05 17:12:55 -07006062 WDI_ControlBlockType* pWDICtx,
6063 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006065
Jeff Johnson295189b2012-06-20 16:38:30 -07006066)
6067{
Jeff Johnsone7245742012-09-05 17:12:55 -07006068 WDI_Status wdiStatus;
6069 WDI_MainFuncType pfnWDIMainEvHdlr;
6070 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6072
6073 /*-------------------------------------------------------------------------
6074 Sanity check
6075 -------------------------------------------------------------------------*/
6076 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6077 ( wdiEV >= WDI_MAX_EVENT ))
6078 {
6079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6080 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6081 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006083 }
6084
6085 /*Access to the global state must be locked */
6086 wpalMutexAcquire(&pWDICtx->wptMutex);
6087
6088 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006090
6091 wdiOldState = pWDICtx->uGlobalState;
6092
6093 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006094 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6095 response comes from CCPU for the request sent by host:
6096 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 -07006097 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 -07006098 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 CCPU:
6100 don't change the state */
6101 if ( WDI_RESPONSE_EVENT != wdiEV)
6102 {
6103 /*Transition to BUSY State - the request is now being processed by the FSM,
6104 if the request fails we shall transition back to the old state, if not
6105 the request will manage its own state transition*/
6106 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6107 }
6108 /* If the state function associated with the EV is NULL it means that this
6109 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006110 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006111 {
6112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 }
6117 else
6118 {
6119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006120 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006121 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006122 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006123 }
6124
6125 /* If a request handles itself well it will end up in a success or in a
6126 pending
6127 Success - means that the request was processed and the proper state
6128 transition already occurred or will occur when the resp is received
6129 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 Pending - means the request could not be processed at this moment in time
6132 because the FSM was already busy so no state transition or dequeueing
6133 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006134
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 Success for synchronous case means that the transition may occur and
6136 processing of pending requests may continue - so it should go through
6137 and restores the state and continue processing queued requests*/
6138 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6139 ( WDI_STATUS_PENDING != wdiStatus ))
6140 {
6141 if ( WDI_RESPONSE_EVENT != wdiEV)
6142 {
6143 /*The request has failed or could not be processed - transition back to
6144 the old state - check to see if anything was queued and try to execute
6145 The dequeue logic should post a message to a thread and return - no
6146 actual processing can occur */
6147 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6148 }
6149 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006150
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 }
6152
6153 /* we have completed processing the event */
6154 wpalMutexRelease(&pWDICtx->wptMutex);
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006157
6158}/*WDI_PostMainEvent*/
6159
6160
6161/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006163--------------------------------------------------------------------------*/
6164/**
6165 @brief Main FSM Start function for all states except BUSY
6166
Jeff Johnsone7245742012-09-05 17:12:55 -07006167
6168 @param pWDICtx: pointer to the WLAN DAL context
6169 pEventData: pointer to the event information structure
6170
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 @see
6172 @return Result of the function call
6173*/
6174WDI_Status
6175WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006176(
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 WDI_ControlBlockType* pWDICtx,
6178 WDI_EventInfoType* pEventData
6179)
6180{
6181
6182 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006183 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006184 ----------------------------------------------------------------------*/
6185 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6186 {
6187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 pWDICtx, pEventData);
6190 return WDI_STATUS_E_FAILURE;
6191 }
6192
6193 wpalMutexAcquire(&pWDICtx->wptMutex);
6194
6195 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006196 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 ----------------------------------------------------------------------*/
6198 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6199 {
6200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6201 "Control Transport not yet Open - queueing the request");
6202
6203 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006205
6206 wpalMutexRelease(&pWDICtx->wptMutex);
6207 return WDI_STATUS_PENDING;
6208 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006209
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 wpalMutexRelease(&pWDICtx->wptMutex);
6211
6212 /*Return Success*/
6213 return WDI_ProcessRequest( pWDICtx, pEventData );
6214
6215}/*WDI_MainStart*/
6216
6217/**
6218 @brief Main FSM Response function for state INIT
6219
Jeff Johnsone7245742012-09-05 17:12:55 -07006220
6221 @param pWDICtx: pointer to the WLAN DAL context
6222 pEventData: pointer to the event information structure
6223
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 @see
6225 @return Result of the function call
6226*/
6227WDI_Status
6228WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006229(
Jeff Johnson295189b2012-06-20 16:38:30 -07006230 WDI_ControlBlockType* pWDICtx,
6231 WDI_EventInfoType* pEventData
6232)
6233{
6234 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006236 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006237 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006238
6239 /*Return Success*/
6240 return WDI_STATUS_E_NOT_ALLOWED;
6241}/* WDI_MainRspInit */
6242
6243/**
6244 @brief Main FSM Close function for all states except BUSY
6245
Jeff Johnsone7245742012-09-05 17:12:55 -07006246
6247 @param pWDICtx: pointer to the WLAN DAL context
6248 pEventData: pointer to the event information structure
6249
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 @see
6251 @return Result of the function call
6252*/
6253WDI_Status
6254WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006255(
Jeff Johnson295189b2012-06-20 16:38:30 -07006256 WDI_ControlBlockType* pWDICtx,
6257 WDI_EventInfoType* pEventData
6258)
6259{
6260
6261 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ----------------------------------------------------------------------*/
6264 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6265 {
6266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006267 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006268 pWDICtx, pEventData);
6269 return WDI_STATUS_E_FAILURE;
6270 }
6271
6272 /*Return Success*/
6273 return WDI_ProcessRequest( pWDICtx, pEventData );
6274
6275}/*WDI_MainClose*/
6276/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006277 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006278--------------------------------------------------------------------------*/
6279/**
6280 @brief Main FSM Start function for state STARTED
6281
Jeff Johnsone7245742012-09-05 17:12:55 -07006282
6283 @param pWDICtx: pointer to the WLAN DAL context
6284 pEventData: pointer to the event information structure
6285
Jeff Johnson295189b2012-06-20 16:38:30 -07006286 @see
6287 @return Result of the function call
6288*/
6289WDI_Status
6290WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006291(
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 WDI_ControlBlockType* pWDICtx,
6293 WDI_EventInfoType* pEventData
6294)
6295{
6296 WDI_StartRspCb wdiStartRspCb = NULL;
6297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6298
6299 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 ----------------------------------------------------------------------*/
6302 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6303 {
6304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 pWDICtx, pEventData);
6307 return WDI_STATUS_E_FAILURE;
6308 }
6309
6310 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006311 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 ----------------------------------------------------------------------*/
6313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006314 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006315
6316 wpalMutexAcquire(&pWDICtx->wptMutex);
6317
6318 /*Transition back to started because the post function transitioned us to
6319 busy*/
6320 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6321
6322 /*Check to see if any request is pending*/
6323 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006324
Jeff Johnson295189b2012-06-20 16:38:30 -07006325 wpalMutexRelease(&pWDICtx->wptMutex);
6326
6327 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6329
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 /*Notify UMAC*/
6331 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6332
6333 /*Return Success*/
6334 return WDI_STATUS_SUCCESS;
6335
6336}/*WDI_MainStartStarted*/
6337
6338/**
6339 @brief Main FSM Stop function for state STARTED
6340
Jeff Johnsone7245742012-09-05 17:12:55 -07006341
6342 @param pWDICtx: pointer to the WLAN DAL context
6343 pEventData: pointer to the event information structure
6344
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 @see
6346 @return Result of the function call
6347*/
6348WDI_Status
6349WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006350(
Jeff Johnson295189b2012-06-20 16:38:30 -07006351 WDI_ControlBlockType* pWDICtx,
6352 WDI_EventInfoType* pEventData
6353)
6354{
6355 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006357 ----------------------------------------------------------------------*/
6358 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6359 {
6360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 pWDICtx, pEventData);
6363 return WDI_STATUS_E_FAILURE;
6364 }
6365
6366 /*State at this point is BUSY - because we enter this state before posting
6367 an event to the FSM in order to prevent potential race conditions*/
6368
6369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6370 "Processing stop request in FSM");
6371
6372 /*Return Success*/
6373 return WDI_ProcessRequest( pWDICtx, pEventData );
6374
6375}/*WDI_MainStopStarted*/
6376/**
6377 @brief Main FSM Request function for state started
6378
Jeff Johnsone7245742012-09-05 17:12:55 -07006379
6380 @param pWDICtx: pointer to the WLAN DAL context
6381 pEventData: pointer to the event information structure
6382
Jeff Johnson295189b2012-06-20 16:38:30 -07006383 @see
6384 @return Result of the function call
6385*/
6386WDI_Status
6387WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006388(
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 WDI_ControlBlockType* pWDICtx,
6390 WDI_EventInfoType* pEventData
6391)
6392{
6393
6394 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006396 ----------------------------------------------------------------------*/
6397 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6398 {
6399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 pWDICtx, pEventData);
6402 return WDI_STATUS_E_FAILURE;
6403 }
6404
6405 /*State at this point is BUSY - because we enter this state before posting
6406 an event to the FSM in order to prevent potential race conditions*/
6407
6408 /*Return Success*/
6409 return WDI_ProcessRequest( pWDICtx, pEventData );
6410
6411}/*WDI_MainReqStarted*/
6412
6413/**
6414 @brief Main FSM Response function for all states except INIT
6415
Jeff Johnsone7245742012-09-05 17:12:55 -07006416
6417 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006418 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006419
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 @see
6421 @return Result of the function call
6422*/
6423WDI_Status
6424WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006425(
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 WDI_ControlBlockType* pWDICtx,
6427 WDI_EventInfoType* pEventData
6428)
6429{
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006431 wpt_boolean expectedResponse;
6432
6433 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 ----------------------------------------------------------------------*/
6436 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6437 {
6438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006439 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 pWDICtx, pEventData);
6441 return WDI_STATUS_E_FAILURE;
6442 }
6443
6444 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6445 {
6446 /* we received an expected response */
6447 expectedResponse = eWLAN_PAL_TRUE;
6448
6449 /*We expect that we will transition to started after this processing*/
6450 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6451
6452 /* we are no longer expecting a response */
6453 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6454 }
6455 else
6456 {
6457 /* we received an indication or unexpected response */
6458 expectedResponse = eWLAN_PAL_FALSE;
6459 /* for indications no need to update state from what it is right
6460 now, unless it explicitly does it in the indication handler (say
6461 for device failure ind) */
6462 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6463 }
6464
6465 /*Process the response and indication */
6466 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6467
6468 /*Lock the CB as we are about to do a state transition*/
6469 wpalMutexAcquire(&pWDICtx->wptMutex);
6470
6471 /*Transition to the expected state after the response processing
6472 - this should always be started state with the following exceptions:
6473 1. processing of a failed start response
6474 2. device failure detected while processing response
6475 3. stop response received*/
6476 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006477
Jeff Johnson295189b2012-06-20 16:38:30 -07006478 /*Dequeue request that may have been queued while we were waiting for the
6479 response */
6480 if ( expectedResponse )
6481 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006482 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 }
6484
6485 wpalMutexRelease(&pWDICtx->wptMutex);
6486
6487 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006489
6490}/*WDI_MainRsp*/
6491
6492/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006494--------------------------------------------------------------------------*/
6495/**
6496 @brief Main FSM Stop function for state STOPPED
6497
Jeff Johnsone7245742012-09-05 17:12:55 -07006498
6499 @param pWDICtx: pointer to the WLAN DAL context
6500 pEventData: pointer to the event information structure
6501
Jeff Johnson295189b2012-06-20 16:38:30 -07006502 @see
6503 @return Result of the function call
6504*/
6505WDI_Status
6506WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006507(
Jeff Johnson295189b2012-06-20 16:38:30 -07006508 WDI_ControlBlockType* pWDICtx,
6509 WDI_EventInfoType* pEventData
6510)
6511{
6512 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006513 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006514 ----------------------------------------------------------------------*/
6515 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6516 {
6517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 pWDICtx, pEventData);
6520 return WDI_STATUS_E_FAILURE;
6521 }
6522
6523 /*We should normally not get a STOP request if we are already stopped
6524 since we should normally be stopped by the UMAC. However in some
6525 error situations we put ourselves in the stopped state without the
6526 UMAC knowing, so when we get a STOP request in this state we still
6527 process it since we need to clean up the underlying state */
6528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6529 "Processing stop request while stopped in FSM");
6530
6531 /*Return Success*/
6532 return WDI_ProcessRequest( pWDICtx, pEventData );
6533
6534}/*WDI_MainStopStopped*/
6535
6536/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006537 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006538--------------------------------------------------------------------------*/
6539/**
6540 @brief Main FSM Start function for state BUSY
6541
Jeff Johnsone7245742012-09-05 17:12:55 -07006542
6543 @param pWDICtx: pointer to the WLAN DAL context
6544 pEventData: pointer to the event information structure
6545
Jeff Johnson295189b2012-06-20 16:38:30 -07006546 @see
6547 @return Result of the function call
6548*/
6549WDI_Status
6550WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006551(
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 WDI_ControlBlockType* pWDICtx,
6553 WDI_EventInfoType* pEventData
6554)
6555{
6556 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 ----------------------------------------------------------------------*/
6559 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6560 {
6561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006562 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006563 pWDICtx, pEventData);
6564 return WDI_STATUS_E_FAILURE;
6565 }
6566
6567 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006568 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 ----------------------------------------------------------------------*/
6570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6571 "WDI Busy state - queue start request");
6572
6573 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006575
6576 /*Return Success*/
6577 return WDI_STATUS_PENDING;
6578}/*WDI_MainStartBusy*/
6579
6580/**
6581 @brief Main FSM Stop function for state BUSY
6582
Jeff Johnsone7245742012-09-05 17:12:55 -07006583
6584 @param pWDICtx: pointer to the WLAN DAL context
6585 pEventData: pointer to the event information structure
6586
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 @see
6588 @return Result of the function call
6589*/
6590WDI_Status
6591WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006592(
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 WDI_ControlBlockType* pWDICtx,
6594 WDI_EventInfoType* pEventData
6595)
6596{
6597 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 ----------------------------------------------------------------------*/
6600 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6601 {
6602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006604 pWDICtx, pEventData);
6605 return WDI_STATUS_E_FAILURE;
6606 }
6607
6608 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006609 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006610 ----------------------------------------------------------------------*/
6611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6612 "WDI Busy state - queue stop request");
6613
Jeff Johnsone7245742012-09-05 17:12:55 -07006614 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006615 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006616
Jeff Johnson295189b2012-06-20 16:38:30 -07006617}/*WDI_MainStopBusy*/
6618
6619/**
6620 @brief Main FSM Request function for state BUSY
6621
Jeff Johnsone7245742012-09-05 17:12:55 -07006622
6623 @param pWDICtx: pointer to the WLAN DAL context
6624 pEventData: pointer to the event information structure
6625
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 @see
6627 @return Result of the function call
6628*/
6629WDI_Status
6630WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006631(
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 WDI_ControlBlockType* pWDICtx,
6633 WDI_EventInfoType* pEventData
6634)
6635{
6636 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 ----------------------------------------------------------------------*/
6639 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6640 {
6641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006642 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006643 pWDICtx, pEventData);
6644 return WDI_STATUS_E_FAILURE;
6645 }
6646
6647 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 ----------------------------------------------------------------------*/
6650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6651 "WDI Busy state - queue request %d because waiting for response %d",
6652 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6653
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006655 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006656
Jeff Johnson295189b2012-06-20 16:38:30 -07006657}/*WDI_MainReqBusy*/
6658/**
6659 @brief Main FSM Close function for state BUSY
6660
Jeff Johnsone7245742012-09-05 17:12:55 -07006661
6662 @param pWDICtx: pointer to the WLAN DAL context
6663 pEventData: pointer to the event information structure
6664
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 @see
6666 @return Result of the function call
6667*/
6668WDI_Status
6669WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006670(
Jeff Johnson295189b2012-06-20 16:38:30 -07006671 WDI_ControlBlockType* pWDICtx,
6672 WDI_EventInfoType* pEventData
6673)
6674{
6675 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 ----------------------------------------------------------------------*/
6678 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6679 {
6680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006681 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 pWDICtx, pEventData);
6683 return WDI_STATUS_E_FAILURE;
6684 }
6685
6686 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 ----------------------------------------------------------------------*/
6689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6690 "WDI Busy state - queue close request");
6691
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006694
Jeff Johnson295189b2012-06-20 16:38:30 -07006695}/*WDI_MainCloseBusy*/
6696
6697/**
6698 @brief Main FSM Shutdown function for INIT & STARTED states
6699
6700
6701 @param pWDICtx: pointer to the WLAN DAL context
6702 pEventData: pointer to the event information structure
6703
6704 @see
6705 @return Result of the function call
6706*/
6707WDI_Status
6708WDI_MainShutdown
6709(
6710 WDI_ControlBlockType* pWDICtx,
6711 WDI_EventInfoType* pEventData
6712)
6713{
6714 /*--------------------------------------------------------------------
6715 Sanity Check
6716 ----------------------------------------------------------------------*/
6717 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6718 {
6719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6720 "Invalid parameters on Main Start %x %x",
6721 pWDICtx, pEventData);
6722 return WDI_STATUS_E_FAILURE;
6723 }
6724
6725 /*State at this point is BUSY - because we enter this state before posting
6726 an event to the FSM in order to prevent potential race conditions*/
6727
6728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6729 "Processing shutdown request in FSM");
6730
6731 /*Return Success*/
6732 return WDI_ProcessRequest( pWDICtx, pEventData );
6733
6734}/*WDI_MainShutdown*/
6735
6736/**
6737 @brief Main FSM Shutdown function for BUSY state
6738
6739
6740 @param pWDICtx: pointer to the WLAN DAL context
6741 pEventData: pointer to the event information structure
6742
6743 @see
6744 @return Result of the function call
6745*/
6746WDI_Status
6747WDI_MainShutdownBusy
6748(
6749 WDI_ControlBlockType* pWDICtx,
6750 WDI_EventInfoType* pEventData
6751)
6752{
6753 /*--------------------------------------------------------------------
6754 Sanity Check
6755 ----------------------------------------------------------------------*/
6756 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6757 {
6758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6759 "Invalid parameters on Main Start %x %x",
6760 pWDICtx, pEventData);
6761 return WDI_STATUS_E_FAILURE;
6762 }
6763
6764 /* If you are waiting for a HAL response at this stage, you are not
6765 * going to get it. Riva is already shutdown/crashed.
6766 */
6767 wpalTimerStop(&gWDICb.wptResponseTimer);
6768
6769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6770 "Processing shutdown request in FSM: Busy state ");
6771
6772 return WDI_ProcessRequest( pWDICtx, pEventData );
6773
6774}/*WDI_MainShutdownBusy*/
6775
6776
Jeff Johnsone7245742012-09-05 17:12:55 -07006777/*=======================================================================
6778
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006780
Jeff Johnson295189b2012-06-20 16:38:30 -07006781*=======================================================================*/
6782
6783/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006785========================================================================*/
6786/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006787 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006789
6790 @param pWDICtx: pointer to the WLAN DAL context
6791 pEventData: pointer to the event information structure
6792
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 @see
6794 @return Result of the function call
6795*/
6796WDI_Status
6797WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006798(
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 WDI_ControlBlockType* pWDICtx,
6800 WDI_EventInfoType* pEventData
6801)
6802{
6803 WDI_StartReqParamsType* pwdiStartParams = NULL;
6804 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006805 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 wpt_uint16 usDataOffset = 0;
6807 wpt_uint16 usSendSize = 0;
6808
Jeff Johnsone7245742012-09-05 17:12:55 -07006809 tHalMacStartReqMsg halStartReq;
6810 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6812
6813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 -------------------------------------------------------------------------*/
6816 if (( NULL == pEventData ) ||
6817 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6818 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6819 {
6820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 }
6825
6826 /*-----------------------------------------------------------------------
6827 Get message buffer
6828 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006829 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006830 pwdiStartParams->usConfigBufferLen;
6831
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 usLen,
6834 &pSendBuffer, &usDataOffset, &usSendSize))||
6835 ( usSendSize < (usDataOffset + usLen )))
6836 {
6837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6838 "Unable to get send buffer in start req %x %x %x",
6839 pEventData, pwdiStartParams, wdiStartRspCb);
6840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 }
6843
6844 /*-----------------------------------------------------------------------
6845 Fill in the message
6846 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 halStartReq.startReqParams.driverType =
6848 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006849
Jeff Johnsone7245742012-09-05 17:12:55 -07006850 halStartReq.startReqParams.uConfigBufferLen =
6851 pwdiStartParams->usConfigBufferLen;
6852 wpalMemoryCopy( pSendBuffer+usDataOffset,
6853 &halStartReq.startReqParams,
6854 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006855
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 usDataOffset += sizeof(halStartReq.startReqParams);
6857 wpalMemoryCopy( pSendBuffer+usDataOffset,
6858 pwdiStartParams->pConfigBuffer,
6859 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006860
6861 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006862 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006863
6864 /*Save Low Level Ind CB and associated user data - it will be used further
6865 on when an indication is coming from the lower MAC*/
6866 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006867 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006868
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6875
Jeff Johnsone7245742012-09-05 17:12:55 -07006876
Jeff Johnson295189b2012-06-20 16:38:30 -07006877}/*WDI_ProcessStartReq*/
6878
6879/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006882
6883 @param pWDICtx: pointer to the WLAN DAL context
6884 pEventData: pointer to the event information structure
6885
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 @see
6887 @return Result of the function call
6888*/
6889WDI_Status
6890WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006891(
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 WDI_ControlBlockType* pWDICtx,
6893 WDI_EventInfoType* pEventData
6894)
6895{
6896 WDI_StopReqParamsType* pwdiStopParams = NULL;
6897 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006899 wpt_uint16 usDataOffset = 0;
6900 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006901 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6904
6905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 -------------------------------------------------------------------------*/
6908 if (( NULL == pEventData ) ||
6909 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6910 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6911 {
6912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006915 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 }
6917
6918 /*-----------------------------------------------------------------------
6919 Get message buffer
6920 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 sizeof(halStopReq.stopReqParams),
6923 &pSendBuffer, &usDataOffset, &usSendSize))||
6924 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6925 {
6926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6927 "Unable to get send buffer in stop req %x %x %x",
6928 pEventData, pwdiStopParams, wdiStopRspCb);
6929 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006930 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 }
6932
6933 /*-----------------------------------------------------------------------
6934 Fill in the message
6935 -----------------------------------------------------------------------*/
6936 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6937 pwdiStopParams->wdiStopReason);
6938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 wpalMemoryCopy( pSendBuffer+usDataOffset,
6940 &halStopReq.stopReqParams,
6941 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006942
6943 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006945
6946 /*! TO DO: stop the data services */
6947 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6948 {
6949 /*Stop the STA Table !UT- check this logic again
6950 It is safer to do it here than on the response - because a stop is imminent*/
6951 WDI_STATableStop(pWDICtx);
6952
6953 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006954 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6955 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 {
6957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6958 "WDI Init failed to reset power state event");
6959
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006961 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 }
6963 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006964 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6965 if( eWLAN_PAL_STATUS_SUCCESS != status )
6966 {
6967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6968 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6969 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006970 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006971 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006975 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6976 WDI_SET_POWER_STATE_TIMEOUT);
6977 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 {
6979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6980 "WDI Init failed to wait on an event");
6981
Jeff Johnsone7245742012-09-05 17:12:55 -07006982 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006983 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 }
6985 }
6986
6987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6992
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006993fail:
6994 // Release the message buffer so we don't leak
6995 wpalMemoryFree(pSendBuffer);
6996
6997failRequest:
6998 //WDA should have failure check to avoid the memory leak
6999 return WDI_STATUS_E_FAILURE;
7000
Jeff Johnson295189b2012-06-20 16:38:30 -07007001}/*WDI_ProcessStopReq*/
7002
7003/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007006
7007 @param pWDICtx: pointer to the WLAN DAL context
7008 pEventData: pointer to the event information structure
7009
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 @see
7011 @return Result of the function call
7012*/
7013WDI_Status
7014WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007015(
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 WDI_ControlBlockType* pWDICtx,
7017 WDI_EventInfoType* pEventData
7018)
7019{
Jeff Johnsone7245742012-09-05 17:12:55 -07007020 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7022
7023 /*Lock control block for cleanup*/
7024 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007025
Jeff Johnson295189b2012-06-20 16:38:30 -07007026 /*Clear all pending request*/
7027 WDI_ClearPendingRequests(pWDICtx);
7028
7029 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007030 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007031
7032 /* Close Data transport*/
7033 /* FTM mode does not open Data Path */
7034 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7035 {
7036 WDTS_Close(pWDICtx);
7037 }
7038
7039 /*Close the STA Table !UT- check this logic again*/
7040 WDI_STATableClose(pWDICtx);
7041
7042 /*close the PAL */
7043 wptStatus = wpalClose(pWDICtx->pPALContext);
7044 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7045 {
7046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7047 "Failed to wpal Close %d", wptStatus);
7048 WDI_ASSERT(0);
7049 }
7050
7051 /*Transition back to init state*/
7052 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7053
7054 wpalMutexRelease(&pWDICtx->wptMutex);
7055
7056 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007058
Jeff Johnsone7245742012-09-05 17:12:55 -07007059 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007060}/*WDI_ProcessCloseReq*/
7061
7062
7063/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007065===========================================================================*/
7066
7067/**
7068 @brief Process Init Scan Request function (called when Main FSM
7069 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007070
7071 @param pWDICtx: pointer to the WLAN DAL context
7072 pEventData: pointer to the event information structure
7073
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 @see
7075 @return Result of the function call
7076*/
7077WDI_Status
7078WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007079(
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 WDI_ControlBlockType* pWDICtx,
7081 WDI_EventInfoType* pEventData
7082)
7083{
7084 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7085 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 wpt_uint16 usDataOffset = 0;
7088 wpt_uint16 usSendSize = 0;
7089 wpt_uint8 i = 0;
7090
7091 tHalInitScanReqMsg halInitScanReqMsg;
7092
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 * It shold be removed once host and riva changes are in sync*/
7095 tHalInitScanConReqMsg halInitScanConReqMsg;
7096
7097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7098
7099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007101 -------------------------------------------------------------------------*/
7102 if (( NULL == pEventData ) ||
7103 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7104 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7105 {
7106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 }
7111
7112#if 0
7113 wpalMutexAcquire(&pWDICtx->wptMutex);
7114 /*-----------------------------------------------------------------------
7115 Check to see if SCAN is already in progress - if so reject the req
7116 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 -----------------------------------------------------------------------*/
7119 if ( pWDICtx->bScanInProgress )
7120 {
7121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7122 "Scan is already in progress - subsequent scan is not allowed"
7123 " until the first scan completes");
7124
7125 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 }
7128
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7130 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007131
7132 wpalMutexRelease(&pWDICtx->wptMutex);
7133#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007134 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007136 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 * It shold be removed once host and riva changes are in sync*/
7138 /*-----------------------------------------------------------------------
7139 Get message buffer
7140 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 sizeof(halInitScanConReqMsg.initScanParams),
7143 &pSendBuffer, &usDataOffset, &usSendSize))||
7144 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7145 {
7146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7147 "Unable to get send buffer in init scan req %x %x %x",
7148 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007151 }
7152
7153
7154 /*-----------------------------------------------------------------------
7155 Fill in the message
7156 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7159
7160 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7161 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7162
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7169
7170 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7171 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7172
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7174 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007175
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7178
7179 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7180 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7183 }
7184
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 wpalMemoryCopy( pSendBuffer+usDataOffset,
7186 &halInitScanConReqMsg.initScanParams,
7187 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 }
7189 else
7190 {
7191 /*-----------------------------------------------------------------------
7192 Get message buffer
7193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 sizeof(halInitScanReqMsg.initScanParams),
7196 &pSendBuffer, &usDataOffset, &usSendSize))||
7197 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7198 {
7199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7200 "Unable to get send buffer in init scan req %x %x %x",
7201 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 }
7205
7206
7207 /*-----------------------------------------------------------------------
7208 Fill in the message
7209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7212
7213 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7214 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7215
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7222
7223 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7224 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7225
Jeff Johnsone7245742012-09-05 17:12:55 -07007226 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7228
7229 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7230 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7233 }
7234
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 wpalMemoryCopy( pSendBuffer+usDataOffset,
7236 &halInitScanReqMsg.initScanParams,
7237 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 }
7239
7240 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007242
7243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007244 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7248
7249}/*WDI_ProcessInitScanReq*/
7250
7251/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007254
7255 @param pWDICtx: pointer to the WLAN DAL context
7256 pEventData: pointer to the event information structure
7257
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 @see
7259 @return Result of the function call
7260*/
7261WDI_Status
7262WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007263(
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 WDI_ControlBlockType* pWDICtx,
7265 WDI_EventInfoType* pEventData
7266)
7267{
7268 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7269 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 wpt_uint16 usDataOffset = 0;
7272 wpt_uint16 usSendSize = 0;
7273
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7276
7277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 -------------------------------------------------------------------------*/
7280 if (( NULL == pEventData ) ||
7281 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7282 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7283 {
7284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 }
7289
7290#if 0
7291 wpalMutexAcquire(&pWDICtx->wptMutex);
7292 /*-----------------------------------------------------------------------
7293 Check to see if SCAN is already in progress - start scan is only
7294 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7299 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7300 {
7301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7302 "Scan start not allowed in this state %d %d",
7303 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007304
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 }
7308
Jeff Johnsone7245742012-09-05 17:12:55 -07007309 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007310
7311 wpalMutexRelease(&pWDICtx->wptMutex);
7312#endif
7313
7314 /*-----------------------------------------------------------------------
7315 Get message buffer
7316 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 sizeof(halStartScanReqMsg.startScanParams),
7319 &pSendBuffer, &usDataOffset, &usSendSize))||
7320 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7321 {
7322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7323 "Unable to get send buffer in start scan req %x %x %x",
7324 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 }
7328
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 wpalMemoryCopy( pSendBuffer+usDataOffset,
7332 &halStartScanReqMsg.startScanParams,
7333 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007334
7335 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007336 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007337
7338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7343}/*WDI_ProcessStartScanReq*/
7344
7345
7346/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007349
7350 @param pWDICtx: pointer to the WLAN DAL context
7351 pEventData: pointer to the event information structure
7352
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 @see
7354 @return Result of the function call
7355*/
7356WDI_Status
7357WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007358(
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 WDI_ControlBlockType* pWDICtx,
7360 WDI_EventInfoType* pEventData
7361)
7362{
7363 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7364 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007365 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 wpt_uint16 usDataOffset = 0;
7367 wpt_uint16 usSendSize = 0;
7368
Jeff Johnsone7245742012-09-05 17:12:55 -07007369 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7371
7372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 -------------------------------------------------------------------------*/
7375 if (( NULL == pEventData ) ||
7376 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7377 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7378 {
7379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 }
7384
Jeff Johnsone7245742012-09-05 17:12:55 -07007385 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7386 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 * forwarded to HAL and result in hang*/
7388#if 0
7389 wpalMutexAcquire(&pWDICtx->wptMutex);
7390 /*-----------------------------------------------------------------------
7391 Check to see if SCAN is already in progress - end scan is only
7392 allowed when a scan is ongoing and the state of the scan procedure
7393 is started
7394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007395 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7397 {
7398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7399 "End start not allowed in this state %d %d",
7400 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007401
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 }
7405
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007407
7408 wpalMutexRelease(&pWDICtx->wptMutex);
7409#endif
7410
7411 /*-----------------------------------------------------------------------
7412 Get message buffer
7413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 sizeof(halEndScanReqMsg.endScanParams),
7416 &pSendBuffer, &usDataOffset, &usSendSize))||
7417 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7418 {
7419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7420 "Unable to get send buffer in start scan req %x %x %x",
7421 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 }
7425
7426 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7427
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 wpalMemoryCopy( pSendBuffer+usDataOffset,
7429 &halEndScanReqMsg.endScanParams,
7430 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007431
7432 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007434
7435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7440}/*WDI_ProcessEndScanReq*/
7441
7442
7443/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007446
7447 @param pWDICtx: pointer to the WLAN DAL context
7448 pEventData: pointer to the event information structure
7449
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 @see
7451 @return Result of the function call
7452*/
7453WDI_Status
7454WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007455(
Jeff Johnson295189b2012-06-20 16:38:30 -07007456 WDI_ControlBlockType* pWDICtx,
7457 WDI_EventInfoType* pEventData
7458)
7459{
7460 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7461 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 wpt_uint16 usDataOffset = 0;
7464 wpt_uint16 usSendSize = 0;
7465 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007466 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7469
7470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 -------------------------------------------------------------------------*/
7473 if (( NULL == pEventData ) ||
7474 ( NULL == pEventData->pEventData) ||
7475 ( NULL == pEventData->pCBfnc))
7476 {
7477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 }
7482
7483 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7484 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7486 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 * forwarded to HAL and result in hang*/
7488#if 0
7489 wpalMutexAcquire(&pWDICtx->wptMutex);
7490 /*-----------------------------------------------------------------------
7491 Check to see if SCAN is already in progress
7492 Finish scan gets invoked any scan states. ie. abort scan
7493 It should be allowed in any states.
7494 -----------------------------------------------------------------------*/
7495 if ( !pWDICtx->bScanInProgress )
7496 {
7497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7498 "Finish start not allowed in this state %d",
7499 pWDICtx->bScanInProgress );
7500
7501 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 }
7504
7505 /*-----------------------------------------------------------------------
7506 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7510 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 wpalMutexRelease(&pWDICtx->wptMutex);
7512#endif
7513
7514 if ( pWDICtx->bInBmps )
7515 {
7516 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007517 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7518 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7519 {
7520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7521 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7522 WDI_ASSERT(0);
7523 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 }
7525
7526 /*-----------------------------------------------------------------------
7527 Get message buffer
7528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 sizeof(halFinishScanReqMsg.finishScanParams),
7531 &pSendBuffer, &usDataOffset, &usSendSize))||
7532 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7533 {
7534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7535 "Unable to get send buffer in start scan req %x %x %x",
7536 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 }
7540
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7543
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7546
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7549
7550 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7551 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7552
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7559
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7562
7563 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7564 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007565 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7567 }
7568
7569 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7570 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7571
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 wpalMemoryCopy( pSendBuffer+usDataOffset,
7573 &halFinishScanReqMsg.finishScanParams,
7574 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007575
7576 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007578
7579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007580 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7584}/*WDI_ProcessFinishScanReq*/
7585
7586
7587/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007589==========================================================================*/
7590/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007591 @brief Process BSS Join for a given Session
7592
7593 @param pWDICtx: pointer to the WLAN DAL context
7594 pEventData: pointer to the event information structure
7595
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 @see
7597 @return Result of the function call
7598*/
7599WDI_Status
7600WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007601(
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 WDI_ControlBlockType* pWDICtx,
7603 WDI_JoinReqParamsType* pwdiJoinParams,
7604 WDI_JoinRspCb wdiJoinRspCb,
7605 void* pUserData
7606)
7607{
7608 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 wpt_uint16 usDataOffset = 0;
7611 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007613
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7616
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007617 wpalMutexAcquire(&pWDICtx->wptMutex);
7618
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 /*------------------------------------------------------------------------
7620 Check to see if we have any session with this BSSID already stored, we
7621 should not
7622 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7624 pwdiJoinParams->wdiReqInfo.macBSSID,
7625 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007626
7627 if ( NULL != pBSSSes )
7628 {
7629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007630 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7631 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007632
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007633 /*reset the bAssociationInProgress otherwise the next
7634 *join request will be queued*/
7635 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7636 wpalMutexRelease(&pWDICtx->wptMutex);
7637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 }
7639
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 if ( NULL == pBSSSes )
7645 {
7646
7647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7648 "DAL has no free sessions - cannot run another join");
7649
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007650 /*reset the bAssociationInProgress otherwise the next
7651 *join request will be queued*/
7652 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 }
7656
7657 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7659 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 WDI_MAC_ADDR_LEN);
7661
7662 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007665
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 wpalMutexRelease(&pWDICtx->wptMutex);
7667
7668 /*-----------------------------------------------------------------------
7669 Get message buffer
7670 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 sizeof(halJoinReqMsg.joinReqParams),
7673 &pSendBuffer, &usDataOffset, &usSendSize))||
7674 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7675 {
7676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7677 "Unable to get send buffer in join req %x %x %x",
7678 pUserData, pwdiJoinParams, wdiJoinRspCb);
7679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 }
7682
7683 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007685
7686 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007687 pwdiJoinParams->wdiReqInfo.macSTASelf,
7688 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007689
Jeff Johnsone7245742012-09-05 17:12:55 -07007690 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7692
7693 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7694
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007695#ifdef WLAN_FEATURE_VOWIFI
7696 halJoinReqMsg.joinReqParams.maxTxPower =
7697 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7698#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7701#endif
7702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7705 wdiSecondaryChannelOffset);
7706
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 wpalMemoryCopy( pSendBuffer+usDataOffset,
7708 &halJoinReqMsg.joinReqParams,
7709 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007710
7711 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007713
7714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7718 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007719
7720}/*WDI_ProcessBSSSessionJoinReq*/
7721
7722/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007725
7726 @param pWDICtx: pointer to the WLAN DAL context
7727 pEventData: pointer to the event information structure
7728
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 @see
7730 @return Result of the function call
7731*/
7732WDI_Status
7733WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007734(
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 WDI_ControlBlockType* pWDICtx,
7736 WDI_EventInfoType* pEventData
7737)
7738{
7739 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7740 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7741 WDI_JoinRspCb wdiJoinRspCb = NULL;
7742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7743
7744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 -------------------------------------------------------------------------*/
7747 if (( NULL == pEventData ) ||
7748 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7749 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7750 {
7751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007756
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 /*-------------------------------------------------------------------------
7758 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007759 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 -------------------------------------------------------------------------*/
7761 wpalMutexAcquire(&pWDICtx->wptMutex);
7762
7763 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7764 {
7765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7766 "Association is currently in progress, queueing new join req");
7767
7768 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 pwdiJoinParams->wdiReqInfo.macBSSID);
7771
7772 wpalMutexRelease(&pWDICtx->wptMutex);
7773
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 }
7776
7777 /*Starting a new association */
7778 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7779 wpalMutexRelease(&pWDICtx->wptMutex);
7780
7781 /*Process the Join Request*/
7782 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7783 wdiJoinRspCb,pEventData->pUserData);
7784
7785}/*WDI_ProcessJoinReq*/
7786
7787
7788/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007791
7792 @param pWDICtx: pointer to the WLAN DAL context
7793 pEventData: pointer to the event information structure
7794
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 @see
7796 @return Result of the function call
7797*/
7798WDI_Status
7799WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007800(
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 WDI_ControlBlockType* pWDICtx,
7802 WDI_EventInfoType* pEventData
7803)
7804{
7805 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7806 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007809 wpt_uint16 uMsgSize = 0;
7810 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 wpt_uint16 usDataOffset = 0;
7812 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007814
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7817
7818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 -------------------------------------------------------------------------*/
7821 if (( NULL == pEventData ) ||
7822 ( NULL == pEventData->pEventData ) ||
7823 ( NULL == pEventData->pCBfnc ))
7824 {
7825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 }
7830
7831 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7832 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7833 /*-------------------------------------------------------------------------
7834 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007835 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 -------------------------------------------------------------------------*/
7837 wpalMutexAcquire(&pWDICtx->wptMutex);
7838
7839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7843 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7844 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007845
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 {
7848#ifdef WLAN_FEATURE_VOWIFI_11R
7849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007850 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 if ( NULL == pBSSSes )
7854 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007855
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7857 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007858
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007862
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7865 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007867
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7871#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 * Request in case of IBSS*/
7874 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7875 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7876 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7877 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7878 {
7879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 if ( NULL == pBSSSes )
7884 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007885
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7887 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007888
Jeff Johnson295189b2012-06-20 16:38:30 -07007889 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007892
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7895 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007897
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7901 }
7902 else
7903 {
7904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7906 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7907 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7908
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 /* for IBSS testing */
7910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 }
7913#endif
7914 }
7915
7916 /*------------------------------------------------------------------------
7917 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 ------------------------------------------------------------------------*/
7920 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7921 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7923 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7924 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7925 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007926
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
7929 wpalMutexRelease(&pWDICtx->wptMutex);
7930
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 }
7933
7934 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7936 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 sizeof(pWDICtx->wdiCachedConfigBssReq));
7938
7939 wpalMutexRelease(&pWDICtx->wptMutex);
7940
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7942#ifdef WLAN_FEATURE_11AC
7943 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007944 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 else
7946#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007947 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007948
7949 /*-----------------------------------------------------------------------
7950 Get message buffer
7951 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7954 ( usSendSize < (usDataOffset + uMsgSize )))
7955 {
7956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7957 "Unable to get send buffer in config bss req %x %x %x",
7958 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 }
7962
7963 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007964#ifdef WLAN_FEATURE_11AC
7965 if (WDI_getFwWlanFeatCaps(DOT11AC))
7966 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7967 &pwdiConfigBSSParams->wdiReqInfo);
7968 else
7969#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 &pwdiConfigBSSParams->wdiReqInfo);
7972
7973 /* Need to fill in the STA Index to invalid, since at this point we have not
7974 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007976
7977 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007978 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7979
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007980#ifdef WLAN_FEATURE_11AC
7981 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7982 wpalMemoryCopy( pSendBuffer+usDataOffset,
7983 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7984 uMsgSize);
7985 }else
7986#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007987 {
7988 if ( uMsgSize <= sizeof(tConfigBssParams) )
7989 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007990 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007991 &halConfigBssReqMsg.uBssParams.configBssParams,
7992 uMsgSize);
7993 }
7994 else
7995 {
7996 return WDI_STATUS_E_FAILURE;
7997 }
7998 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007999
8000 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008002
8003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8007 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 WDI_CONFIG_BSS_RESP);
8009
8010}/*WDI_ProcessConfigBSSReq*/
8011
8012
8013/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008016
8017 @param pWDICtx: pointer to the WLAN DAL context
8018 pEventData: pointer to the event information structure
8019
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 @see
8021 @return Result of the function call
8022*/
8023WDI_Status
8024WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008025(
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 WDI_ControlBlockType* pWDICtx,
8027 WDI_EventInfoType* pEventData
8028)
8029{
8030 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8031 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 wpt_uint16 usDataOffset = 0;
8036 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008038
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8041
8042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 -------------------------------------------------------------------------*/
8045 if (( NULL == pEventData ) ||
8046 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8047 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8048 {
8049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 }
8054
8055 /*-------------------------------------------------------------------------
8056 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 -------------------------------------------------------------------------*/
8059 wpalMutexAcquire(&pWDICtx->wptMutex);
8060
8061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8065 pwdiDelBSSParams->ucBssIdx,
8066 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008067
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 {
8070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 "%s: BSS does not yet exist. ucBssIdx %d",
8072 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008073
8074 wpalMutexRelease(&pWDICtx->wptMutex);
8075
8076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008078
8079 /*------------------------------------------------------------------------
8080 Check if this BSS is being currently processed or queued,
8081 if queued - queue the new request as well
8082 ------------------------------------------------------------------------*/
8083 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8086 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8087 __func__, pwdiDelBSSParams->ucBssIdx);
8088
8089 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8090
8091 wpalMutexRelease(&pWDICtx->wptMutex);
8092
8093 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008095
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 /*-----------------------------------------------------------------------
8097 If we receive a Del BSS request for an association that is already in
8098 progress, it indicates that the assoc has failed => we no longer have
8099 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 -----------------------------------------------------------------------*/
8102 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8103 {
8104 /*We can switch to false here because even if a subsequent Join comes in
8105 it will only be processed when DAL transitions out of BUSY state which
8106 happens when the Del BSS request comes */
8107 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8108
8109 /*Former association is complete - prepare next pending assoc for
8110 processing */
8111 WDI_DequeueAssocRequest(pWDICtx);
8112 }
8113
8114 wpalMutexRelease(&pWDICtx->wptMutex);
8115 /*-----------------------------------------------------------------------
8116 Get message buffer
8117 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 sizeof(halBssReqMsg.deleteBssParams),
8120 &pSendBuffer, &usDataOffset, &usSendSize))||
8121 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8122 {
8123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8124 "Unable to get send buffer in start req %x %x %x",
8125 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 }
8129
8130 /*Fill in the message request structure*/
8131
8132 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008133 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008134
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 wpalMemoryCopy( pSendBuffer+usDataOffset,
8136 &halBssReqMsg.deleteBssParams,
8137 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008141
Jeff Johnsone7245742012-09-05 17:12:55 -07008142
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8148
Jeff Johnsone7245742012-09-05 17:12:55 -07008149
Jeff Johnson295189b2012-06-20 16:38:30 -07008150}/*WDI_ProcessDelBSSReq*/
8151
8152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008155
8156 @param pWDICtx: pointer to the WLAN DAL context
8157 pEventData: pointer to the event information structure
8158
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 @see
8160 @return Result of the function call
8161*/
8162WDI_Status
8163WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008164(
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 WDI_ControlBlockType* pWDICtx,
8166 WDI_EventInfoType* pEventData
8167)
8168{
8169 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8170 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 wpt_uint16 usDataOffset = 0;
8175 wpt_uint16 usSendSize = 0;
8176 wpt_uint16 uMsgSize = 0;
8177 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008179
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8182
8183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 -------------------------------------------------------------------------*/
8186 if (( NULL == pEventData ) ||
8187 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8188 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8189 {
8190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 }
8195
8196 /*-------------------------------------------------------------------------
8197 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 -------------------------------------------------------------------------*/
8200 wpalMutexAcquire(&pWDICtx->wptMutex);
8201
8202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8206 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8207 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008208
8209 if ( NULL == pBSSSes )
8210 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8212 "%s: Association sequence for this BSS does not yet exist - "
8213 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8214 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008215
8216 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 }
8219
8220 /*------------------------------------------------------------------------
8221 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 ------------------------------------------------------------------------*/
8224 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8225 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8227 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8228 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008229
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008231
8232 wpalMutexRelease(&pWDICtx->wptMutex);
8233
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 }
8236
8237 /*-----------------------------------------------------------------------
8238 If Post Assoc was not yet received - the current association must
8239 be in progress
8240 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008241 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8243 {
8244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8245 "Association sequence for this BSS association no longer in "
8246 "progress - not allowed");
8247
8248 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 }
8251
8252 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 -----------------------------------------------------------------------*/
8255 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8256 {
8257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8258 "Post Assoc not allowed before JOIN - failing request");
8259
8260 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 }
8263
8264 wpalMutexRelease(&pWDICtx->wptMutex);
8265
8266 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8267 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8268 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8273 ( usSendSize < (usDataOffset + uMsgSize )))
8274 {
8275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8276 "Unable to get send buffer in start req %x %x %x",
8277 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8278 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 /*Copy the STA parameters */
8283 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8284 &pwdiPostAssocParams->wdiSTAParams );
8285
8286 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 WDI_STATableFindStaidByAddr(pWDICtx,
8289 pwdiPostAssocParams->wdiSTAParams.macSTA,
8290 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8291 {
8292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8293 "This station does not exist in the WDI Station Table %d");
8294 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008295 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 }
8298
8299 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 pBSSSes->ucBSSIdx;
8302
8303 /*Copy the BSS parameters */
8304 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8305 &pwdiPostAssocParams->wdiBSSParams);
8306
8307 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 WDI_STATableFindStaidByAddr(pWDICtx,
8310 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 {
8313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8314 "This station does not exist in the WDI Station Table %d");
8315 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008316 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 }
8319
8320 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 pBSSSes->ucBSSIdx;
8323
Jeff Johnsone7245742012-09-05 17:12:55 -07008324
8325 wpalMemoryCopy( pSendBuffer+usDataOffset,
8326 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8327 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008328
8329 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8330
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8332 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8333 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008334
Jeff Johnsone7245742012-09-05 17:12:55 -07008335
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008338
Jeff Johnsone7245742012-09-05 17:12:55 -07008339
8340 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008343
8344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8349
Jeff Johnsone7245742012-09-05 17:12:55 -07008350
Jeff Johnson295189b2012-06-20 16:38:30 -07008351}/*WDI_ProcessPostAssocReq*/
8352
8353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008356
8357 @param pWDICtx: pointer to the WLAN DAL context
8358 pEventData: pointer to the event information structure
8359
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 @see
8361 @return Result of the function call
8362*/
8363WDI_Status
8364WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008365(
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 WDI_ControlBlockType* pWDICtx,
8367 WDI_EventInfoType* pEventData
8368)
8369{
8370 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8371 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 wpt_uint16 usDataOffset = 0;
8376 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008377 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8379
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8382
8383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 -------------------------------------------------------------------------*/
8386 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8387 ( NULL == pEventData->pCBfnc ))
8388 {
8389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 }
8394
8395 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8396 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8397 /*-------------------------------------------------------------------------
8398 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 -------------------------------------------------------------------------*/
8401 wpalMutexAcquire(&pWDICtx->wptMutex);
8402
8403 /*------------------------------------------------------------------------
8404 Find the BSS for which the request is made and identify WDI session
8405 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8407 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 &macBSSID))
8409 {
8410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8411 "This station does not exist in the WDI Station Table %d");
8412 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008414 }
8415
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8417 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8420 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8421 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008422
8423 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 }
8426
8427 /*------------------------------------------------------------------------
8428 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 ------------------------------------------------------------------------*/
8431 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8432 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8434 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8435 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 }
8441
8442 wpalMutexRelease(&pWDICtx->wptMutex);
8443 /*-----------------------------------------------------------------------
8444 Get message buffer
8445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 sizeof(halDelStaReqMsg.delStaParams),
8448 &pSendBuffer, &usDataOffset, &usSendSize))||
8449 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8450 {
8451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8452 "Unable to get send buffer in start req %x %x %x",
8453 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 }
8457
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8459 wpalMemoryCopy( pSendBuffer+usDataOffset,
8460 &halDelStaReqMsg.delStaParams,
8461 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008462
8463 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008465
8466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8471
8472}/*WDI_ProcessDelSTAReq*/
8473
8474
8475/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008477==========================================================================*/
8478/**
8479 @brief Process Set BSS Key Request function (called when Main FSM
8480 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008481
8482 @param pWDICtx: pointer to the WLAN DAL context
8483 pEventData: pointer to the event information structure
8484
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 @see
8486 @return Result of the function call
8487*/
8488WDI_Status
8489WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008490(
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 WDI_ControlBlockType* pWDICtx,
8492 WDI_EventInfoType* pEventData
8493)
8494{
8495 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8496 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 wpt_uint16 usDataOffset = 0;
8501 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8504 wpt_uint8 keyIndex = 0;
8505
8506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8507
8508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 -------------------------------------------------------------------------*/
8511 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8512 ( NULL == pEventData->pCBfnc ))
8513 {
8514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 }
8519
8520 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8521 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8522 /*-------------------------------------------------------------------------
8523 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 -------------------------------------------------------------------------*/
8526 wpalMutexAcquire(&pWDICtx->wptMutex);
8527
8528 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8532 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8533 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008534
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 {
8537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8539 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008540
8541 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 }
8544
8545 /*------------------------------------------------------------------------
8546 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 ------------------------------------------------------------------------*/
8549 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8550 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8552 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8553 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008554
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 }
8559
8560
8561 wpalMutexRelease(&pWDICtx->wptMutex);
8562 /*-----------------------------------------------------------------------
8563 Get message buffer
8564 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8567 &pSendBuffer, &usDataOffset, &usSendSize))||
8568 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8569 {
8570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8571 "Unable to get send buffer in set bss key req %x %x %x",
8572 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 }
8576
8577 /*-----------------------------------------------------------------------
8578 Copy the Key parameters into the HAL message
8579 -----------------------------------------------------------------------*/
8580
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008582
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8585
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8588
8589 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8590 keyIndex++)
8591 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8594 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8595 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8596 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8597 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8598 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8605 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 WDI_MAX_KEY_LENGTH);
8608 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008609
8610 wpalMemoryCopy( pSendBuffer+usDataOffset,
8611 &halSetBssKeyReqMsg.setBssKeyParams,
8612 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008613
8614 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008616
8617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8621 wdiSetBSSKeyRspCb, pEventData->pUserData,
8622 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008623
8624}/*WDI_ProcessSetBssKeyReq*/
8625
8626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008629
8630 @param pWDICtx: pointer to the WLAN DAL context
8631 pEventData: pointer to the event information structure
8632
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 @see
8634 @return Result of the function call
8635*/
8636WDI_Status
8637WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008638(
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 WDI_ControlBlockType* pWDICtx,
8640 WDI_EventInfoType* pEventData
8641)
8642{
8643 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8644 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 wpt_uint16 usDataOffset = 0;
8649 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8653
8654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 -------------------------------------------------------------------------*/
8657 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8658 ( NULL == pEventData->pCBfnc ))
8659 {
8660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 }
8665
8666 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8667 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8668 /*-------------------------------------------------------------------------
8669 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 -------------------------------------------------------------------------*/
8672 wpalMutexAcquire(&pWDICtx->wptMutex);
8673
8674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8678 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8679 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008680
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 {
8683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8685 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008686
8687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 }
8690
8691 /*------------------------------------------------------------------------
8692 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 ------------------------------------------------------------------------*/
8695 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8696 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8698 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8699 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008700
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 }
8705
8706
8707 wpalMutexRelease(&pWDICtx->wptMutex);
8708
8709 /*-----------------------------------------------------------------------
8710 Get message buffer
8711 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8714 &pSendBuffer, &usDataOffset, &usSendSize))||
8715 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8716 {
8717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8718 "Unable to get send buffer in set bss key req %x %x %x",
8719 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 }
8723 /*-----------------------------------------------------------------------
8724 Copy the Key parameters into the HAL message
8725 -----------------------------------------------------------------------*/
8726 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8727
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8730
8731 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8732
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8735
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 wpalMemoryCopy( pSendBuffer+usDataOffset,
8737 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8738 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008739
8740 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742
8743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008749}/*WDI_ProcessRemoveBssKeyReq*/
8750
8751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008754
8755 @param pWDICtx: pointer to the WLAN DAL context
8756 pEventData: pointer to the event information structure
8757
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 @see
8759 @return Result of the function call
8760*/
8761WDI_Status
8762WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008763(
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 WDI_ControlBlockType* pWDICtx,
8765 WDI_EventInfoType* pEventData
8766)
8767{
8768 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8769 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8770 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 wpt_uint16 usDataOffset = 0;
8773 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8778 wpt_uint8 keyIndex = 0;
8779
8780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8781
8782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 -------------------------------------------------------------------------*/
8785 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8786 ( NULL == pEventData->pCBfnc ))
8787 {
8788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 }
8793
8794 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8795 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8796 /*-------------------------------------------------------------------------
8797 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 -------------------------------------------------------------------------*/
8800 wpalMutexAcquire(&pWDICtx->wptMutex);
8801
8802 /*------------------------------------------------------------------------
8803 Find the BSS for which the request is made and identify WDI session
8804 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8806 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 &macBSSID))
8808 {
8809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8810 "This station does not exist in the WDI Station Table %d");
8811 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 }
8814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8816 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8819 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8820 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
8822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008825
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 /*------------------------------------------------------------------------
8827 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 ------------------------------------------------------------------------*/
8830 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8831 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8833 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8834 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008835
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 }
8840
8841
8842 wpalMutexRelease(&pWDICtx->wptMutex);
8843 /*-----------------------------------------------------------------------
8844 Get message buffer
8845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8848 &pSendBuffer, &usDataOffset, &usSendSize))||
8849 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8850 {
8851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8852 "Unable to get send buffer in set bss key req %x %x %x",
8853 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 }
8857 /*-----------------------------------------------------------------------
8858 Copy the STA Key parameters into the HAL message
8859 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8862
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8865
8866 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8867
8868 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8869
8870 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8871
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8873 keyIndex++)
8874 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8877 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8878 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8879 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8880 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8881 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8888 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 WDI_MAX_KEY_LENGTH);
8891 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008892
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 wpalMemoryCopy( pSendBuffer+usDataOffset,
8894 &halSetStaKeyReqMsg.setStaKeyParams,
8895 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008896
8897 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899
8900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8904 wdiSetSTAKeyRspCb, pEventData->pUserData,
8905 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008906
8907}/*WDI_ProcessSetSTAKeyReq*/
8908
8909/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008912
8913 @param pWDICtx: pointer to the WLAN DAL context
8914 pEventData: pointer to the event information structure
8915
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 @see
8917 @return Result of the function call
8918*/
8919WDI_Status
8920WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008921(
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 WDI_ControlBlockType* pWDICtx,
8923 WDI_EventInfoType* pEventData
8924)
8925{
8926 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8927 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 wpt_uint16 usDataOffset = 0;
8931 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 wpt_macAddr macBSSID;
8934 wpt_uint8 ucCurrentBSSSesIdx;
8935 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8937
8938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
8941 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8942 ( NULL == pEventData->pCBfnc ))
8943 {
8944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
8950 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8951 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8952 /*-------------------------------------------------------------------------
8953 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 -------------------------------------------------------------------------*/
8956 wpalMutexAcquire(&pWDICtx->wptMutex);
8957
8958 /*------------------------------------------------------------------------
8959 Find the BSS for which the request is made and identify WDI session
8960 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8962 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 &macBSSID))
8964 {
8965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8966 "This station does not exist in the WDI Station Table %d");
8967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 }
8970
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8972 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8975 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8976 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008977
8978 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008981
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 /*------------------------------------------------------------------------
8983 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 ------------------------------------------------------------------------*/
8986 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8987 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8989 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8990 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008991
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 }
8996
8997
8998
8999 wpalMutexRelease(&pWDICtx->wptMutex);
9000 /*-----------------------------------------------------------------------
9001 Get message buffer
9002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9005 &pSendBuffer, &usDataOffset, &usSendSize))||
9006 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9007 {
9008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9009 "Unable to get send buffer in set bss key req %x %x %x",
9010 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 }
9014
9015 /*-----------------------------------------------------------------------
9016 Copy the Key parameters into the HAL message
9017 -----------------------------------------------------------------------*/
9018
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9021
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9024
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9027
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9030
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 wpalMemoryCopy( pSendBuffer+usDataOffset,
9032 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9033 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009034
9035 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009037
9038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009044
9045}/*WDI_ProcessRemoveSTAKeyReq*/
9046
9047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009050
9051 @param pWDICtx: pointer to the WLAN DAL context
9052 pEventData: pointer to the event information structure
9053
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 @see
9055 @return Result of the function call
9056*/
9057WDI_Status
9058WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009059(
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 WDI_ControlBlockType* pWDICtx,
9061 WDI_EventInfoType* pEventData
9062)
9063{
9064 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9065 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9066 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 wpt_uint16 usDataOffset = 0;
9069 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9074 wpt_uint8 keyIndex = 0;
9075
9076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9077
9078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 -------------------------------------------------------------------------*/
9081 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9082 ( NULL == pEventData->pCBfnc ))
9083 {
9084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 }
9089
9090 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9091 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9092 /*-------------------------------------------------------------------------
9093 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009095 -------------------------------------------------------------------------*/
9096 wpalMutexAcquire(&pWDICtx->wptMutex);
9097
9098 /*------------------------------------------------------------------------
9099 Find the BSS for which the request is made and identify WDI session
9100 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9102 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 &macBSSID))
9104 {
9105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9106 "This station does not exist in the WDI Station Table %d");
9107 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 }
9110
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9112 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 {
9114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9116 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009117
9118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009121
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 /*------------------------------------------------------------------------
9123 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 ------------------------------------------------------------------------*/
9126 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9127 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9129 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9130 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009131
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
9136
9137
9138 wpalMutexRelease(&pWDICtx->wptMutex);
9139 /*-----------------------------------------------------------------------
9140 Get message buffer
9141 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9144 &pSendBuffer, &usDataOffset, &usSendSize))||
9145 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9146 {
9147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9148 "Unable to get send buffer in set bss key req %x %x %x",
9149 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153 /*-----------------------------------------------------------------------
9154 Copy the STA Key parameters into the HAL message
9155 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9158
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9161
9162 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9163
9164 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9165
9166 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9167
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9169 keyIndex++)
9170 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9173 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9174 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9175 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9176 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9177 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9184 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 WDI_MAX_KEY_LENGTH);
9187 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009188
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 wpalMemoryCopy( pSendBuffer+usDataOffset,
9190 &halSetStaKeyReqMsg.setStaKeyParams,
9191 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009192
9193 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195
9196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9200 wdiSetSTAKeyRspCb, pEventData->pUserData,
9201 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203}/*WDI_ProcessSetSTABcastKeyReq*/
9204
9205/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009208
9209 @param pWDICtx: pointer to the WLAN DAL context
9210 pEventData: pointer to the event information structure
9211
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 @see
9213 @return Result of the function call
9214*/
9215WDI_Status
9216WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009217(
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 WDI_ControlBlockType* pWDICtx,
9219 WDI_EventInfoType* pEventData
9220)
9221{
9222 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9223 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9224 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 wpt_uint16 usDataOffset = 0;
9227 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 wpt_macAddr macBSSID;
9230 wpt_uint8 ucCurrentBSSSesIdx;
9231 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9233
9234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 -------------------------------------------------------------------------*/
9237 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9238 ( NULL == pEventData->pCBfnc ))
9239 {
9240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 }
9245
9246 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9247 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9248 /*-------------------------------------------------------------------------
9249 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 -------------------------------------------------------------------------*/
9252 wpalMutexAcquire(&pWDICtx->wptMutex);
9253
9254 /*------------------------------------------------------------------------
9255 Find the BSS for which the request is made and identify WDI session
9256 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9258 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 &macBSSID))
9260 {
9261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9262 "This station does not exist in the WDI Station Table %d");
9263 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 }
9266
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9268 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9271 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9272 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009273
9274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009277
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 /*------------------------------------------------------------------------
9279 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 ------------------------------------------------------------------------*/
9282 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9283 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9285 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9286 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009287
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 }
9292
9293
9294
9295 wpalMutexRelease(&pWDICtx->wptMutex);
9296 /*-----------------------------------------------------------------------
9297 Get message buffer
9298 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9301 &pSendBuffer, &usDataOffset, &usSendSize))||
9302 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9303 {
9304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9305 "Unable to get send buffer in set bss key req %x %x %x",
9306 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 }
9310
9311 /*-----------------------------------------------------------------------
9312 Copy the Key parameters into the HAL message
9313 -----------------------------------------------------------------------*/
9314
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9317
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9320
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9323
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9326
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 wpalMemoryCopy( pSendBuffer+usDataOffset,
9328 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9329 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009330
9331 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
9334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009340
9341}/*WDI_ProcessRemoveSTABcastKeyReq*/
9342
9343/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009345==========================================================================*/
9346/**
9347 @brief Process Add TSpec Request function (called when Main FSM
9348 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009349
9350 @param pWDICtx: pointer to the WLAN DAL context
9351 pEventData: pointer to the event information structure
9352
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 @see
9354 @return Result of the function call
9355*/
9356WDI_Status
9357WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009358(
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 WDI_ControlBlockType* pWDICtx,
9360 WDI_EventInfoType* pEventData
9361)
9362{
9363 WDI_AddTSReqParamsType* pwdiAddTSParams;
9364 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 wpt_uint16 usDataOffset = 0;
9369 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 wpt_macAddr macBSSID;
9372 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009373
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9375
9376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 -------------------------------------------------------------------------*/
9379 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9380 ( NULL == pEventData->pCBfnc ))
9381 {
9382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009386 }
9387
9388 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9389 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9390 /*-------------------------------------------------------------------------
9391 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 -------------------------------------------------------------------------*/
9394 wpalMutexAcquire(&pWDICtx->wptMutex);
9395
9396 /*------------------------------------------------------------------------
9397 Find the BSS for which the request is made and identify WDI session
9398 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9400 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 &macBSSID))
9402 {
9403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9404 "This station does not exist in the WDI Station Table %d");
9405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009407 }
9408
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9410 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9413 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9414 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009415
9416 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009419
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 /*------------------------------------------------------------------------
9421 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 ------------------------------------------------------------------------*/
9424 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9425 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9427 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9428 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009429
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 }
9434
9435 wpalMutexRelease(&pWDICtx->wptMutex);
9436 /*-----------------------------------------------------------------------
9437 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9441 sizeof(halAddTsParams),
9442 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 &usSendSize))||
9444 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9445 {
9446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9447 "Unable to get send buffer in set bss key req %x %x %x",
9448 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 }
9452
9453 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9454 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9455
9456 //TSPEC IE
9457 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9458 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9489
9490 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9505
9506 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9511
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 wpalMemoryCopy( pSendBuffer+usDataOffset,
9513 &halAddTsParams,
9514 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009515
9516 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009518
9519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009525}/*WDI_ProcessAddTSpecReq*/
9526
9527
9528/**
9529 @brief Process Del TSpec Request function (called when Main FSM
9530 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009531
9532 @param pWDICtx: pointer to the WLAN DAL context
9533 pEventData: pointer to the event information structure
9534
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 @see
9536 @return Result of the function call
9537*/
9538WDI_Status
9539WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009540(
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 WDI_ControlBlockType* pWDICtx,
9542 WDI_EventInfoType* pEventData
9543)
9544{
9545 WDI_DelTSReqParamsType* pwdiDelTSParams;
9546 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 wpt_uint16 usDataOffset = 0;
9551 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9554
9555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 -------------------------------------------------------------------------*/
9558 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9559 ( NULL == pEventData->pCBfnc ))
9560 {
9561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 }
9566
9567 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9568 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9569
9570 /*-------------------------------------------------------------------------
9571 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 -------------------------------------------------------------------------*/
9574 wpalMutexAcquire(&pWDICtx->wptMutex);
9575
9576 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9580 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9581 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009582
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9586 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9587 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9588
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 }
9592
9593 /*------------------------------------------------------------------------
9594 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 ------------------------------------------------------------------------*/
9597 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9598 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9600 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9601 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 }
9607
9608
9609 wpalMutexRelease(&pWDICtx->wptMutex);
9610 /*-----------------------------------------------------------------------
9611 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9616 &pSendBuffer, &usDataOffset, &usSendSize))||
9617 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9618 {
9619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9620 "Unable to get send buffer in set bss key req %x %x %x",
9621 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 }
9625
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 wpalMemoryCopy( pSendBuffer+usDataOffset,
9627 &pwdiDelTSParams->wdiDelTSInfo,
9628 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009629
9630 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632
9633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9637 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009638}/*WDI_ProcessDelTSpecReq*/
9639
9640/**
9641 @brief Process Update EDCA Params Request function (called when
9642 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009643
9644 @param pWDICtx: pointer to the WLAN DAL context
9645 pEventData: pointer to the event information structure
9646
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 @see
9648 @return Result of the function call
9649*/
9650WDI_Status
9651WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009652(
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 WDI_ControlBlockType* pWDICtx,
9654 WDI_EventInfoType* pEventData
9655)
9656{
9657 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9658 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 wpt_uint16 usDataOffset = 0;
9663 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9666
9667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 -------------------------------------------------------------------------*/
9670 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9671 ( NULL == pEventData->pCBfnc ))
9672 {
9673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 }
9678
9679 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9680 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9681 /*-------------------------------------------------------------------------
9682 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 -------------------------------------------------------------------------*/
9685 wpalMutexAcquire(&pWDICtx->wptMutex);
9686
9687 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9691 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9692 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009693
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 {
9696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9698 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009699
9700 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 }
9703
9704 /*------------------------------------------------------------------------
9705 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 ------------------------------------------------------------------------*/
9708 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9709 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9711 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9712 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009713
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 }
9718
9719
9720 wpalMutexRelease(&pWDICtx->wptMutex);
9721 /*-----------------------------------------------------------------------
9722 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9727 &pSendBuffer, &usDataOffset, &usSendSize))||
9728 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9729 {
9730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9731 "Unable to get send buffer in set bss key req %x %x %x",
9732 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 }
9736
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 wpalMemoryCopy( pSendBuffer+usDataOffset,
9738 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9739 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009740
9741 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009743
9744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9748 wdiUpdateEDCARspCb, pEventData->pUserData,
9749 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009750}/*WDI_ProcessUpdateEDCAParamsReq*/
9751
9752/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009755
9756 @param pWDICtx: pointer to the WLAN DAL context
9757 pEventData: pointer to the event information structure
9758
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 @see
9760 @return Result of the function call
9761*/
9762WDI_Status
9763WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009764(
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 WDI_ControlBlockType* pWDICtx,
9766 WDI_EventInfoType* pEventData
9767)
9768{
9769 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9770 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 wpt_uint16 usDataOffset = 0;
9775 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 wpt_macAddr macBSSID;
9778
9779 tAddBASessionReqMsg halAddBASessionReq;
9780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9781
9782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 -------------------------------------------------------------------------*/
9785 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9786 ( NULL == pEventData->pCBfnc ))
9787 {
9788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 }
9793
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9798 /*-------------------------------------------------------------------------
9799 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 -------------------------------------------------------------------------*/
9802 wpalMutexAcquire(&pWDICtx->wptMutex);
9803
9804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9808 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 &macBSSID))
9810 {
9811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9812 "This station does not exist in the WDI Station Table %d");
9813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 }
9816
9817
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009819
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9823 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9824 __func__, MAC_ADDR_ARRAY(macBSSID));
9825
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 }
9829
9830 /*------------------------------------------------------------------------
9831 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 ------------------------------------------------------------------------*/
9834 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9835 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9837 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9838 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009839
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 }
9844
9845
9846 wpalMutexRelease(&pWDICtx->wptMutex);
9847 /*-----------------------------------------------------------------------
9848 Get message buffer
9849 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9851 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 sizeof(halAddBASessionReq.addBASessionParams),
9853 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9856 {
9857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9858 "Unable to get send buffer in Add BA session req %x %x %x",
9859 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 }
9863
9864 halAddBASessionReq.addBASessionParams.staIdx =
9865 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9866 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9867 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9868 WDI_MAC_ADDR_LEN);
9869 halAddBASessionReq.addBASessionParams.baTID =
9870 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9871 halAddBASessionReq.addBASessionParams.baPolicy =
9872 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9873 halAddBASessionReq.addBASessionParams.baBufferSize =
9874 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9875 halAddBASessionReq.addBASessionParams.baTimeout =
9876 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9877 halAddBASessionReq.addBASessionParams.baSSN =
9878 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9879 halAddBASessionReq.addBASessionParams.baDirection =
9880 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9881
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 wpalMemoryCopy( pSendBuffer+usDataOffset,
9883 &halAddBASessionReq.addBASessionParams,
9884 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009885
9886 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009888
9889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9893 wdiAddBASessionRspCb, pEventData->pUserData,
9894 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009895}/*WDI_ProcessAddBASessionReq*/
9896
9897/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009900
9901 @param pWDICtx: pointer to the WLAN DAL context
9902 pEventData: pointer to the event information structure
9903
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 @see
9905 @return Result of the function call
9906*/
9907WDI_Status
9908WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009909(
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 WDI_ControlBlockType* pWDICtx,
9911 WDI_EventInfoType* pEventData
9912)
9913{
9914 WDI_DelBAReqParamsType* pwdiDelBAParams;
9915 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 wpt_uint16 usDataOffset = 0;
9920 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 wpt_macAddr macBSSID;
9923 tDelBAParams halDelBAparam;
9924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9925
9926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 -------------------------------------------------------------------------*/
9929 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9930 ( NULL == pEventData->pCBfnc ))
9931 {
9932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 }
9937
9938 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9939 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9940 /*-------------------------------------------------------------------------
9941 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 -------------------------------------------------------------------------*/
9944 wpalMutexAcquire(&pWDICtx->wptMutex);
9945
9946 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9950 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 &macBSSID))
9952 {
9953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9954 "This station does not exist in the WDI Station Table %d");
9955 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 }
9958
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009960
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9964 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9965 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009966
9967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 }
9970
9971 /*------------------------------------------------------------------------
9972 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 ------------------------------------------------------------------------*/
9975 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9976 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9978 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9979 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009980
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 }
9985
9986 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 sizeof(halDelBAparam),
9989 &pSendBuffer, &usDataOffset, &usSendSize))||
9990 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9991 {
9992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9993 "Unable to get send buffer for DEL BA req %x %x %x",
9994 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 }
9998
9999 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10000 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10001 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10002
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 wpalMemoryCopy( pSendBuffer+usDataOffset,
10004 &halDelBAparam,
10005 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010006
10007 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009
10010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10014 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010015}/*WDI_ProcessDelBAReq*/
10016
10017#ifdef FEATURE_WLAN_CCX
10018
10019WDI_Status
10020WDI_ProcessTSMStatsReq
10021(
10022 WDI_ControlBlockType* pWDICtx,
10023 WDI_EventInfoType* pEventData
10024)
10025{
10026 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10027 WDI_TsmRspCb wdiTSMRspCb;
10028 wpt_uint8 ucCurrentBSSSesIdx = 0;
10029 WDI_BSSSessionType* pBSSSes = NULL;
10030 wpt_uint8* pSendBuffer = NULL;
10031 wpt_uint16 usDataOffset = 0;
10032 wpt_uint16 usSendSize = 0;
10033 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10034 tTsmStatsParams halTsmStatsReqParams = {0};
10035
10036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10037
10038 /*-------------------------------------------------------------------------
10039 Sanity check
10040 -------------------------------------------------------------------------*/
10041 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10042 ( NULL == pEventData->pCBfnc ))
10043 {
10044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 WDI_ASSERT(0);
10047 return WDI_STATUS_E_FAILURE;
10048 }
10049
10050 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10051 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10052 /*-------------------------------------------------------------------------
10053 Check to see if we are in the middle of an association, if so queue, if
10054 not it means it is free to process request
10055 -------------------------------------------------------------------------*/
10056 wpalMutexAcquire(&pWDICtx->wptMutex);
10057
10058 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10059 if ( NULL == pBSSSes )
10060 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10062 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10063 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010064
10065 wpalMutexRelease(&pWDICtx->wptMutex);
10066 return WDI_STATUS_E_NOT_ALLOWED;
10067 }
10068
10069 /*------------------------------------------------------------------------
10070 Check if this BSS is being currently processed or queued,
10071 if queued - queue the new request as well
10072 ------------------------------------------------------------------------*/
10073 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10074 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10076 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10077 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010078
10079 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10080 wpalMutexRelease(&pWDICtx->wptMutex);
10081 return wdiStatus;
10082 }
10083
10084 wpalMutexRelease(&pWDICtx->wptMutex);
10085 /*-----------------------------------------------------------------------
10086 Get message buffer
10087 ! TO DO : proper conversion into the HAL Message Request Format
10088 -----------------------------------------------------------------------*/
10089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10090 sizeof(halTsmStatsReqParams),
10091 &pSendBuffer, &usDataOffset, &usSendSize))||
10092 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10093 {
10094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10095 "Unable to get send buffer in set bss key req %x %x %x",
10096 pEventData, pwdiTSMParams, wdiTSMRspCb);
10097 WDI_ASSERT(0);
10098 return WDI_STATUS_E_FAILURE;
10099 }
10100
10101 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10102 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10103 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10104 WDI_MAC_ADDR_LEN);
10105 wpalMemoryCopy( pSendBuffer+usDataOffset,
10106 &halTsmStatsReqParams,
10107 sizeof(halTsmStatsReqParams));
10108
10109 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10110 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10111
10112 /*-------------------------------------------------------------------------
10113 Send TSM Stats Request to HAL
10114 -------------------------------------------------------------------------*/
10115 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10116 wdiTSMRspCb, pEventData->pUserData,
10117 WDI_TSM_STATS_RESP);
10118}/*WDI_ProcessTSMStatsReq*/
10119
10120#endif
10121
10122
10123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010126
10127 @param pWDICtx: pointer to the WLAN DAL context
10128 pEventData: pointer to the event information structure
10129
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 @see
10131 @return Result of the function call
10132*/
10133WDI_Status
10134WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010135(
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 WDI_ControlBlockType* pWDICtx,
10137 WDI_EventInfoType* pEventData
10138)
10139{
10140 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10141 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 wpt_uint16 usDataOffset = 0;
10144 wpt_uint16 usSendSize = 0;
10145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10146
10147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 -------------------------------------------------------------------------*/
10150 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10151 ( NULL == pEventData->pCBfnc ))
10152 {
10153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 }
10158
10159 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10160 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10161 /*-----------------------------------------------------------------------
10162 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10167 &pSendBuffer, &usDataOffset, &usSendSize))||
10168 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10169 {
10170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10171 "Unable to get send buffer in set bss key req %x %x %x",
10172 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 }
10176
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 wpalMemoryCopy( pSendBuffer+usDataOffset,
10178 &pwdiFlushAcParams->wdiFlushAcInfo,
10179 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010180
10181 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010182 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010183
10184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10188 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010189}/*WDI_ProcessFlushAcReq*/
10190
10191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010194
10195 @param pWDICtx: pointer to the WLAN DAL context
10196 pEventData: pointer to the event information structure
10197
Jeff Johnson295189b2012-06-20 16:38:30 -070010198 @see
10199 @return Result of the function call
10200*/
10201WDI_Status
10202WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010203(
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 WDI_ControlBlockType* pWDICtx,
10205 WDI_EventInfoType* pEventData
10206)
10207{
10208 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10209 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 wpt_uint16 usDataOffset = 0;
10212 wpt_uint16 usSendSize = 0;
10213
10214 tBtAmpEventMsg haltBtAmpEventMsg;
10215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10216
10217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 -------------------------------------------------------------------------*/
10220 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10221 ( NULL == pEventData->pCBfnc ))
10222 {
10223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 }
10228
10229 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10230 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10231 /*-----------------------------------------------------------------------
10232 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10237 &pSendBuffer, &usDataOffset, &usSendSize))||
10238 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10239 {
10240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10241 "Unable to get send buffer in BT AMP event req %x %x %x",
10242 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 }
10246
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 wpalMemoryCopy( pSendBuffer+usDataOffset,
10250 &haltBtAmpEventMsg.btAmpEventParams,
10251 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010252
10253 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010255
10256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10260 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010261}/*WDI_ProcessBtAmpEventReq*/
10262
10263/**
10264 @brief Process Add STA self Request function (called when Main FSM
10265 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010266
10267 @param pWDICtx: pointer to the WLAN DAL context
10268 pEventData: pointer to the event information structure
10269
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 @see
10271 @return Result of the function call
10272*/
10273WDI_Status
10274WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010275(
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 WDI_ControlBlockType* pWDICtx,
10277 WDI_EventInfoType* pEventData
10278)
10279{
10280 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10281 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 wpt_uint16 usDataOffset = 0;
10284 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010285 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10287
10288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010290 -------------------------------------------------------------------------*/
10291 if (( NULL == pEventData ) ||
10292 ( NULL == pEventData->pEventData) ||
10293 ( NULL == pEventData->pCBfnc))
10294 {
10295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 }
10300
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10305 /*-----------------------------------------------------------------------
10306 Get message buffer
10307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10309 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010310 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010312 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 {
10314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10315 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10316 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10324
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010326 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10327 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10328 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10329 {
10330 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10331 }
10332 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10333 VOS_P2P_CLIENT_MODE) ||
10334 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10335 VOS_P2P_DEVICE))
10336 {
10337 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10338 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010340 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
10342 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010344
10345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10349 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10350 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010351}/*WDI_ProcessAddSTASelfReq*/
10352
10353
10354
10355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010358
10359 @param pWDICtx: pointer to the WLAN DAL context
10360 pEventData: pointer to the event information structure
10361
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 @see
10363 @return Result of the function call
10364*/
10365WDI_Status
10366WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010367(
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 WDI_ControlBlockType* pWDICtx,
10369 WDI_EventInfoType* pEventData
10370)
10371{
10372 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10373 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 wpt_uint16 usDataOffset = 0;
10376 wpt_uint16 usSendSize = 0;
10377 tDelStaSelfParams halSetDelSelfSTAParams;
10378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10379
10380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 -------------------------------------------------------------------------*/
10383 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10384 ( NULL == pEventData->pCBfnc ))
10385 {
10386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 }
10391
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10394 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10395
10396 /*-----------------------------------------------------------------------
10397 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10402 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10405 {
10406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10407 "Unable to get send buffer in Del Sta Self req %x %x %x",
10408 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010411 }
10412
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10415
Jeff Johnsone7245742012-09-05 17:12:55 -070010416 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10417 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010418
10419 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421
10422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10426 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 WDI_DEL_STA_SELF_RESP);
10428
10429}
10430
Jeff Johnsone7245742012-09-05 17:12:55 -070010431#ifdef FEATURE_OEM_DATA_SUPPORT
10432/**
10433 @brief Process Start Oem Data Request function (called when Main
10434 FSM allows it)
10435
10436 @param pWDICtx: pointer to the WLAN DAL context
10437 pEventData: pointer to the event information structure
10438
10439 @see
10440 @return Result of the function call
10441*/
10442WDI_Status
10443WDI_ProcessStartOemDataReq
10444(
10445 WDI_ControlBlockType* pWDICtx,
10446 WDI_EventInfoType* pEventData
10447)
10448{
10449 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10450 WDI_oemDataRspCb wdiOemDataRspCb;
10451 wpt_uint8* pSendBuffer = NULL;
10452 wpt_uint16 usDataOffset = 0;
10453 wpt_uint16 usSendSize = 0;
10454 wpt_uint16 reqLen;
10455 tStartOemDataReqParams* halStartOemDataReqParams;
10456
10457 /*-------------------------------------------------------------------------
10458 Sanity check
10459 -------------------------------------------------------------------------*/
10460 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10461 ( NULL == pEventData->pCBfnc ))
10462 {
10463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010464 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 WDI_ASSERT(0);
10466 return WDI_STATUS_E_FAILURE;
10467 }
10468
10469 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10470 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10471
10472 /*-----------------------------------------------------------------------
10473 Get message buffer
10474 -----------------------------------------------------------------------*/
10475
10476 reqLen = sizeof(tStartOemDataReqParams);
10477
10478 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10479 WDI_START_OEM_DATA_REQ, reqLen,
10480 &pSendBuffer, &usDataOffset, &usSendSize))||
10481 (usSendSize < (usDataOffset + reqLen)))
10482 {
10483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10484 "Unable to get send buffer in Start Oem Data req %x %x %x",
10485 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10486 WDI_ASSERT(0);
10487 return WDI_STATUS_E_FAILURE;
10488 }
10489
10490 //copying WDI OEM DATA REQ PARAMS to shared memory
10491 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10492
10493 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10494 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10495
10496 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10497 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10498
10499 /*-------------------------------------------------------------------------
10500 Send Start Request to HAL
10501 -------------------------------------------------------------------------*/
10502 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10503 wdiOemDataRspCb, pEventData->pUserData,
10504 WDI_START_OEM_DATA_RESP);
10505}/*WDI_ProcessStartOemDataReq*/
10506#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010507
10508/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010511
10512 @param pWDICtx: pointer to the WLAN DAL context
10513 pEventData: pointer to the event information structure
10514
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 @see
10516 @return Result of the function call
10517*/
10518WDI_Status
10519WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010520(
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 WDI_ControlBlockType* pWDICtx,
10522 WDI_EventInfoType* pEventData
10523)
10524{
10525 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10526 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 wpt_uint16 usDataOffset = 0;
10529 wpt_uint16 usSendSize = 0;
10530 tHalWlanHostResumeReqParam halResumeReqParams;
10531
10532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10533
10534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 -------------------------------------------------------------------------*/
10537 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10538 ( NULL == pEventData->pCBfnc ))
10539 {
10540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010541 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 }
10545
10546 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10547 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10548
10549 /*-----------------------------------------------------------------------
10550 Get message buffer
10551 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010553 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10554 &pSendBuffer, &usDataOffset, &usSendSize))||
10555 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10556 {
10557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 }
10563
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010566
10567 wpalMemoryCopy( pSendBuffer+usDataOffset,
10568 &halResumeReqParams,
10569 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010570
10571 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010573
10574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10578 wdiHostResumeRspCb, pEventData->pUserData,
10579 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010580}/*WDI_ProcessHostResumeReq*/
10581
10582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010585
10586 @param pWDICtx: pointer to the WLAN DAL context
10587 pEventData: pointer to the event information structure
10588
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 @see
10590 @return Result of the function call
10591*/
10592WDI_Status
10593WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010594(
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 WDI_ControlBlockType* pWDICtx,
10596 WDI_EventInfoType* pEventData
10597)
10598{
10599 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10600 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 wpt_uint16 usDataOffset = 0;
10603 wpt_uint16 usSendSize = 0;
10604 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10606
10607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010609 -------------------------------------------------------------------------*/
10610 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10611 ( NULL == pEventData->pCBfnc ))
10612 {
10613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010614 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 }
10618
10619 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10620 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010621
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 /*-----------------------------------------------------------------------
10623 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 sizeof(halTxPerTrackingReqParam),
10628 &pSendBuffer, &usDataOffset, &usSendSize))||
10629 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10630 {
10631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10632 "Unable to get send buffer in set tx per tracking req %x %x %x",
10633 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010637
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10639 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10640 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10641 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010642
10643 wpalMemoryCopy( pSendBuffer+usDataOffset,
10644 &halTxPerTrackingReqParam,
10645 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010646
10647 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010649
10650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10654 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010655}/*WDI_ProcessSetTxPerTrackingReq*/
10656
10657/*=========================================================================
10658 Indications
10659=========================================================================*/
10660
10661/**
10662 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010663
10664 @param pWDICtx: pointer to the WLAN DAL context
10665 pEventData: pointer to the event information structure
10666
Jeff Johnson295189b2012-06-20 16:38:30 -070010667 @see
10668 @return Result of the function call
10669*/
10670WDI_Status
10671WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010672(
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 WDI_ControlBlockType* pWDICtx,
10674 WDI_EventInfoType* pEventData
10675)
10676{
10677 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 wpt_uint16 usDataOffset = 0;
10680 wpt_uint16 usSendSize = 0;
10681 WDI_Status wdiStatus;
10682 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10684
10685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 -------------------------------------------------------------------------*/
10688 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10689 {
10690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010691 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 }
10695
10696 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10697
10698 /*-----------------------------------------------------------------------
10699 Get message buffer
10700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10702 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 sizeof(halWlanSuspendIndparams),
10704 &pSendBuffer, &usDataOffset, &usSendSize))||
10705 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10706 {
10707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10708 "Unable to get send buffer in Suspend Ind ");
10709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 }
10712
10713 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10714 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10715
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010717 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010718
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10720 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010721
10722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 -------------------------------------------------------------------------*/
10725 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010727
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10730}/*WDI_ProcessHostSuspendInd*/
10731
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010732
10733
10734/**
10735 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10736
10737 @param pWDICtx: pointer to the WLAN DAL context
10738 pEventData: pointer to the event information structure
10739
10740 @see
10741 @return Result of the function call
10742*/
10743WDI_Status
10744WDI_ProcessTrafficStatsInd
10745(
10746 WDI_ControlBlockType* pWDICtx,
10747 WDI_EventInfoType* pEventData
10748)
10749{
10750 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10751 wpt_uint8* pSendBuffer = NULL;
10752 wpt_uint16 usDataOffset = 0;
10753 wpt_uint16 usSendSize = 0;
10754 WDI_Status wdiStatus;
10755 tStatsClassBIndParams* pStatsClassBIndParams;
10756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10757
10758 /*-------------------------------------------------------------------------
10759 Sanity check
10760 -------------------------------------------------------------------------*/
10761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10762 {
10763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10764 "%s: Invalid parameters in Traffic Stats ind",__func__);
10765 WDI_ASSERT(0);
10766 return WDI_STATUS_E_FAILURE;
10767 }
10768
10769 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10770
10771 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10772 {
10773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10774 "%s: Invalid parameters in Traffic Stats ind",__func__);
10775 WDI_ASSERT(0);
10776 return WDI_STATUS_E_FAILURE;
10777 }
10778
10779 /*-----------------------------------------------------------------------
10780 Get message buffer
10781 -----------------------------------------------------------------------*/
10782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10783 WDI_TRAFFIC_STATS_IND,
10784 sizeof(tStatsClassBIndParams),
10785 &pSendBuffer, &usDataOffset, &usSendSize))||
10786 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10787 {
10788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10789 "Unable to get send buffer in Traffic Stats Ind ");
10790 WDI_ASSERT(0);
10791 return WDI_STATUS_E_FAILURE;
10792 }
10793
10794 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10795
10796 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10797
10798 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10799 pTrafficStatsIndParams->pTrafficStats,
10800 pTrafficStatsIndParams->length);
10801
10802 /*-------------------------------------------------------------------------
10803 Send Suspend Request to HAL
10804 -------------------------------------------------------------------------*/
10805 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10806 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10807
10808 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10809 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10810}/*WDI_ProcessTrafficStatsInd*/
10811
Chet Lanctota96bb432013-03-18 10:26:30 -070010812#ifdef WLAN_FEATURE_11W
10813/**
10814 @brief Process Exclude Unencrypted Indications function (called
10815 when Main FSM allows it)
10816
10817 @param pWDICtx: pointer to the WLAN DAL context
10818 pEventData: pointer to the event information structure
10819
10820 @see
10821 @return Result of the function call
10822*/
10823WDI_Status
10824WDI_ProcessExcludeUnencryptInd
10825(
10826 WDI_ControlBlockType* pWDICtx,
10827 WDI_EventInfoType* pEventData
10828)
10829{
10830 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10831 wpt_uint8* pSendBuffer = NULL;
10832 wpt_uint16 usDataOffset = 0;
10833 wpt_uint16 usSendSize = 0;
10834 WDI_Status wdiStatus;
10835 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10837
10838 /*-------------------------------------------------------------------------
10839 Sanity check
10840 -------------------------------------------------------------------------*/
10841 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10842 {
10843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10844 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10845 WDI_ASSERT(0);
10846 return WDI_STATUS_E_FAILURE;
10847 }
10848
10849 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10850
10851 /*-----------------------------------------------------------------------
10852 Get message buffer
10853 -----------------------------------------------------------------------*/
10854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10855 WDI_EXCLUDE_UNENCRYPTED_IND,
10856 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10857 &pSendBuffer, &usDataOffset, &usSendSize))||
10858 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10859 {
10860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10861 "Unable to get send buffer in Exclude Unencrypted Ind ");
10862 WDI_ASSERT(0);
10863 return WDI_STATUS_E_FAILURE;
10864 }
10865
10866 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10867
10868 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10869
10870 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10871 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10872
10873 /*-------------------------------------------------------------------------
10874 Send Suspend Request to HAL
10875 -------------------------------------------------------------------------*/
10876 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10877 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10878
10879 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10880 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10881}/*WDI_ProcessExcludeUnencryptInd*/
10882#endif
10883
Jeff Johnson295189b2012-06-20 16:38:30 -070010884/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010886==========================================================================*/
10887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010890
10891 @param pWDICtx: pointer to the WLAN DAL context
10892 pEventData: pointer to the event information structure
10893
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 @see
10895 @return Result of the function call
10896*/
10897WDI_Status
10898WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010899(
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 WDI_ControlBlockType* pWDICtx,
10901 WDI_EventInfoType* pEventData
10902)
10903{
10904 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10905 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 wpt_uint16 usDataOffset = 0;
10908 wpt_uint16 usSendSize = 0;
10909 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10911
10912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 -------------------------------------------------------------------------*/
10915 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10916 ( NULL == pEventData->pCBfnc ))
10917 {
10918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 }
10923
10924 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10925 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10926 /*-----------------------------------------------------------------------
10927 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 sizeof(halSwitchChannelReq.switchChannelParams),
10932 &pSendBuffer, &usDataOffset, &usSendSize))||
10933 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10934 {
10935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10936 "Unable to get send buffer in channel switch req %x %x %x",
10937 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 }
10941
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010944#ifndef WLAN_FEATURE_VOWIFI
10945 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010946 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10947#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10950
10951#ifdef WLAN_FEATURE_VOWIFI
10952 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10955 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10956 WDI_MAC_ADDR_LEN);
10957 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10958 pwdiSwitchChParams->wdiChInfo.macBSSId,
10959 WDI_MAC_ADDR_LEN);
10960#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 wpalMemoryCopy( pSendBuffer+usDataOffset,
10962 &halSwitchChannelReq.switchChannelParams,
10963 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010964
10965 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010967
10968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10972 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010973}/*WDI_ProcessChannelSwitchReq*/
10974
10975/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010978
10979 @param pWDICtx: pointer to the WLAN DAL context
10980 pEventData: pointer to the event information structure
10981
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 @see
10983 @return Result of the function call
10984*/
10985WDI_Status
10986WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010987(
Jeff Johnson295189b2012-06-20 16:38:30 -070010988 WDI_ControlBlockType* pWDICtx,
10989 WDI_EventInfoType* pEventData
10990)
10991{
10992 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10993 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 wpt_uint16 usDataOffset = 0;
10998 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011000
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 tConfigStaReqMsg halConfigStaReqMsg;
11002 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11004
11005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011007 -------------------------------------------------------------------------*/
11008 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11009 ( NULL == pEventData->pCBfnc ))
11010 {
11011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 }
11016
11017 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11018 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11019 /*-------------------------------------------------------------------------
11020 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011021 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011022 -------------------------------------------------------------------------*/
11023 wpalMutexAcquire(&pWDICtx->wptMutex);
11024
11025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011026 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011028 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11029 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11030 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011031
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11035 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11036 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011037
11038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 }
11041
11042 /*------------------------------------------------------------------------
11043 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 ------------------------------------------------------------------------*/
11046 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11047 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11049 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11050 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011051
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 }
11056
11057 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011058
11059 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11060#ifdef WLAN_FEATURE_11AC
11061 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011062 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 else
11064#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011065 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011066
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 /*-----------------------------------------------------------------------
11068 Get message buffer
11069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11071 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 {
11075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11076 "Unable to get send buffer in config sta req %x %x %x",
11077 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 }
11081
11082 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 &pwdiConfigSTAParams->wdiReqInfo);
11085
11086 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11087 {
11088 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 WDI_STATableFindStaidByAddr(pWDICtx,
11091 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 {
11094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11095 "This station does not exist in the WDI Station Table %d");
11096 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011097 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 }
11100 }
11101 else
11102 {
11103 /* Need to fill in the STA Index to invalid, since at this point we have not
11104 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011105 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 }
11107
11108 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011109 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011110
Jeff Johnsone7245742012-09-05 17:12:55 -070011111 wpalMemoryCopy( pSendBuffer+usDataOffset,
11112 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011113 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011114
11115 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011117
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11119 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011120 sizeof(pWDICtx->wdiCachedConfigStaReq));
11121
11122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11126 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011127}/*WDI_ProcessConfigStaReq*/
11128
11129
11130/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011131 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011133
11134 @param pWDICtx: pointer to the WLAN DAL context
11135 pEventData: pointer to the event information structure
11136
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 @see
11138 @return Result of the function call
11139*/
11140WDI_Status
11141WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011142(
Jeff Johnson295189b2012-06-20 16:38:30 -070011143 WDI_ControlBlockType* pWDICtx,
11144 WDI_EventInfoType* pEventData
11145)
11146{
11147 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11148 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 wpt_uint16 usDataOffset = 0;
11153 wpt_uint16 usSendSize = 0;
11154 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11157
11158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011160 -------------------------------------------------------------------------*/
11161 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11162 ( NULL == pEventData->pCBfnc ))
11163 {
11164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011168 }
11169
11170 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11171 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11172 /*-------------------------------------------------------------------------
11173 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011175 -------------------------------------------------------------------------*/
11176 wpalMutexAcquire(&pWDICtx->wptMutex);
11177
11178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11182 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11183 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011184
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11189 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 }
11191 else
11192 {
11193 /*------------------------------------------------------------------------
11194 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 ------------------------------------------------------------------------*/
11197 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11198 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11200 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11201 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11202
11203 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 }
11207 }
11208 /* If the link is set to enter IDLE - the Session allocated for this BSS
11209 will be deleted on the Set Link State response coming from HAL
11210 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11213
11214 wpalMutexRelease(&pWDICtx->wptMutex);
11215 /*-----------------------------------------------------------------------
11216 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011219
11220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 sizeof(halLinkStateReqMsg),
11222 &pSendBuffer, &usDataOffset, &usSendSize))||
11223 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11224 {
11225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11226 "Unable to get send buffer in set bss key req %x %x %x",
11227 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 }
11231
11232 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11233 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11234
11235 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11236 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11237
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11240
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 wpalMemoryCopy( pSendBuffer+usDataOffset,
11242 &halLinkStateReqMsg,
11243 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011244
11245 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011247
11248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11252 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011253}/*WDI_ProcessSetLinkStateReq*/
11254
11255
11256/**
11257 @brief Process Get Stats Request function (called when Main FSM
11258 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011259
11260 @param pWDICtx: pointer to the WLAN DAL context
11261 pEventData: pointer to the event information structure
11262
Jeff Johnson295189b2012-06-20 16:38:30 -070011263 @see
11264 @return Result of the function call
11265*/
11266WDI_Status
11267WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011268(
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 WDI_ControlBlockType* pWDICtx,
11270 WDI_EventInfoType* pEventData
11271)
11272{
11273 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11274 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 wpt_uint16 usDataOffset = 0;
11277 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 WDI_BSSSessionType* pBSSSes = NULL;
11280 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 tHalStatsReqMsg halStatsReqMsg;
11283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11284
11285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 -------------------------------------------------------------------------*/
11288 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11289 ( NULL == pEventData->pCBfnc ) )
11290 {
11291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 }
11296
11297 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11298 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11299
11300 /*-------------------------------------------------------------------------
11301 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 -------------------------------------------------------------------------*/
11304 wpalMutexAcquire(&pWDICtx->wptMutex);
11305
11306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11310 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 &macBSSID))
11312 {
11313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11314 "This station does not exist in the WDI Station Table %d");
11315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 }
11318
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11320 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11323 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11324 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011325
11326 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 }
11329
11330 /*------------------------------------------------------------------------
11331 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 ------------------------------------------------------------------------*/
11334 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11335 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11337 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11338 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011339
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 }
11344
11345
11346 wpalMutexRelease(&pWDICtx->wptMutex);
11347
11348 /*-----------------------------------------------------------------------
11349 Get message buffer
11350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 sizeof(halStatsReqMsg.statsReqParams),
11353 &pSendBuffer, &usDataOffset, &usSendSize))||
11354 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11355 {
11356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11357 "Unable to get send buffer in set bss key req %x %x %x",
11358 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 }
11362
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 wpalMemoryCopy( pSendBuffer+usDataOffset,
11368 &halStatsReqMsg.statsReqParams,
11369 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011370
11371 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011372 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011373
11374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11378 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011379}/*WDI_ProcessGetStatsReq*/
11380
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011381#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11382/**
11383 @brief Process Get Roam Rssi Request function (called when Main FSM
11384 allows it)
11385
11386 @param pWDICtx: pointer to the WLAN DAL context
11387 pEventData: pointer to the event information structure
11388
11389 @see
11390 @return Result of the function call
11391*/
11392WDI_Status
11393WDI_ProcessGetRoamRssiReq
11394(
11395 WDI_ControlBlockType* pWDICtx,
11396 WDI_EventInfoType* pEventData
11397)
11398{
11399 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11400 WDI_GetStatsRspCb wdiGetStatsRspCb;
11401 wpt_uint8* pSendBuffer = NULL;
11402 wpt_uint16 usDataOffset = 0;
11403 wpt_uint16 usSendSize = 0;
11404 wpt_uint8 ucCurrentBSSSesIdx = 0;
11405 WDI_BSSSessionType* pBSSSes = NULL;
11406 wpt_macAddr macBSSID;
11407 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11408 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11410 /*-------------------------------------------------------------------------
11411 Sanity check
11412 -------------------------------------------------------------------------*/
11413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11414 ( NULL == pEventData->pCBfnc ) )
11415 {
11416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11417 "%s: Invalid parameters", __func__);
11418 WDI_ASSERT(0);
11419 return WDI_STATUS_E_FAILURE;
11420 }
11421
11422 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11423 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11424
11425 /*-------------------------------------------------------------------------
11426 Check to see if we are in the middle of an association, if so queue, if
11427 not it means it is free to process request
11428 -------------------------------------------------------------------------*/
11429 wpalMutexAcquire(&pWDICtx->wptMutex);
11430
11431 /*------------------------------------------------------------------------
11432 Find the BSS for which the request is made
11433 ------------------------------------------------------------------------*/
11434 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11435 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11436 &macBSSID))
11437 {
11438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11439 "This station does not exist in the WDI Station Table %d");
11440 wpalMutexRelease(&pWDICtx->wptMutex);
11441 return WDI_STATUS_E_FAILURE;
11442 }
11443
11444 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11445 if ( NULL == pBSSSes )
11446 {
11447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11448 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11449 __func__, MAC_ADDR_ARRAY(macBSSID));
11450
11451 wpalMutexRelease(&pWDICtx->wptMutex);
11452 return WDI_STATUS_E_NOT_ALLOWED;
11453 }
11454
11455 /*------------------------------------------------------------------------
11456 Check if this BSS is being currently processed or queued,
11457 if queued - queue the new request as well
11458 ------------------------------------------------------------------------*/
11459 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11460 {
11461 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(macBSSID));
11464
11465 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11466 wpalMutexRelease(&pWDICtx->wptMutex);
11467 return wdiStatus;
11468 }
11469
11470 wpalMutexRelease(&pWDICtx->wptMutex);
11471
11472 /*-----------------------------------------------------------------------
11473 Get message buffer
11474 -----------------------------------------------------------------------*/
11475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11476 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11477 &pSendBuffer, &usDataOffset, &usSendSize))||
11478 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11479 {
11480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11481 "Unable to get send buffer in set bss key req %x %x %x",
11482 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11483 WDI_ASSERT(0);
11484 return WDI_STATUS_E_FAILURE;
11485 }
11486
11487 halRssiRoamReqMsg.roamRssiReqParams.staId =
11488 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11489 wpalMemoryCopy( pSendBuffer+usDataOffset,
11490 &halRssiRoamReqMsg.roamRssiReqParams,
11491 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11492
11493 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11494 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11495
11496 /*-------------------------------------------------------------------------
11497 Send Get STA Request to HAL
11498 -------------------------------------------------------------------------*/
11499 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11500 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11501}/*WDI_ProcessGetRoamRssiReq*/
11502#endif
11503
Jeff Johnson295189b2012-06-20 16:38:30 -070011504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011507
11508 @param pWDICtx: pointer to the WLAN DAL context
11509 pEventData: pointer to the event information structure
11510
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 @see
11512 @return Result of the function call
11513*/
11514WDI_Status
11515WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011516(
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 WDI_ControlBlockType* pWDICtx,
11518 WDI_EventInfoType* pEventData
11519)
11520{
11521 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11522 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11523
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 wpt_uint16 usDataOffset = 0;
11526 wpt_uint16 usSendSize = 0;
11527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11528
11529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 -------------------------------------------------------------------------*/
11532 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11533 ( NULL == pEventData->pCBfnc))
11534 {
11535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 }
11540
11541 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11542 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11543
11544 /*-----------------------------------------------------------------------
11545 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 -----------------------------------------------------------------------*/
11548
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11551 &pSendBuffer, &usDataOffset, &usSendSize))||
11552 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11553 {
11554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11555 "Unable to get send buffer in set bss key req %x %x %x",
11556 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 }
11560
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 wpalMemoryCopy( pSendBuffer+usDataOffset,
11562 &pwdiUpdateCfgParams->uConfigBufferLen,
11563 sizeof(wpt_uint32));
11564 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11565 pwdiUpdateCfgParams->pConfigBuffer,
11566 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011567
11568 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011570
11571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 -------------------------------------------------------------------------*/
11574
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11576 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011577
11578}/*WDI_ProcessUpdateCfgReq*/
11579
11580
11581/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011584
11585 @param pWDICtx: pointer to the WLAN DAL context
11586 pEventData: pointer to the event information structure
11587
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 @see
11589 @return Result of the function call
11590*/
11591WDI_Status
11592WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011593(
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 WDI_ControlBlockType* pWDICtx,
11595 WDI_EventInfoType* pEventData
11596)
11597{
11598 WDI_AddBAReqParamsType* pwdiAddBAParams;
11599 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 wpt_uint16 usDataOffset = 0;
11604 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 wpt_macAddr macBSSID;
11607
11608 tAddBAReqMsg halAddBAReq;
11609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11610
11611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 -------------------------------------------------------------------------*/
11614 if (( NULL == pEventData ) ||
11615 ( NULL == pEventData->pEventData) ||
11616 ( NULL == pEventData->pCBfnc ))
11617 {
11618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 }
11623
11624 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11625 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11626
11627 /*-------------------------------------------------------------------------
11628 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 -------------------------------------------------------------------------*/
11631 wpalMutexAcquire(&pWDICtx->wptMutex);
11632
11633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11637 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 &macBSSID))
11639 {
11640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11641 "This station does not exist in the WDI Station Table %d");
11642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011644 }
11645
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11647 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11650 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11651 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011652
11653 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 }
11656
11657 /*------------------------------------------------------------------------
11658 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 ------------------------------------------------------------------------*/
11661 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11662 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11664 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11665 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011666
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 }
11671
11672
11673 wpalMutexRelease(&pWDICtx->wptMutex);
11674 /*-----------------------------------------------------------------------
11675 Get message buffer
11676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 sizeof(halAddBAReq.addBAParams),
11679 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11682 {
11683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11684 "Unable to get send buffer in Add BA req %x %x %x",
11685 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 }
11689
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011691 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11692 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11693#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011695 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11696#endif
11697
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 wpalMemoryCopy( pSendBuffer+usDataOffset,
11699 &halAddBAReq.addBAParams,
11700 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011701
11702 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011704
11705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11709 wdiAddBARspCb, pEventData->pUserData,
11710 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011711}/*WDI_ProcessAddBAReq*/
11712
11713
11714
11715/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011718
11719 @param pWDICtx: pointer to the WLAN DAL context
11720 pEventData: pointer to the event information structure
11721
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 @see
11723 @return Result of the function call
11724*/
11725WDI_Status
11726WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011727(
Jeff Johnson295189b2012-06-20 16:38:30 -070011728 WDI_ControlBlockType* pWDICtx,
11729 WDI_EventInfoType* pEventData
11730)
11731{
11732 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11733 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011737 wpt_uint16 usDataOffset = 0;
11738 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 wpt_uint16 index;
11741 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011742
Jeff Johnson295189b2012-06-20 16:38:30 -070011743 tTriggerBAReqMsg halTriggerBAReq;
11744 tTriggerBaReqCandidate* halTriggerBACandidate;
11745 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11747
11748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011750 -------------------------------------------------------------------------*/
11751 if (( NULL == pEventData ) ||
11752 ( NULL == pEventData->pEventData ) ||
11753 ( NULL == pEventData->pCBfnc ))
11754 {
11755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011756 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 }
11760
11761 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11762 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11763 /*-------------------------------------------------------------------------
11764 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 -------------------------------------------------------------------------*/
11767 wpalMutexAcquire(&pWDICtx->wptMutex);
11768
11769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011772 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11773 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 &macBSSID))
11775 {
11776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11777 "This station does not exist in the WDI Station Table %d");
11778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 }
11781
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11783 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11786 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11787 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011788
11789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011791 }
11792
11793 /*------------------------------------------------------------------------
11794 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011796 ------------------------------------------------------------------------*/
11797 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11798 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11800 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11801 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011802
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 }
11807
11808
11809 wpalMutexRelease(&pWDICtx->wptMutex);
11810 /*-----------------------------------------------------------------------
11811 Get message buffer
11812 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11814 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011816 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11818 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11823 {
11824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11825 "Unable to get send buffer in Trigger BA req %x %x %x",
11826 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 }
11830
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11835
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 wpalMemoryCopy( pSendBuffer+usDataOffset,
11837 &halTriggerBAReq.triggerBAParams,
11838 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011839
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11842 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11843 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011844
11845 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 index++)
11847 {
11848 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11849 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11850 halTriggerBACandidate++;
11851 wdiTriggerBACandidate++;
11852 }
11853
11854 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011856
11857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11861 wdiTriggerBARspCb, pEventData->pUserData,
11862 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011863}/*WDI_ProcessTriggerBAReq*/
11864
11865
11866
11867/**
11868 @brief Process Update Beacon Params Request function (called when Main FSM
11869 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011870
11871 @param pWDICtx: pointer to the WLAN DAL context
11872 pEventData: pointer to the event information structure
11873
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 @see
11875 @return Result of the function call
11876*/
11877WDI_Status
11878WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011879(
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 WDI_ControlBlockType* pWDICtx,
11881 WDI_EventInfoType* pEventData
11882)
11883{
11884 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11885 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 wpt_uint16 usDataOffset = 0;
11888 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11891
11892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 -------------------------------------------------------------------------*/
11895 if (( NULL == pEventData ) ||
11896 ( NULL == pEventData->pEventData) ||
11897 ( NULL == pEventData->pCBfnc))
11898 {
11899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 }
11904
11905 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11906 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11907 /*-----------------------------------------------------------------------
11908 Get message buffer
11909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 sizeof(halUpdateBeaconParams),
11912 &pSendBuffer, &usDataOffset, &usSendSize))||
11913 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11914 {
11915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11916 "Unable to get send buffer in set bss key req %x %x %x",
11917 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 }
11921
11922 /*BSS Index of the BSS*/
11923 halUpdateBeaconParams.bssIdx =
11924 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11925 /*shortPreamble mode. HAL should update all the STA rates when it
11926 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11929 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11932 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11935
11936 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011947 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11949 halUpdateBeaconParams.fRIFSMode =
11950 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11953
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11955 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011956
11957 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011959
11960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11964 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011965}/*WDI_ProcessUpdateBeaconParamsReq*/
11966
11967
11968
11969/**
11970 @brief Process Send Beacon template Request function (called when Main FSM
11971 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011972
11973 @param pWDICtx: pointer to the WLAN DAL context
11974 pEventData: pointer to the event information structure
11975
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 @see
11977 @return Result of the function call
11978*/
11979WDI_Status
11980WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011981(
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 WDI_ControlBlockType* pWDICtx,
11983 WDI_EventInfoType* pEventData
11984)
11985{
11986 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11987 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 wpt_uint16 usDataOffset = 0;
11990 wpt_uint16 usSendSize = 0;
11991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11992
11993 tSendBeaconReqMsg halSendBeaconReq;
11994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 -------------------------------------------------------------------------*/
11997 if (( NULL == pEventData ) ||
11998 ( NULL == pEventData->pEventData ) ||
11999 ( NULL == pEventData->pCBfnc ))
12000 {
12001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 }
12006
12007 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12008 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12009 /*-----------------------------------------------------------------------
12010 Get message buffer
12011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 sizeof(halSendBeaconReq.sendBeaconParam),
12014 &pSendBuffer, &usDataOffset, &usSendSize))||
12015 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12016 {
12017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12018 "Unable to get send buffer in send beacon req %x %x %x",
12019 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 }
12023
12024 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12025 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12026 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12029 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12030 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12031 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012034 /* usP2PIeOffset should be atleast greater than timIeOffset */
12035 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12036 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12037 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12038 {
12039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12040 "Invalid usP2PIeOffset %hu",
12041 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12042 WDI_ASSERT(0);
12043 return WDI_STATUS_E_FAILURE;
12044 }
12045
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012048
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 wpalMemoryCopy( pSendBuffer+usDataOffset,
12050 &halSendBeaconReq.sendBeaconParam,
12051 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012052
12053 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012055
12056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12060 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012061}/*WDI_ProcessSendBeaconParamsReq*/
12062
12063/**
12064 @brief Process Update Beacon Params Request function (called when Main FSM
12065 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012066
12067 @param pWDICtx: pointer to the WLAN DAL context
12068 pEventData: pointer to the event information structure
12069
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 @see
12071 @return Result of the function call
12072*/
12073WDI_Status
12074WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012075(
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 WDI_ControlBlockType* pWDICtx,
12077 WDI_EventInfoType* pEventData
12078)
12079{
12080 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12081 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 wpt_uint16 usDataOffset = 0;
12084 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12087
12088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 -------------------------------------------------------------------------*/
12091 if (( NULL == pEventData ) ||
12092 ( NULL == pEventData->pEventData) ||
12093 ( NULL == pEventData->pCBfnc))
12094 {
12095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 }
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12105 /*-----------------------------------------------------------------------
12106 Get message buffer
12107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012109 sizeof(halUpdateProbeRspTmplParams),
12110 &pSendBuffer, &usDataOffset, &usSendSize))||
12111 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12112 {
12113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12114 "Unable to get send buffer in set bss key req %x %x %x",
12115 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012118 }
12119
12120 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 WDI_MAC_ADDR_LEN);
12123
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12126
12127 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12128 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012130
12131
12132 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12133 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12134 WDI_PROBE_REQ_BITMAP_IE_LEN);
12135
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 wpalMemoryCopy( pSendBuffer+usDataOffset,
12137 &halUpdateProbeRspTmplParams,
12138 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012139
12140 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012142
12143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12147 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12148 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012149}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12150
12151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012152 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012153 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012154
12155 @param pWDICtx: pointer to the WLAN DAL context
12156 pEventData: pointer to the event information structure
12157
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 @see
12159 @return Result of the function call
12160*/
12161WDI_Status
12162WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012163(
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 WDI_ControlBlockType* pWDICtx,
12165 WDI_EventInfoType* pEventData
12166)
12167{
12168
12169 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12170 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12171
12172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 -------------------------------------------------------------------------*/
12175 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12180 {
12181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 }
12186
12187 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012188 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12190
12191 /*cache the wdi nv request message here if the the first fragment
12192 * To issue the request to HAL for the next fragment */
12193 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12194 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12196 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12198
12199 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12200 pWDICtx->pRspCBUserData = pEventData->pUserData;
12201 }
12202
12203 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12204}
12205
12206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012209
12210 @param pWDICtx: pointer to the WLAN DAL context
12211 pEventData: pointer to the event information structure
12212
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 @see
12214 @return Result of the function call
12215*/
12216WDI_Status WDI_ProcessSetMaxTxPowerReq
12217(
12218 WDI_ControlBlockType* pWDICtx,
12219 WDI_EventInfoType* pEventData
12220)
12221{
12222 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12223 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012224 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 wpt_uint16 usDataOffset = 0;
12226 wpt_uint16 usSendSize = 0;
12227 tSetMaxTxPwrReq halSetMaxTxPower;
12228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12229
12230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 -------------------------------------------------------------------------*/
12233 if (( NULL == pEventData ) ||
12234 ( NULL == pEventData->pEventData ) ||
12235 ( NULL == pEventData->pCBfnc ))
12236 {
12237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12246
12247 /*-----------------------------------------------------------------------
12248 Get message buffer
12249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012250if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012251 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12252 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012254)))
12255 {
12256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12257 "Unable to get Set Max Tx Power req %x %x %x",
12258 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 }
12262
12263 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12264 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12265 WDI_MAC_ADDR_LEN);
12266
12267 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12268 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12269 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012272
12273 wpalMemoryCopy( pSendBuffer+usDataOffset,
12274 &halSetMaxTxPower.setMaxTxPwrParams,
12275 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012276
12277 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012279
12280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12284 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12285 WDI_SET_MAX_TX_POWER_RESP);
12286
Jeff Johnson295189b2012-06-20 16:38:30 -070012287}
12288
schangd82195a2013-03-13 18:41:24 -070012289/**
12290 @brief Process Set Tx Power Request function (called when Main
12291 FSM allows it)
12292
12293 @param pWDICtx: pointer to the WLAN DAL context
12294 pEventData: pointer to the event information structure
12295
12296 @see
12297 @return Result of the function call
12298*/
12299WDI_Status WDI_ProcessSetTxPowerReq
12300(
12301 WDI_ControlBlockType* pWDICtx,
12302 WDI_EventInfoType* pEventData
12303)
12304{
12305 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12306 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12307 wpt_uint8* pSendBuffer = NULL;
12308 wpt_uint16 usDataOffset = 0;
12309 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012310 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12312
12313 /*-------------------------------------------------------------------------
12314 Sanity check
12315 -------------------------------------------------------------------------*/
12316 if (( NULL == pEventData ) ||
12317 ( NULL == pEventData->pEventData ) ||
12318 ( NULL == pEventData->pCBfnc ))
12319 {
12320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12321 "%s: Invalid parameters", __func__);
12322 WDI_ASSERT(0);
12323 return WDI_STATUS_E_FAILURE;
12324 }
12325
12326 pwdiSetTxPowerParams =
12327 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12328 wdiSetTxPowerRspCb =
12329 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12330
12331 /*-----------------------------------------------------------------------
12332 Get message buffer
12333 -----------------------------------------------------------------------*/
12334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12335 sizeof(tSetTxPwrReqParams),
12336 &pSendBuffer, &usDataOffset, &usSendSize))||
12337 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12338 )))
12339 {
12340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12341 "Unable to get Set Max Tx Power req %x %x %x",
12342 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12343 WDI_ASSERT(0);
12344 return WDI_STATUS_E_FAILURE;
12345 }
12346
Leo Changa37e2a92013-03-25 17:39:58 -070012347 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12348 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12349 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012350
12351 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12352 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12353
12354 /*-------------------------------------------------------------------------
12355 Send Set Tx Power Request to HAL
12356 -------------------------------------------------------------------------*/
12357 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12358 wdiSetTxPowerRspCb, pEventData->pUserData,
12359 WDI_SET_TX_POWER_RESP);
12360}
Jeff Johnson295189b2012-06-20 16:38:30 -070012361
12362/**
12363 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12364 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012365
12366 @param pWDICtx: pointer to the WLAN DAL context
12367 pEventData: pointer to the event information structure
12368
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 @see
12370 @return Result of the function call
12371*/
12372WDI_Status
12373WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012374(
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 WDI_ControlBlockType* pWDICtx,
12376 WDI_EventInfoType* pEventData
12377)
12378{
12379 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12380 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 wpt_uint16 usDataOffset = 0;
12383 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12386
12387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 -------------------------------------------------------------------------*/
12390 if (( NULL == pEventData ) ||
12391 ( NULL == pEventData->pEventData) ||
12392 ( NULL == pEventData->pCBfnc))
12393 {
12394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 }
12399
Jeff Johnsone7245742012-09-05 17:12:55 -070012400 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012401 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012402 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12404 /*-----------------------------------------------------------------------
12405 Get message buffer
12406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12408 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 sizeof(halSetP2PGONOAParams),
12410 &pSendBuffer, &usDataOffset, &usSendSize))||
12411 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12412 {
12413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12414 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12415 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 }
12419
Jeff Johnsone7245742012-09-05 17:12:55 -070012420 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12424 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12433
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 wpalMemoryCopy( pSendBuffer+usDataOffset,
12435 &halSetP2PGONOAParams,
12436 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012437
12438 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012440
12441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12445 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12446 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012447}/*WDI_ProcessP2PGONOAReq*/
12448
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012449#ifdef FEATURE_WLAN_TDLS
12450
12451/**
12452 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12453 allows it)
12454
12455 @param pWDICtx: pointer to the WLAN DAL context
12456 pEventData: pointer to the event information structure
12457
12458 @see
12459 @return Result of the function call
12460*/
12461WDI_Status
12462WDI_ProcessTdlsLinkEstablishReq
12463(
12464 WDI_ControlBlockType* pWDICtx,
12465 WDI_EventInfoType* pEventData
12466)
12467{
12468 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12469 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12470 wpt_uint8* pSendBuffer = NULL;
12471 wpt_uint16 usDataOffset = 0;
12472 wpt_uint16 usSendSize = 0;
12473
12474 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12476
12477 /*-------------------------------------------------------------------------
12478 Sanity check
12479 -------------------------------------------------------------------------*/
12480 if (( NULL == pEventData ) ||
12481 ( NULL == pEventData->pEventData) ||
12482 ( NULL == pEventData->pCBfnc))
12483 {
12484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12485 "%s: Invalid parameters", __func__);
12486 WDI_ASSERT(0);
12487 return WDI_STATUS_E_FAILURE;
12488 }
12489 pwdiTDLSLinkEstablishReqParams =
12490 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12491 wdiTDLSLinkEstablishReqRspCb =
12492 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12493
12494
12495 /*-----------------------------------------------------------------------
12496 Get message buffer
12497 -----------------------------------------------------------------------*/
12498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12499 WDI_TDLS_LINK_ESTABLISH_REQ,
12500 sizeof(halSetTDLSLinkEstablishParams),
12501 &pSendBuffer, &usDataOffset, &usSendSize))||
12502 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12503 {
12504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12505 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12506 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12507 WDI_ASSERT(0);
12508 return WDI_STATUS_E_FAILURE;
12509 }
12510
12511 halSetTDLSLinkEstablishParams.staIdx =
12512 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12513 halSetTDLSLinkEstablishParams.bIsResponder =
12514 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12515 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12516 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12517 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12518 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12519 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12520 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12521 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12522 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12523 halSetTDLSLinkEstablishParams.aAck = 0;
12524 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12525 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12526 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12527
12528 wpalMemoryCopy( pSendBuffer+usDataOffset,
12529 &halSetTDLSLinkEstablishParams,
12530 sizeof(halSetTDLSLinkEstablishParams));
12531
12532 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12533 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12534
12535 /*-------------------------------------------------------------------------
12536 Send Update Probe Resp Template Request to HAL
12537 -------------------------------------------------------------------------*/
12538 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12539 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12540 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12541 return 0;
12542}/*WDI_ProcessTdlsLinkEstablishReq*/
12543
12544
12545#endif
12546
Jeff Johnson295189b2012-06-20 16:38:30 -070012547
12548
12549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 @param None
12553
12554 @see
12555 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012556*/
12557void
12558WDI_SetPowerStateCb
12559(
12560 wpt_status status,
12561 unsigned int dxePhyAddr,
12562 void *pContext
12563)
12564{
12565 wpt_status wptStatus;
12566 WDI_ControlBlockType *pCB = NULL;
12567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12568 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12569 {
12570 //it shouldn't happen, put an error msg
12571 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 /*
12573 * Trigger the event to bring the Enter BMPS req function to come
12574 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012575*/
12576 if( NULL != pContext )
12577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 }
12580 else
12581 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 pCB = &gWDICb;
12584 }
12585 pCB->dxePhyAddr = dxePhyAddr;
12586 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12587 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12588 {
12589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12590 "Failed to set an event");
12591
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 }
12594 return;
12595}
12596
12597
12598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012599 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012601
12602 @param pWDICtx: pointer to the WLAN DAL context
12603 pEventData: pointer to the event information structure
12604
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 @see
12606 @return Result of the function call
12607*/
12608WDI_Status
12609WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012610(
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 WDI_ControlBlockType* pWDICtx,
12612 WDI_EventInfoType* pEventData
12613)
12614{
Jeff Johnson43971f52012-07-17 12:26:56 -070012615 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 wpt_uint16 usDataOffset = 0;
12619 wpt_uint16 usSendSize = 0;
12620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12621
12622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 -------------------------------------------------------------------------*/
12625 if (( NULL == pEventData ) ||
12626 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12627 {
12628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012631 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 }
12633
12634 /*-----------------------------------------------------------------------
12635 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 0,
12640 &pSendBuffer, &usDataOffset, &usSendSize))||
12641 ( usSendSize < (usDataOffset )))
12642 {
12643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12644 "Unable to get send buffer in Enter IMPS req %x %x",
12645 pEventData, wdiEnterImpsRspCb);
12646 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012647 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012648 }
12649
12650 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012651 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12652 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012653 {
12654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12655 "WDI Init failed to reset an event");
12656
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012658 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 }
12660
12661 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012662 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12663 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12665 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12666 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012667 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012668 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012669
12670 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012673 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12674 WDI_SET_POWER_STATE_TIMEOUT);
12675 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 {
12677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12678 "WDI Init failed to wait on an event");
12679
Jeff Johnsone7245742012-09-05 17:12:55 -070012680 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012681 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 }
12683
12684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12688 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012689
12690fail:
12691 // Release the message buffer so we don't leak
12692 wpalMemoryFree(pSendBuffer);
12693
12694failRequest:
12695 //WDA should have failure check to avoid the memory leak
12696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012697}/*WDI_ProcessEnterImpsReq*/
12698
12699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012702
12703 @param pWDICtx: pointer to the WLAN DAL context
12704 pEventData: pointer to the event information structure
12705
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 @see
12707 @return Result of the function call
12708*/
12709WDI_Status
12710WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012711(
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 WDI_ControlBlockType* pWDICtx,
12713 WDI_EventInfoType* pEventData
12714)
12715{
12716 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 wpt_uint16 usDataOffset = 0;
12719 wpt_uint16 usSendSize = 0;
12720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12721
12722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 -------------------------------------------------------------------------*/
12725 if (( NULL == pEventData ) ||
12726 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12727 {
12728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 }
12733
12734 /*-----------------------------------------------------------------------
12735 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 0,
12740 &pSendBuffer, &usDataOffset, &usSendSize))||
12741 ( usSendSize < (usDataOffset )))
12742 {
12743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12744 "Unable to get send buffer in Exit IMPS req %x %x",
12745 pEventData, wdiExitImpsRspCb);
12746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 }
12749
12750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12754 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012755}/*WDI_ProcessExitImpsReq*/
12756
12757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012759 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012760
12761 @param pWDICtx: pointer to the WLAN DAL context
12762 pEventData: pointer to the event information structure
12763
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 @see
12765 @return Result of the function call
12766*/
12767WDI_Status
12768WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012769(
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 WDI_ControlBlockType* pWDICtx,
12771 WDI_EventInfoType* pEventData
12772)
12773{
12774 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12775 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 wpt_uint16 usDataOffset = 0;
12778 wpt_uint16 usSendSize = 0;
12779 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012780 wpt_status wptStatus;
12781
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12783
12784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 -------------------------------------------------------------------------*/
12787 if (( NULL == pEventData ) ||
12788 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12789 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12790 {
12791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012794 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 }
12796
12797 /*-----------------------------------------------------------------------
12798 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 sizeof(enterBmpsReq),
12803 &pSendBuffer, &usDataOffset, &usSendSize))||
12804 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12805 {
12806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12807 "Unable to get send buffer in Enter BMPS req %x %x %x",
12808 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12809 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012810 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 }
12812
12813 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012814 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12815 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 {
12817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12818 "WDI Init failed to reset an event");
12819
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012821 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 }
12823
12824 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012825 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12826 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12827 {
12828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12829 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12830 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012831 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012832 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012833
12834/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012836 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012837 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12838 WDI_SET_POWER_STATE_TIMEOUT);
12839 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 {
12841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12842 "WDI Init failed to wait on an event");
12843
Jeff Johnsone7245742012-09-05 17:12:55 -070012844 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012845 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 }
12847
12848 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12849
12850 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12851 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12852 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12853 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12854
12855 // For CCX and 11R Roaming
12856 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12857 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12858 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12859
12860 wpalMemoryCopy( pSendBuffer+usDataOffset,
12861 &enterBmpsReq,
12862 sizeof(enterBmpsReq));
12863
12864 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012866
12867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12871 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012872
12873fail:
12874 // Release the message buffer so we don't leak
12875 wpalMemoryFree(pSendBuffer);
12876
12877failRequest:
12878 //WDA should have failure check to avoid the memory leak
12879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012880}/*WDI_ProcessEnterBmpsReq*/
12881
12882/**
12883 @brief Process Exit BMPS Request function (called when Main FSM
12884 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012885
12886 @param pWDICtx: pointer to the WLAN DAL context
12887 pEventData: pointer to the event information structure
12888
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 @see
12890 @return Result of the function call
12891*/
12892WDI_Status
12893WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012894(
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 WDI_ControlBlockType* pWDICtx,
12896 WDI_EventInfoType* pEventData
12897)
12898{
12899 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12900 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 wpt_uint16 usDataOffset = 0;
12903 wpt_uint16 usSendSize = 0;
12904 tHalExitBmpsReqParams exitBmpsReq;
12905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12906
12907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 -------------------------------------------------------------------------*/
12910 if (( NULL == pEventData ) ||
12911 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12912 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12913 {
12914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 }
12919
12920 /*-----------------------------------------------------------------------
12921 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012924 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 sizeof(exitBmpsReq),
12926 &pSendBuffer, &usDataOffset, &usSendSize))||
12927 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12928 {
12929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12930 "Unable to get send buffer in Exit BMPS req %x %x %x",
12931 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 }
12935 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12936
Jeff Johnsone7245742012-09-05 17:12:55 -070012937 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12938
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 wpalMemoryCopy( pSendBuffer+usDataOffset,
12940 &exitBmpsReq,
12941 sizeof(exitBmpsReq));
12942
12943 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012945
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 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012951}/*WDI_ProcessExitBmpsReq*/
12952
12953/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012954 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012955 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012956
12957 @param pWDICtx: pointer to the WLAN DAL context
12958 pEventData: pointer to the event information structure
12959
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 @see
12961 @return Result of the function call
12962*/
12963WDI_Status
12964WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012965(
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 WDI_ControlBlockType* pWDICtx,
12967 WDI_EventInfoType* pEventData
12968)
12969{
12970 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12971 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012973 wpt_uint16 usDataOffset = 0;
12974 wpt_uint16 usSendSize = 0;
12975 tUapsdReqParams enterUapsdReq;
12976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12977
12978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 -------------------------------------------------------------------------*/
12981 if (( NULL == pEventData ) ||
12982 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12983 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12984 {
12985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 }
12990
12991 /*-----------------------------------------------------------------------
12992 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 sizeof(enterUapsdReq),
12997 &pSendBuffer, &usDataOffset, &usSendSize))||
12998 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12999 {
13000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13001 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13002 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013005 }
13006
13007 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13008 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13009 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13010 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13011 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13012 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13013 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13014 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013015 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013016
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 wpalMemoryCopy( pSendBuffer+usDataOffset,
13018 &enterUapsdReq,
13019 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013020
13021 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013022 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013023
13024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13028 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013029}/*WDI_ProcessEnterUapsdReq*/
13030
13031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013034
13035 @param pWDICtx: pointer to the WLAN DAL context
13036 pEventData: pointer to the event information structure
13037
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 @see
13039 @return Result of the function call
13040*/
13041WDI_Status
13042WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013043(
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 WDI_ControlBlockType* pWDICtx,
13045 WDI_EventInfoType* pEventData
13046)
13047{
13048 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 wpt_uint16 usDataOffset = 0;
13051 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013052 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13053 wpt_uint8 bssIdx = 0;
13054
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13056
13057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013059 -------------------------------------------------------------------------*/
13060 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013061 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13063 {
13064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 }
13069
13070 /*-----------------------------------------------------------------------
13071 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013075 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013077 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 {
13079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13080 "Unable to get send buffer in Exit UAPSD req %x %x",
13081 pEventData, wdiExitUapsdRspCb);
13082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 }
13085
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013086 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13087
13088 wpalMemoryCopy( pSendBuffer+usDataOffset,
13089 &bssIdx,
13090 sizeof(wpt_uint8));
13091
13092 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13093 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13094
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13099 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013100}/*WDI_ProcessExitUapsdReq*/
13101
13102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013103 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013104 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013105
13106 @param pWDICtx: pointer to the WLAN DAL context
13107 pEventData: pointer to the event information structure
13108
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 @see
13110 @return Result of the function call
13111*/
13112WDI_Status
13113WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013114(
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 WDI_ControlBlockType* pWDICtx,
13116 WDI_EventInfoType* pEventData
13117)
13118{
13119 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13120 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 wpt_uint16 usDataOffset = 0;
13123 wpt_uint16 usSendSize = 0;
13124 tUapsdInfo uapsdAcParamsReq;
13125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13126
13127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 -------------------------------------------------------------------------*/
13130 if (( NULL == pEventData ) ||
13131 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13132 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13133 {
13134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 }
13139
13140 /*-----------------------------------------------------------------------
13141 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013142 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 sizeof(uapsdAcParamsReq),
13146 &pSendBuffer, &usDataOffset, &usSendSize))||
13147 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13148 {
13149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13150 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13151 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 }
13155
13156 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13157 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13158 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13159 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13160 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13161 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13162
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 wpalMemoryCopy( pSendBuffer+usDataOffset,
13164 &uapsdAcParamsReq,
13165 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013166
13167 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013169
13170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13174 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013175}/*WDI_ProcessSetUapsdAcParamsReq*/
13176
13177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013180
13181 @param pWDICtx: pointer to the WLAN DAL context
13182 pEventData: pointer to the event information structure
13183
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 @see
13185 @return Result of the function call
13186*/
13187WDI_Status
13188WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013189(
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 WDI_ControlBlockType* pWDICtx,
13191 WDI_EventInfoType* pEventData
13192)
13193{
13194 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13195 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 wpt_uint16 usDataOffset = 0;
13198 wpt_uint16 usSendSize = 0;
13199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13200
13201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 -------------------------------------------------------------------------*/
13204 if (( NULL == pEventData ) ||
13205 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13206 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13207 {
13208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013212 }
13213
13214 /*-----------------------------------------------------------------------
13215 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13220 &pSendBuffer, &usDataOffset, &usSendSize))||
13221 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13222 {
13223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13224 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13225 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 }
13229
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 wpalMemoryCopy( pSendBuffer+usDataOffset,
13231 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13232 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013233
13234 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013236
13237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13241 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013242}/*WDI_ProcessUpdateUapsdParamsReq*/
13243
13244/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013247
13248 @param pWDICtx: pointer to the WLAN DAL context
13249 pEventData: pointer to the event information structure
13250
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 @see
13252 @return Result of the function call
13253*/
13254WDI_Status
13255WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013256(
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 WDI_ControlBlockType* pWDICtx,
13258 WDI_EventInfoType* pEventData
13259)
13260{
13261 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13262 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 wpt_uint16 usDataOffset = 0;
13265 wpt_uint16 usSendSize = 0;
13266 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13267
13268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13269
13270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 -------------------------------------------------------------------------*/
13273 if (( NULL == pEventData ) ||
13274 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13275 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13276 {
13277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
13283 /*-----------------------------------------------------------------------
13284 Get message buffer
13285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 sizeof(halRxpFilterParams),
13288 &pSendBuffer, &usDataOffset, &usSendSize))||
13289 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13290 {
13291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13292 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13293 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 }
13297
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13302
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 wpalMemoryCopy( pSendBuffer+usDataOffset,
13304 &halRxpFilterParams,
13305 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013306
13307 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013309
13310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13314 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013315}/*WDI_ProcessConfigureRxpFilterReq*/
13316
13317/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013320
13321 @param pWDICtx: pointer to the WLAN DAL context
13322 pEventData: pointer to the event information structure
13323
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 @see
13325 @return Result of the function call
13326*/
13327WDI_Status
13328WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013329(
Jeff Johnson295189b2012-06-20 16:38:30 -070013330 WDI_ControlBlockType* pWDICtx,
13331 WDI_EventInfoType* pEventData
13332)
13333{
13334 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13335 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 wpt_uint16 usDataOffset = 0;
13338 wpt_uint16 usSendSize = 0;
13339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13340
13341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 -------------------------------------------------------------------------*/
13344 if (( NULL == pEventData ) ||
13345 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13346 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13347 {
13348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 }
13353
13354 /*-----------------------------------------------------------------------
13355 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013356 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13360 &pSendBuffer, &usDataOffset, &usSendSize))||
13361 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13362 {
13363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13364 "Unable to get send buffer in Set beacon filter req %x %x %x",
13365 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 }
13369
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 wpalMemoryCopy( pSendBuffer+usDataOffset,
13371 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13372 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13373 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13374 &pwdiBeaconFilterParams->aFilters[0],
13375 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013376
13377 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013379
13380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013381 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13384 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013385}/*WDI_ProcessSetBeaconFilterReq*/
13386
13387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013390
13391 @param pWDICtx: pointer to the WLAN DAL context
13392 pEventData: pointer to the event information structure
13393
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 @see
13395 @return Result of the function call
13396*/
13397WDI_Status
13398WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013399(
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 WDI_ControlBlockType* pWDICtx,
13401 WDI_EventInfoType* pEventData
13402)
13403{
13404 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13405 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 wpt_uint16 usDataOffset = 0;
13408 wpt_uint16 usSendSize = 0;
13409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13410
13411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 -------------------------------------------------------------------------*/
13414 if (( NULL == pEventData ) ||
13415 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13416 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13417 {
13418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 }
13423
13424 /*-----------------------------------------------------------------------
13425 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13430 &pSendBuffer, &usDataOffset, &usSendSize))||
13431 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13432 {
13433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13434 "Unable to get send buffer in remove beacon filter req %x %x %x",
13435 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 }
13439
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 wpalMemoryCopy( pSendBuffer+usDataOffset,
13441 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13442 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013443
13444 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013446
13447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13451 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013452}
13453
13454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013457
13458 @param pWDICtx: pointer to the WLAN DAL context
13459 pEventData: pointer to the event information structure
13460
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 @see
13462 @return Result of the function call
13463*/
13464WDI_Status
13465WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013466(
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 WDI_ControlBlockType* pWDICtx,
13468 WDI_EventInfoType* pEventData
13469)
13470{
13471 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13472 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 wpt_uint16 usDataOffset = 0;
13475 wpt_uint16 usSendSize = 0;
13476 tHalRSSIThresholds rssiThresholdsReq;
13477 WDI_Status ret_status = 0;
13478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13479
13480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 -------------------------------------------------------------------------*/
13483 if (( NULL == pEventData ) ||
13484 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13485 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13486 {
13487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 }
13492
13493 /*-----------------------------------------------------------------------
13494 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 sizeof(rssiThresholdsReq),
13499 &pSendBuffer, &usDataOffset, &usSendSize))||
13500 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13501 {
13502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13503 "Unable to get send buffer in remove beacon filter req %x %x %x",
13504 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 }
13508
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013513 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13529
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 wpalMemoryCopy( pSendBuffer+usDataOffset,
13531 &rssiThresholdsReq,
13532 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013533
13534 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536
13537 /*-------------------------------------------------------------------------
13538 Send Set threshold req to HAL
13539 -------------------------------------------------------------------------*/
13540 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13541 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13542 {
13543 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13544 // req. Then as a result of processing the threshold cross ind, we trigger
13545 // a Set threshold req, then we need to indicate to WDI that it needs to
13546 // go to busy state as a result of the indication as we sent a req in the
13547 // same WDI context.
13548 // Hence expected state transition is to busy.
13549 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13550 }
13551
13552 return ret_status;
13553}
13554
13555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013558
13559 @param pWDICtx: pointer to the WLAN DAL context
13560 pEventData: pointer to the event information structure
13561
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 @see
13563 @return Result of the function call
13564*/
13565WDI_Status
13566WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013567(
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 WDI_ControlBlockType* pWDICtx,
13569 WDI_EventInfoType* pEventData
13570)
13571{
13572 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13573 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 wpt_uint16 usDataOffset = 0;
13576 wpt_uint16 usSendSize = 0;
13577 tHalHostOffloadReq hostOffloadParams;
13578 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013579 wpt_uint8 ucCurrentBSSSesIdx = 0;
13580 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013581
13582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13583
13584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 -------------------------------------------------------------------------*/
13587 if (( NULL == pEventData ) ||
13588 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13589 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13590 {
13591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013594 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 }
13596
13597 /*-----------------------------------------------------------------------
13598 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13603 &pSendBuffer, &usDataOffset, &usSendSize))||
13604 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13605 {
13606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13607 "Unable to get send buffer in host offload req %x %x %x",
13608 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13609 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013610 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 }
13612
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013613 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13614 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13615 &pBSSSes);
13616 if ( NULL == pBSSSes )
13617 {
13618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013619 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13620 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013621 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013622 }
13623
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13625 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013626
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13628 {
13629 // ARP Offload
13630 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13631 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13632 4);
13633 }
13634 else
13635 {
13636 // NS Offload
13637 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13638 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13639 16);
13640
13641#ifdef WLAN_NS_OFFLOAD
13642 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13643 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13644 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13645 16);
13646 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13647 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13648 16);
13649 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13650 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13651 16);
13652 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13653 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13654 16);
13655 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13656 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13657 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013658 nsOffloadParams.srcIPv6AddrValid =
13659 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13660
13661 nsOffloadParams.targetIPv6Addr1Valid =
13662 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13663
13664 nsOffloadParams.targetIPv6Addr2Valid =
13665 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13666
13667 nsOffloadParams.slotIndex =
13668 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013669
Jeff Johnson295189b2012-06-20 16:38:30 -070013670#endif // WLAN_NS_OFFLOAD
13671 }
13672
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013673 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13674
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 // copy hostOffloadParams into pSendBuffer
13676 wpalMemoryCopy( pSendBuffer+usDataOffset,
13677 &hostOffloadParams,
13678 sizeof(hostOffloadParams));
13679
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013680 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013682 // copy nsOffloadParams into pSendBuffer
13683 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 &nsOffloadParams,
13685 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013686 }
13687 else
13688 {
13689#ifdef WLAN_NS_OFFLOAD
13690 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13691 {
13692 // copy nsOffloadParams into pSendBuffer
13693 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13694 &nsOffloadParams,
13695 sizeof(nsOffloadParams));
13696 }
13697#endif
13698 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013699
13700 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013702
13703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13707 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013708
13709fail:
13710 // Release the message buffer so we don't leak
13711 wpalMemoryFree(pSendBuffer);
13712
13713failRequest:
13714 //WDA should have failure check to avoid the memory leak
13715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013716}/*WDI_ProcessHostOffloadReq*/
13717
13718/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013721
13722 @param pWDICtx: pointer to the WLAN DAL context
13723 pEventData: pointer to the event information structure
13724
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 @see
13726 @return Result of the function call
13727*/
13728WDI_Status
13729WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013730(
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 WDI_ControlBlockType* pWDICtx,
13732 WDI_EventInfoType* pEventData
13733)
13734{
13735 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13736 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 wpt_uint16 usDataOffset = 0;
13739 wpt_uint16 usSendSize = 0;
13740 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013741 wpt_uint8 ucCurrentBSSSesIdx = 0;
13742 WDI_BSSSessionType* pBSSSes = NULL;
13743
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13745
13746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 -------------------------------------------------------------------------*/
13749 if (( NULL == pEventData ) ||
13750 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13751 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13752 {
13753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13754 "Invalid parameters in Keep Alive req");
13755 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013756 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013757 }
13758
13759 /*-----------------------------------------------------------------------
13760 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 sizeof(keepAliveReq),
13765 &pSendBuffer, &usDataOffset, &usSendSize))||
13766 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13767 {
13768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13769 "Unable to get send buffer in keep alive req %x %x %x",
13770 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13771 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013772 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 }
13774
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013775 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13776 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13777 &pBSSSes);
13778 if ( NULL == pBSSSes )
13779 {
13780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013781 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013782 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013783 }
13784
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13786 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013788 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013789
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13791 {
13792 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13793 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13794 HAL_IPV4_ADDR_LEN);
13795 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13796 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 wpalMemoryCopy(keepAliveReq.destMacAddr,
13799 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13800 HAL_MAC_ADDR_LEN);
13801 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013802
13803 wpalMemoryCopy( pSendBuffer+usDataOffset,
13804 &keepAliveReq,
13805 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013806
13807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13808 "Process keep alive req %d",sizeof(keepAliveReq));
13809
13810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13811 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13812
13813 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013814 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013815
13816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13817 "Sending keep alive req to HAL");
13818
13819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13823 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013824
13825fail:
13826 // Release the message buffer so we don't leak
13827 wpalMemoryFree(pSendBuffer);
13828
13829failRequest:
13830 //WDA should have failure check to avoid the memory leak
13831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013832}/*WDI_ProcessKeepAliveReq*/
13833
13834
13835/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013838
13839 @param pWDICtx: pointer to the WLAN DAL context
13840 pEventData: pointer to the event information structure
13841
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 @see
13843 @return Result of the function call
13844*/
13845WDI_Status
13846WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013847(
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 WDI_ControlBlockType* pWDICtx,
13849 WDI_EventInfoType* pEventData
13850)
13851{
13852 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13853 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 wpt_uint16 usDataOffset = 0;
13856 wpt_uint16 usSendSize = 0;
13857 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013858 wpt_uint8 ucCurrentBSSSesIdx = 0;
13859 WDI_BSSSessionType* pBSSSes = NULL;
13860
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13862
13863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 -------------------------------------------------------------------------*/
13866 if (( NULL == pEventData ) ||
13867 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13868 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13869 {
13870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013873 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 }
13875
13876 /*-----------------------------------------------------------------------
13877 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 sizeof(wowlAddBcPtrnReq),
13882 &pSendBuffer, &usDataOffset, &usSendSize))||
13883 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13884 {
13885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13886 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13887 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13888 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013889 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013892 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13893 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13894 &pBSSSes);
13895 if ( NULL == pBSSSes )
13896 {
13897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013898 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013899 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013900 }
13901
Jeff Johnsone7245742012-09-05 17:12:55 -070013902 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13910
13911 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13912 {
13913 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13914 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13915 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13916 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13917 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13918 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13919 }
13920 else
13921 {
13922 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13923 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13924 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13925 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13926 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13927 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13928
13929 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13930 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13931 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13932 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13933 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13934 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13935 }
13936
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013937 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13938
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 wpalMemoryCopy( pSendBuffer+usDataOffset,
13940 &wowlAddBcPtrnReq,
13941 sizeof(wowlAddBcPtrnReq));
13942
13943 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945
13946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13950 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013951fail:
13952 // Release the message buffer so we don't leak
13953 wpalMemoryFree(pSendBuffer);
13954
13955failRequest:
13956 //WDA should have failure check to avoid the memory leak
13957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013958}/*WDI_ProcessWowlAddBcPtrnReq*/
13959
13960/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013963
13964 @param pWDICtx: pointer to the WLAN DAL context
13965 pEventData: pointer to the event information structure
13966
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 @see
13968 @return Result of the function call
13969*/
13970WDI_Status
13971WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013972(
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 WDI_ControlBlockType* pWDICtx,
13974 WDI_EventInfoType* pEventData
13975)
13976{
13977 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13978 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 wpt_uint16 usDataOffset = 0;
13981 wpt_uint16 usSendSize = 0;
13982 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013983 wpt_uint8 ucCurrentBSSSesIdx = 0;
13984 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13986
13987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 -------------------------------------------------------------------------*/
13990 if (( NULL == pEventData ) ||
13991 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13992 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13993 {
13994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013997 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 }
13999
14000 /*-----------------------------------------------------------------------
14001 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014002 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 sizeof(wowlDelBcPtrnReq),
14006 &pSendBuffer, &usDataOffset, &usSendSize))||
14007 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14008 {
14009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14010 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14011 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14012 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014013 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 }
14015
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014016 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14017 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14018 &pBSSSes);
14019 if ( NULL == pBSSSes )
14020 {
14021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014022 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014023 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014024 }
14025
Jeff Johnsone7245742012-09-05 17:12:55 -070014026 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014028
14029 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14030
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 wpalMemoryCopy( pSendBuffer+usDataOffset,
14032 &wowlDelBcPtrnReq,
14033 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014034
14035 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014037
14038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14042 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014043
14044fail:
14045 // Release the message buffer so we don't leak
14046 wpalMemoryFree(pSendBuffer);
14047
14048failRequest:
14049 //WDA should have failure check to avoid the memory leak
14050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014051}/*WDI_ProcessWowlDelBcPtrnReq*/
14052
14053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014056
14057 @param pWDICtx: pointer to the WLAN DAL context
14058 pEventData: pointer to the event information structure
14059
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 @see
14061 @return Result of the function call
14062*/
14063WDI_Status
14064WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014065(
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 WDI_ControlBlockType* pWDICtx,
14067 WDI_EventInfoType* pEventData
14068)
14069{
14070 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14071 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 wpt_uint16 usDataOffset = 0;
14074 wpt_uint16 usSendSize = 0;
14075 tHalWowlEnterParams wowlEnterReq;
14076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14077
14078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 -------------------------------------------------------------------------*/
14081 if (( NULL == pEventData ) ||
14082 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14083 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14084 {
14085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 }
14090
14091 /*-----------------------------------------------------------------------
14092 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014093 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 sizeof(wowlEnterReq),
14097 &pSendBuffer, &usDataOffset, &usSendSize))||
14098 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14099 {
14100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14101 "Unable to get send buffer in Wowl enter req %x %x %x",
14102 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 }
14106
Kumar Anand21a26022013-07-22 14:35:34 -070014107 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14108
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14125
14126#ifdef WLAN_WAKEUP_EVENTS
14127 wowlEnterReq.ucWoWEAPIDRequestEnable =
14128 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14129
14130 wowlEnterReq.ucWoWEAPOL4WayEnable =
14131 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14132
14133 wowlEnterReq.ucWowNetScanOffloadMatch =
14134 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14135
14136 wowlEnterReq.ucWowGTKRekeyError =
14137 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14138
14139 wowlEnterReq.ucWoWBSSConnLoss =
14140 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14141#endif // WLAN_WAKEUP_EVENTS
14142
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014143 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14144
Jeff Johnson295189b2012-06-20 16:38:30 -070014145 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14146 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14147 sizeof(tSirMacAddr));
14148
Jeff Johnsone7245742012-09-05 17:12:55 -070014149 wpalMemoryCopy( pSendBuffer+usDataOffset,
14150 &wowlEnterReq,
14151 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014152
14153 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014155
14156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14160 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014161}/*WDI_ProcessWowlEnterReq*/
14162
14163/**
14164 @brief Process Wowl exit Request function (called when Main FSM
14165 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014166
14167 @param pWDICtx: pointer to the WLAN DAL context
14168 pEventData: pointer to the event information structure
14169
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 @see
14171 @return Result of the function call
14172*/
14173WDI_Status
14174WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014175(
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 WDI_ControlBlockType* pWDICtx,
14177 WDI_EventInfoType* pEventData
14178)
14179{
14180 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014181 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 wpt_uint16 usDataOffset = 0;
14184 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014185 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14187
14188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 -------------------------------------------------------------------------*/
14191 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014192 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14194 {
14195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 }
14200
14201 /*-----------------------------------------------------------------------
14202 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014206 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014207 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014208 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 {
14210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14211 "Unable to get send buffer in Wowl Exit req %x %x",
14212 pEventData, wdiWowlExitCb);
14213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 }
14216
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014217 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14218
14219 wpalMemoryCopy( pSendBuffer+usDataOffset,
14220 &wowlExitparams,
14221 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014223 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14226 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014227}/*WDI_ProcessWowlExitReq*/
14228
14229/**
14230 @brief Process Configure Apps Cpu Wakeup State Request function
14231 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014232
14233 @param pWDICtx: pointer to the WLAN DAL context
14234 pEventData: pointer to the event information structure
14235
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 @see
14237 @return Result of the function call
14238*/
14239WDI_Status
14240WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014241(
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 WDI_ControlBlockType* pWDICtx,
14243 WDI_EventInfoType* pEventData
14244)
14245{
14246 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14247 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014248 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 wpt_uint16 usDataOffset = 0;
14250 wpt_uint16 usSendSize = 0;
14251 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14253
14254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -------------------------------------------------------------------------*/
14257 if (( NULL == pEventData ) ||
14258 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14259 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14260 {
14261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 }
14266
14267 /*-----------------------------------------------------------------------
14268 Get message buffer
14269 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014271 sizeof(halCfgAppsCpuWakeupStateReqParams),
14272 &pSendBuffer, &usDataOffset, &usSendSize))||
14273 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14274 {
14275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14276 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14277 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 }
14281
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14284
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 wpalMemoryCopy( pSendBuffer+usDataOffset,
14286 &halCfgAppsCpuWakeupStateReqParams,
14287 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014288
14289 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014291
14292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14296 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14297 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014298}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14299
14300#ifdef WLAN_FEATURE_VOWIFI_11R
14301/**
14302 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14303 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014304
14305 @param pWDICtx: pointer to the WLAN DAL context
14306 pEventData: pointer to the event information structure
14307
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 @see
14309 @return Result of the function call
14310*/
14311WDI_Status
14312WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014313(
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 WDI_ControlBlockType* pWDICtx,
14315 WDI_EventInfoType* pEventData
14316)
14317{
14318 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14319 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 wpt_uint16 usDataOffset = 0;
14324 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 wpt_macAddr macBSSID;
14327 tAggrAddTsReq halAggrAddTsReq;
14328 int i;
14329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14330
14331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 -------------------------------------------------------------------------*/
14334 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14335 ( NULL == pEventData->pCBfnc ))
14336 {
14337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014338 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 }
14342 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14343 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14344 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14345 /*-------------------------------------------------------------------------
14346 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 -------------------------------------------------------------------------*/
14349 wpalMutexAcquire(&pWDICtx->wptMutex);
14350
14351 /*------------------------------------------------------------------------
14352 Find the BSS for which the request is made and identify WDI session
14353 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014354 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14355 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 &macBSSID))
14357 {
14358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14359 "This station does not exist in the WDI Station Table %d");
14360 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 }
14363
Jeff Johnsone7245742012-09-05 17:12:55 -070014364 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14365 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14368 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14369 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014370
14371 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014374
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 /*------------------------------------------------------------------------
14376 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 ------------------------------------------------------------------------*/
14379 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14380 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14382 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14383 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014384
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 }
14389
14390 wpalMutexRelease(&pWDICtx->wptMutex);
14391 /*-----------------------------------------------------------------------
14392 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 sizeof(tAggrAddTsParams),
14397 &pSendBuffer, &usDataOffset, &usSendSize))||
14398 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14399 {
14400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14401 "Unable to get send buffer in set bss key req %x %x %x",
14402 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 }
14406
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14411
14412 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14420 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14423 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14426 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14429 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14432 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14435 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14438 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14441 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014446
14447
14448 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14478 }
14479
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 wpalMemoryCopy( pSendBuffer+usDataOffset,
14481 &halAggrAddTsReq,
14482 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014483
14484 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014486
14487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014493}/*WDI_ProcessAggrAddTSpecReq*/
14494#endif /* WLAN_FEATURE_VOWIFI_11R */
14495
14496/**
14497 @brief Process Shutdown Request function (called when Main FSM
14498 allows it)
14499
14500 @param pWDICtx: pointer to the WLAN DAL context
14501 pEventData: pointer to the event information structure
14502
14503 @see
14504 @return Result of the function call
14505*/
14506WDI_Status
14507WDI_ProcessShutdownReq
14508(
14509 WDI_ControlBlockType* pWDICtx,
14510 WDI_EventInfoType* pEventData
14511 )
14512{
14513 wpt_status wptStatus;
14514
14515
14516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14517
14518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 -------------------------------------------------------------------------*/
14521 if ( NULL == pEventData )
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);
14526 return WDI_STATUS_E_FAILURE;
14527 }
14528
14529 wpalMutexAcquire(&pWDICtx->wptMutex);
14530
14531
14532 gWDIInitialized = eWLAN_PAL_FALSE;
14533 /*! TO DO: stop the data services */
14534 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14535 {
14536 /*Stop the STA Table !UT- check this logic again
14537 It is safer to do it here than on the response - because a stop is imminent*/
14538 WDI_STATableStop(pWDICtx);
14539
14540 /* Stop Transport Driver, DXE */
14541 WDTS_Stop(pWDICtx);
14542 }
14543
14544 /*Clear all pending request*/
14545 WDI_ClearPendingRequests(pWDICtx);
14546 /* Close Data transport*/
14547 /* FTM mode does not open Data Path */
14548 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14549 {
14550 WDTS_Close(pWDICtx);
14551 }
14552 /*Close the STA Table !UT- check this logic again*/
14553 WDI_STATableClose(pWDICtx);
14554 /*close the PAL */
14555 wptStatus = wpalClose(pWDICtx->pPALContext);
14556 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14557 {
14558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14559 "Failed to wpal Close %d", wptStatus);
14560 WDI_ASSERT(0);
14561 }
14562
14563 /*Transition back to init state*/
14564 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14565
14566 wpalMutexRelease(&pWDICtx->wptMutex);
14567
14568 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014569 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014570
14571
Jeff Johnsone7245742012-09-05 17:12:55 -070014572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014573}/*WDI_ProcessShutdownReq*/
14574
14575/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014577========================================================================*/
14578
14579/**
14580 @brief Process Start Response function (called when a response
14581 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014582
14583 @param pWDICtx: pointer to the WLAN DAL context
14584 pEventData: pointer to the event information structure
14585
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 @see
14587 @return Result of the function call
14588*/
14589WDI_Status
14590WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014591(
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 WDI_ControlBlockType* pWDICtx,
14593 WDI_EventInfoType* pEventData
14594)
14595{
14596 WDI_StartRspParamsType wdiRspParams;
14597 WDI_StartRspCb wdiStartRspCb = NULL;
14598
14599 tHalMacStartRspParams* startRspParams;
14600
14601#ifndef HAL_SELF_STA_PER_BSS
14602 WDI_AddStaParams wdiAddSTAParam = {0};
14603#endif
14604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14605
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 -------------------------------------------------------------------------*/
14610 if (( NULL == pEventData ) ||
14611 ( NULL == pEventData->pEventData) ||
14612 ( NULL == wdiStartRspCb ))
14613 {
14614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 }
14619
14620 /*-------------------------------------------------------------------------
14621 Extract response and send it to UMAC
14622 -------------------------------------------------------------------------*/
14623 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14624 {
14625 // not enough data was received
14626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14627 "Invalid response length in Start Resp Expect %x Rcvd %x",
14628 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 }
14632
14633 /*-------------------------------------------------------------------------
14634 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 -------------------------------------------------------------------------*/
14637 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14638
14639 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14640 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14641 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14642 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14643 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14644 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14645 wdiRspParams.wlanReportedVersion.major =
14646 startRspParams->wcnssWlanVersion.major;
14647 wdiRspParams.wlanReportedVersion.minor =
14648 startRspParams->wcnssWlanVersion.minor;
14649 wdiRspParams.wlanReportedVersion.version =
14650 startRspParams->wcnssWlanVersion.version;
14651 wdiRspParams.wlanReportedVersion.revision =
14652 startRspParams->wcnssWlanVersion.revision;
14653 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14654 startRspParams->wcnssCrmVersionString,
14655 sizeof(wdiRspParams.wcnssSoftwareVersion));
14656 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14657 startRspParams->wcnssWlanVersionString,
14658 sizeof(wdiRspParams.wcnssHardwareVersion));
14659 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14660
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014661 /*Save the HAL Version*/
14662 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14663
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 wpalMutexAcquire(&pWDICtx->wptMutex);
14665 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14666 {
14667 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14668
14669 /*Cache the start response for further use*/
14670 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 sizeof(pWDICtx->wdiCachedStartRspParams));
14673
14674 }
14675 else
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14678 "Failed to start device with status %s(%d)",
14679 WDI_getHALStatusMsgString(startRspParams->status),
14680 startRspParams->status);
14681
14682 /*Set the expected state transition to stopped - because the start has
14683 failed*/
14684 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14685
14686 wpalMutexRelease(&pWDICtx->wptMutex);
14687
14688 /*Notify UMAC*/
14689 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014690
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14692
14693 /*Although the response is an error - it was processed by our function
14694 so as far as the caller is concerned this is a succesful reponse processing*/
14695 return WDI_STATUS_SUCCESS;
14696 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014697
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 wpalMutexRelease(&pWDICtx->wptMutex);
14699
14700 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14701 {
14702 /* FTM mode does not need to execute below */
14703 /* Notify UMAC */
14704 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14705 return WDI_STATUS_SUCCESS;
14706 }
14707
14708 /* START the Data transport */
14709 WDTS_startTransport(pWDICtx);
14710
14711 /*Start the STA Table !- check this logic again*/
14712 WDI_STATableStart(pWDICtx);
14713
14714#ifndef HAL_SELF_STA_PER_BSS
14715 /* Store the Self STA Index */
14716 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14717
14718 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14719 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14720 WDI_MAC_ADDR_LEN);
14721
14722 /* At this point add the self-STA */
14723
14724 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14725 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14726 /*! TO DO: wdiAddSTAParam.dpuSig */
14727 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14728 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14729 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14730
14731 //all DPU indices are the same for self STA
14732 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14733 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014734 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14736 WDI_MAC_ADDR_LEN);
14737 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14738 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14739
14740 /* Note: Since we don't get an explicit config STA request for self STA, we
14741 add the self STA upon receiving the Start response message. But the
14742 self STA entry in the table is deleted when WDI gets an explicit delete STA
14743 request */
14744 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14745#endif
14746
14747 /*Notify UMAC*/
14748 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14749
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751}/*WDI_ProcessStartRsp*/
14752
14753
14754/**
14755 @brief Process Stop Response function (called when a response
14756 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014757
14758 @param pWDICtx: pointer to the WLAN DAL context
14759 pEventData: pointer to the event information structure
14760
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 @see
14762 @return Result of the function call
14763*/
14764WDI_Status
14765WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014766(
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 WDI_ControlBlockType* pWDICtx,
14768 WDI_EventInfoType* pEventData
14769)
14770{
14771 WDI_Status wdiStatus;
14772 WDI_StopRspCb wdiStopRspCb = NULL;
14773
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14776
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 -------------------------------------------------------------------------*/
14781 if (( NULL == pEventData ) ||
14782 ( NULL == pEventData->pEventData) ||
14783 ( NULL == wdiStopRspCb ))
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);
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 }
14790
14791 /*-------------------------------------------------------------------------
14792 Extract response and send it to UMAC
14793 -------------------------------------------------------------------------*/
14794 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14795 {
14796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14797 "Invalid response length in Stop Resp %x %x",
14798 pEventData->uEventDataSize);
14799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 }
14802
14803 /*-------------------------------------------------------------------------
14804 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014805 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014807 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14808 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 sizeof(halMacStopRspMsg.stopRspParams));
14810
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014812
14813 wpalMutexAcquire(&pWDICtx->wptMutex);
14814
14815 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 --------------------------------------------------------------------------*/
14818 if ( WDI_STATUS_SUCCESS != wdiStatus )
14819 {
14820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14821 "Failed to stop the device with status %s (%d)",
14822 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14823 halMacStopRspMsg.stopRspParams.status);
14824
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14826
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014830
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14832
14833 /*Transition now as WDI may get preempted imediately after it sends
14834 up the Stop Response and it will not get to process the state transition
14835 from Main Rsp function*/
14836 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14837 wpalMutexRelease(&pWDICtx->wptMutex);
14838
14839 /*! TO DO: - STOP the Data transport */
14840
14841 /*Notify UMAC*/
14842 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14843
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014845}/*WDI_ProcessStopRsp*/
14846
14847/**
14848 @brief Process Close Rsp function (called when a response
14849 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014850
14851 @param pWDICtx: pointer to the WLAN DAL context
14852 pEventData: pointer to the event information structure
14853
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 @see
14855 @return Result of the function call
14856*/
14857WDI_Status
14858WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014859(
Jeff Johnson295189b2012-06-20 16:38:30 -070014860 WDI_ControlBlockType* pWDICtx,
14861 WDI_EventInfoType* pEventData
14862)
14863{
14864 /*There is no close response comming from HAL - function just kept for
14865 simmetry */
14866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014868}/*WDI_ProcessCloseRsp*/
14869
14870
14871/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014873============================================================================*/
14874
14875/**
14876 @brief Process Init Scan Rsp function (called when a response
14877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014878
14879 @param pWDICtx: pointer to the WLAN DAL context
14880 pEventData: pointer to the event information structure
14881
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 @see
14883 @return Result of the function call
14884*/
14885WDI_Status
14886WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014887(
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 WDI_ControlBlockType* pWDICtx,
14889 WDI_EventInfoType* pEventData
14890)
14891{
14892 WDI_Status wdiStatus;
14893 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014895 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14897
14898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 -------------------------------------------------------------------------*/
14901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14902 ( NULL == pEventData->pEventData))
14903 {
14904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 }
14909
14910 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14911 if( NULL == wdiInitScanRspCb)
14912 {
14913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014914 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 }
14918
14919 /*-------------------------------------------------------------------------
14920 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14924 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 sizeof(halInitScanRspMsg.initScanRspParams));
14926
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014928
14929 if ( pWDICtx->bInBmps )
14930 {
14931 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014932 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14933 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14935 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14936 WDI_ASSERT(0);
14937 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 }
14939
14940 /*Notify UMAC*/
14941 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14942
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014944}/*WDI_ProcessInitScanRsp*/
14945
14946
14947/**
14948 @brief Process Start Scan Rsp function (called when a response
14949 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014950
14951 @param pWDICtx: pointer to the WLAN DAL context
14952 pEventData: pointer to the event information structure
14953
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 @see
14955 @return Result of the function call
14956*/
14957WDI_Status
14958WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014959(
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 WDI_ControlBlockType* pWDICtx,
14961 WDI_EventInfoType* pEventData
14962)
14963{
14964 WDI_StartScanRspParamsType wdiStartScanParams;
14965 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014966
14967 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14969
14970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 -------------------------------------------------------------------------*/
14973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14974 ( NULL == pEventData->pEventData))
14975 {
14976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 }
14981
14982 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14983 if( NULL == wdiStartScanRspCb)
14984 {
14985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014986 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 }
14990
14991 /*-------------------------------------------------------------------------
14992 Extract response and send it to UMAC
14993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14995 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 sizeof(halStartScanRspMsg.startScanRspParams));
14997
14998 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14999 halStartScanRspMsg.startScanRspParams.status);
15000#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 halStartScanRspMsg.startScanRspParams.startTSF,
15005 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015006#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015007
15008 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15009 {
15010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15011 "Start scan failed with status %s (%d)",
15012 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15013 halStartScanRspMsg.startScanRspParams.status);
15014 /* send the status to UMAC, don't return from here*/
15015 }
15016
15017 /*Notify UMAC*/
15018 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15019
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015021
15022}/*WDI_ProcessStartScanRsp*/
15023
15024
15025/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015028
15029 @param pWDICtx: pointer to the WLAN DAL context
15030 pEventData: pointer to the event information structure
15031
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 @see
15033 @return Result of the function call
15034*/
15035WDI_Status
15036WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015037(
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 WDI_ControlBlockType* pWDICtx,
15039 WDI_EventInfoType* pEventData
15040)
15041{
15042 WDI_Status wdiStatus;
15043 tHalEndScanRspMsg halEndScanRspMsg;
15044 WDI_EndScanRspCb wdiEndScanRspCb;
15045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15046
15047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 -------------------------------------------------------------------------*/
15050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15051 ( NULL == pEventData->pEventData))
15052 {
15053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 }
15058
15059 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15060
15061 /*-------------------------------------------------------------------------
15062 Extract response and send it to UMAC
15063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15065 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 sizeof(halEndScanRspMsg.endScanRspParams));
15067
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015069
15070 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15071 {
15072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15073 "End Scan failed with status %s (%d )",
15074 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15075 halEndScanRspMsg.endScanRspParams.status);
15076 /* send the status to UMAC, don't return from here*/
15077 }
15078
15079 /*Notify UMAC*/
15080 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15081
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015083}/*WDI_ProcessEndScanRsp*/
15084
15085
15086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015089
15090 @param pWDICtx: pointer to the WLAN DAL context
15091 pEventData: pointer to the event information structure
15092
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 @see
15094 @return Result of the function call
15095*/
15096WDI_Status
15097WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015098(
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 WDI_ControlBlockType* pWDICtx,
15100 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015101)
Jeff Johnson295189b2012-06-20 16:38:30 -070015102{
15103 WDI_Status wdiStatus;
15104 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015105
15106 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15108
15109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 -------------------------------------------------------------------------*/
15112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15113 ( NULL == pEventData->pEventData))
15114 {
15115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 }
15120
15121 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15122
15123 /*-------------------------------------------------------------------------
15124 Extract response and send it to UMAC
15125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015126 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15127 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15129
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015131
15132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 halFinishScanRspMsg.finishScanRspParams.status);
15135
15136 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15137 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15138 {
15139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15140 "Finish Scan failed with status %s (%d)",
15141 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15142 halFinishScanRspMsg.finishScanRspParams.status);
15143 /* send the status to UMAC, don't return from here*/
15144 }
15145
15146 /*Notify UMAC*/
15147 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15148
Jeff Johnsone7245742012-09-05 17:12:55 -070015149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015150}/*WDI_ProcessFinishScanRsp*/
15151
15152/**
15153 @brief Process Join Response function (called when a response
15154 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015155
15156 @param pWDICtx: pointer to the WLAN DAL context
15157 pEventData: pointer to the event information structure
15158
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 @see
15160 @return Result of the function call
15161*/
15162WDI_Status
15163WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015164(
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 WDI_ControlBlockType* pWDICtx,
15166 WDI_EventInfoType* pEventData
15167)
15168{
15169 WDI_Status wdiStatus;
15170 WDI_JoinRspCb wdiJoinRspCb;
15171 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015172
15173 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15175
15176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 -------------------------------------------------------------------------*/
15179 if (( NULL == pWDICtx ) ||
15180 ( NULL == pWDICtx->pfncRspCB ) ||
15181 ( NULL == pEventData ) ||
15182 ( NULL == pEventData->pEventData))
15183 {
15184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 }
15189
15190 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15191
15192 /*-------------------------------------------------------------------------
15193 Extract response and send it to UMAC
15194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15196 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 sizeof(halJoinRspMsg.joinRspParams));
15198
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015200
15201 wpalMutexAcquire(&pWDICtx->wptMutex);
15202
15203 /*-----------------------------------------------------------------------
15204 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15209 {
15210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15212 "association no longer in progress %d - mysterious HAL response",
15213 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015214
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 }
15219
15220 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15221
15222 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 -----------------------------------------------------------------------*/
15225 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15226 {
15227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15228 "Join only allowed in Joining state - failure state is %d "
15229 "strange HAL response", pBSSSes->wdiAssocState);
15230
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 }
15236
15237
15238 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015239 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 -----------------------------------------------------------------------*/
15241 if ( WDI_STATUS_SUCCESS != wdiStatus )
15242 {
15243 /*Association was failed by HAL - remove session*/
15244 WDI_DeleteSession(pWDICtx, pBSSSes);
15245
15246 /*Association no longer in progress */
15247 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15248
15249 /*Association no longer in progress - prepare pending assoc for processing*/
15250 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015251
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 }
15253 else
15254 {
15255 /*Transition to state Joining - this may be redundant as we are supposed
15256 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 }
15259
15260 wpalMutexRelease(&pWDICtx->wptMutex);
15261
15262 /*Notify UMAC*/
15263 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15264
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015266}/*WDI_ProcessJoinRsp*/
15267
15268
15269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015272
15273 @param pWDICtx: pointer to the WLAN DAL context
15274 pEventData: pointer to the event information structure
15275
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 @see
15277 @return Result of the function call
15278*/
15279WDI_Status
15280WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015281(
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 WDI_ControlBlockType* pWDICtx,
15283 WDI_EventInfoType* pEventData
15284)
15285{
15286 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15287 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 WDI_BSSSessionType* pBSSSes = NULL;
15290
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15293 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015294
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15296
15297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 -------------------------------------------------------------------------*/
15300 if (( NULL == pEventData ) ||
15301 ( NULL == pEventData->pEventData))
15302 {
15303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 }
15308
15309 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15310
15311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015312 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15315 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015316 sizeof(halConfigBssRspMsg.configBssRspParams));
15317
15318 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15319 halConfigBssRspMsg.configBssRspParams.status);
15320 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15321 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15324 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015325
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015327
15328 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015330
15331 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015333
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015335
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15339 #endif
15340 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15341 halConfigBssRspMsg.configBssRspParams.staMac,
15342 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015343
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 wpalMutexAcquire(&pWDICtx->wptMutex);
15345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15349 wdiConfigBSSParams.macBSSID,
15350 &pBSSSes);
15351
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 /*-----------------------------------------------------------------------
15353 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 -----------------------------------------------------------------------*/
15356 if ( NULL == pBSSSes )
15357 {
15358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15359 "Association sequence for this BSS does not yet exist "
15360 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015361
15362 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15363
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015367
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 /*Save data for this BSS*/
15369 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15370 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15381 pBSSSes->bcastStaIdx =
15382 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015383
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015385
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 /*-------------------------------------------------------------------------
15387 Add Peer STA
15388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15391 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015392
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wdiAddSTAParam.ucHTCapable =
15397 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15398 wdiAddSTAParam.ucStaType =
15399 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15400
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15403 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015405
15406 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15407 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15408 WDI_MAC_ADDR_LEN);
15409
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015421 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015423
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15425 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015426
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15428 /*-------------------------------------------------------------------------
15429 Add Broadcast STA only in AP mode
15430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015432 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 {
15434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15435 "Add BCAST STA to table for index: %d",
15436 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015437
15438 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015440
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15442 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15443 }
15444 wpalMutexRelease(&pWDICtx->wptMutex);
15445 }
15446 else
15447 {
15448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15449 "Config BSS RSP failed with status : %s(%d)",
15450 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 halConfigBssRspMsg.configBssRspParams.status);
15453
Jeff Johnsone7245742012-09-05 17:12:55 -070015454
Jeff Johnson295189b2012-06-20 16:38:30 -070015455 /*Association was failed by HAL - remove session*/
15456 WDI_DeleteSession(pWDICtx, pBSSSes);
15457
15458 /*Association no longer in progress */
15459 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15460
15461 /*Association no longer in progress - prepare pending assoc for processing*/
15462 WDI_DequeueAssocRequest(pWDICtx);
15463
15464 }
15465
15466 /*Notify UMAC*/
15467 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15468
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015470}/*WDI_ProcessConfigBSSRsp*/
15471
15472
15473/**
15474 @brief Process Del BSS Response function (called when a response
15475 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015476
15477 @param pWDICtx: pointer to the WLAN DAL context
15478 pEventData: pointer to the event information structure
15479
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 @see
15481 @return Result of the function call
15482*/
15483WDI_Status
15484WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015485(
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 WDI_ControlBlockType* pWDICtx,
15487 WDI_EventInfoType* pEventData
15488)
15489{
15490 WDI_DelBSSRspParamsType wdiDelBSSParams;
15491 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015492 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 WDI_BSSSessionType* pBSSSes = NULL;
15494
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15497
15498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 -------------------------------------------------------------------------*/
15501 if (( NULL == pEventData ) ||
15502 ( NULL == pEventData->pEventData))
15503 {
15504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 }
15509
15510 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15511
15512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15516 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 sizeof(halDelBssRspMsg.deleteBssRspParams));
15518
15519
15520 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015521 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015522
15523 wpalMutexAcquire(&pWDICtx->wptMutex);
15524
15525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15529 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15530 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015531
15532 /*-----------------------------------------------------------------------
15533 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 -----------------------------------------------------------------------*/
15536 if ( NULL == pBSSSes )
15537 {
15538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15539 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015540 "association no longer in progress - mysterious HAL response");
15541
15542 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15543
15544 wpalMutexRelease(&pWDICtx->wptMutex);
15545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015547
15548 /*Extract BSSID for the response to UMAC*/
15549 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15550 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15551
15552 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15553
15554 /*-----------------------------------------------------------------------
15555 The current session will be deleted
15556 -----------------------------------------------------------------------*/
15557 WDI_DeleteSession(pWDICtx, pBSSSes);
15558
15559
15560 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15561 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015563 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015564 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015565
15566 /* Delete the STA's in this BSS */
15567 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15568
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 wpalMutexRelease(&pWDICtx->wptMutex);
15570
15571 /*Notify UMAC*/
15572 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15573
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015575}/*WDI_ProcessDelBSSRsp*/
15576
15577/**
15578 @brief Process Post Assoc Rsp function (called when a response
15579 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015580
15581 @param pWDICtx: pointer to the WLAN DAL context
15582 pEventData: pointer to the event information structure
15583
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 @see
15585 @return Result of the function call
15586*/
15587WDI_Status
15588WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015589(
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 WDI_ControlBlockType* pWDICtx,
15591 WDI_EventInfoType* pEventData
15592)
15593{
15594 WDI_PostAssocRspParamsType wdiPostAssocParams;
15595 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15600
15601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 -------------------------------------------------------------------------*/
15604 if (( NULL == pEventData ) ||
15605 ( NULL == pEventData->pEventData))
15606 {
15607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 }
15612
15613 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15614
15615 /*-------------------------------------------------------------------------
15616 Extract response and send it to UMAC
15617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15619 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 sizeof(halPostAssocRspMsg.postAssocRspParams));
15621
15622 /*Extract the Post Assoc STA Params */
15623
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15630
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 wdiPostAssocParams.wdiStatus =
15632 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015633
15634 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15635 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15637 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 WDI_MAC_ADDR_LEN);
15639
15640 /* Extract Post Assoc BSS Params */
15641
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15643 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15644 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015645
15646 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15647 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15650 .macSTA, WDI_MAC_ADDR_LEN);
15651
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15654
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15657
15658 wdiPostAssocParams.bssParams.ucBSSIdx =
15659 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15660
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15663
15664 wpalMutexAcquire(&pWDICtx->wptMutex);
15665
15666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015672
15673 /*-----------------------------------------------------------------------
15674 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 -----------------------------------------------------------------------*/
15677 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15680 {
15681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15682 "Association sequence for this BSS does not yet exist or "
15683 "association no longer in progress - mysterious HAL response");
15684
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15686
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 }
15690
15691 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015692 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015693 -----------------------------------------------------------------------*/
15694 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15695 {
15696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15697 "Post Assoc not allowed before JOIN - failing request "
15698 "strange HAL response");
15699
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15701
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 }
15705
15706 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 -----------------------------------------------------------------------*/
15709 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15710 {
15711 /*Association was failed by HAL - remove session*/
15712 WDI_DeleteSession(pWDICtx, pBSSSes);
15713 }
15714 else
15715 {
15716 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015718
15719 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015720 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15728
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15731 }
15732
15733 /*Association no longer in progress */
15734 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15735
15736 /*Association no longer in progress - prepare pending assoc for processing*/
15737 WDI_DequeueAssocRequest(pWDICtx);
15738
15739 wpalMutexRelease(&pWDICtx->wptMutex);
15740
15741 /*Notify UMAC*/
15742 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15743
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015745}/*WDI_ProcessPostAssocRsp*/
15746
15747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015750
15751 @param pWDICtx: pointer to the WLAN DAL context
15752 pEventData: pointer to the event information structure
15753
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 @see
15755 @return Result of the function call
15756*/
15757WDI_Status
15758WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015759(
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 WDI_ControlBlockType* pWDICtx,
15761 WDI_EventInfoType* pEventData
15762)
15763{
15764 WDI_DelSTARspParamsType wdiDelSTARsp;
15765 WDI_DelSTARspCb wdiDelSTARspCb;
15766 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15769
15770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 -------------------------------------------------------------------------*/
15773 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15774 ( NULL == pEventData->pEventData))
15775 {
15776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 }
15781
15782 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15783
15784 /*-------------------------------------------------------------------------
15785 Extract response and send it to UMAC
15786 -------------------------------------------------------------------------*/
15787 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 sizeof(halDelStaRspMsg.delStaRspParams));
15790
15791 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wdiDelSTARsp.wdiStatus =
15793 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015794
15795 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15796
15797 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15798 if(staType == WDI_STA_ENTRY_SELF)
15799 {
15800 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15801
15802 /* At this point add the self-STA */
15803
15804 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15805 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15806 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15807
15808#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15809#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15810
15811 //all DPU indices are the same for self STA
15812 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15813 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15814 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15815 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15816 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15817 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015818
15819 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 }
15821 else
15822 {
15823 //Delete the station in the table
15824 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15825 }
15826
15827 /*Notify UMAC*/
15828 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15829
Jeff Johnsone7245742012-09-05 17:12:55 -070015830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015831}/*WDI_ProcessDelSTARsp*/
15832
15833
15834/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015836==========================================================================*/
15837
15838/**
15839 @brief Process Set BSS Key Rsp function (called when a response
15840 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015841
15842 @param pWDICtx: pointer to the WLAN DAL context
15843 pEventData: pointer to the event information structure
15844
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 @see
15846 @return Result of the function call
15847*/
15848WDI_Status
15849WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015850(
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 WDI_ControlBlockType* pWDICtx,
15852 WDI_EventInfoType* pEventData
15853)
15854{
15855 WDI_Status wdiStatus;
15856 eHalStatus halStatus;
15857 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15859
15860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 -------------------------------------------------------------------------*/
15863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15864 ( NULL == pEventData->pEventData))
15865 {
15866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015870 }
15871
15872 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15873
15874 /*-------------------------------------------------------------------------
15875 Extract response and send it to UMAC
15876 -------------------------------------------------------------------------*/
15877 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015879
15880 if ( eHAL_STATUS_SUCCESS != halStatus )
15881 {
15882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15883 "Set BSS Key failed with status %s (%d)",
15884 WDI_getHALStatusMsgString(halStatus),
15885 halStatus);
15886 /* send the status to UMAC, don't return from here*/
15887 }
15888
15889 /*Notify UMAC*/
15890 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15891
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015893}/*WDI_ProcessSetBssKeyRsp*/
15894
15895/**
15896 @brief Process Remove BSS Key Rsp function (called when a response
15897 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015898
15899 @param pWDICtx: pointer to the WLAN DAL context
15900 pEventData: pointer to the event information structure
15901
Jeff Johnson295189b2012-06-20 16:38:30 -070015902 @see
15903 @return Result of the function call
15904*/
15905WDI_Status
15906WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015907(
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 WDI_ControlBlockType* pWDICtx,
15909 WDI_EventInfoType* pEventData
15910)
15911{
15912 WDI_Status wdiStatus;
15913 eHalStatus halStatus;
15914 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15916
15917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 -------------------------------------------------------------------------*/
15920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15921 ( NULL == pEventData->pEventData))
15922 {
15923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 }
15928
15929 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15930
15931 /*-------------------------------------------------------------------------
15932 Extract response and send it to UMAC
15933 -------------------------------------------------------------------------*/
15934 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015936
15937 if ( eHAL_STATUS_SUCCESS != halStatus )
15938 {
15939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15940 "Remove BSS Key failed with status %s (%d )",
15941 WDI_getHALStatusMsgString(halStatus),
15942 halStatus);
15943 /* send the status to UMAC, don't return from here*/
15944 }
15945
15946 /*Notify UMAC*/
15947 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15948
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015950}/*WDI_ProcessSetBssKeyRsp*/
15951
15952
15953/**
15954 @brief Process Set STA Key Rsp function (called when a response
15955 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015956
15957 @param pWDICtx: pointer to the WLAN DAL context
15958 pEventData: pointer to the event information structure
15959
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 @see
15961 @return Result of the function call
15962*/
15963WDI_Status
15964WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015965(
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 WDI_ControlBlockType* pWDICtx,
15967 WDI_EventInfoType* pEventData
15968)
15969{
15970 WDI_Status wdiStatus;
15971 eHalStatus halStatus;
15972 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15974
15975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 -------------------------------------------------------------------------*/
15978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15979 ( NULL == pEventData->pEventData))
15980 {
15981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 }
15986
15987 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15988
15989 /*-------------------------------------------------------------------------
15990 Extract response and send it to UMAC
15991 -------------------------------------------------------------------------*/
15992 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015993 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015994
15995 if ( eHAL_STATUS_SUCCESS != halStatus )
15996 {
15997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15998 "Set STA Key failed with status %s (%d)",
15999 WDI_getHALStatusMsgString(halStatus),
16000 halStatus);
16001 /* send the status to UMAC, don't return from here*/
16002 }
16003
16004 /*Notify UMAC*/
16005 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16006
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016008}/*WDI_ProcessSetSTAKeyRsp*/
16009
16010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016011 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016013
16014 @param pWDICtx: pointer to the WLAN DAL context
16015 pEventData: pointer to the event information structure
16016
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 @see
16018 @return Result of the function call
16019*/
16020WDI_Status
16021WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016022(
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 WDI_ControlBlockType* pWDICtx,
16024 WDI_EventInfoType* pEventData
16025)
16026{
16027 WDI_Status wdiStatus;
16028 eHalStatus halStatus;
16029 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16045
16046 /*-------------------------------------------------------------------------
16047 Extract response and send it to UMAC
16048 -------------------------------------------------------------------------*/
16049 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016051
16052 if ( eHAL_STATUS_SUCCESS != halStatus )
16053 {
16054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16055 "Remove STA Key failed with status %s (%d)",
16056 WDI_getHALStatusMsgString(halStatus),
16057 halStatus);
16058 /* send the status to UMAC, don't return from here*/
16059 }
16060
16061 /*Notify UMAC*/
16062 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16063
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016065}/*WDI_ProcessRemoveStaKeyRsp*/
16066
16067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016068 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016070
16071 @param pWDICtx: pointer to the WLAN DAL context
16072 pEventData: pointer to the event information structure
16073
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 @see
16075 @return Result of the function call
16076*/
16077WDI_Status
16078WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016079(
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 WDI_ControlBlockType* pWDICtx,
16081 WDI_EventInfoType* pEventData
16082)
16083{
16084 WDI_Status wdiStatus;
16085 eHalStatus halStatus;
16086 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16088
16089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 -------------------------------------------------------------------------*/
16092 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16093 ( NULL == pEventData->pEventData))
16094 {
16095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 }
16100
16101 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16102
16103 /*-------------------------------------------------------------------------
16104 Extract response and send it to UMAC
16105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 wpalMemoryCopy( &halStatus,
16107 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 sizeof(halStatus));
16109
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016111
16112 if ( eHAL_STATUS_SUCCESS != halStatus )
16113 {
16114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16115 "Set STA Key failed with status %s (%d)",
16116 WDI_getHALStatusMsgString(halStatus),
16117 halStatus);
16118 /* send the status to UMAC, don't return from here*/
16119 }
16120
16121 /*Notify UMAC*/
16122 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16123
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016125}/*WDI_ProcessSetSTABcastKeyRsp*/
16126
16127/**
16128 @brief Process Remove STA Bcast Key Rsp function (called when a
16129 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016130
16131 @param pWDICtx: pointer to the WLAN DAL context
16132 pEventData: pointer to the event information structure
16133
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 @see
16135 @return Result of the function call
16136*/
16137WDI_Status
16138WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016139(
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 WDI_ControlBlockType* pWDICtx,
16141 WDI_EventInfoType* pEventData
16142)
16143{
16144 WDI_Status wdiStatus;
16145 eHalStatus halStatus;
16146 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16148
16149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 -------------------------------------------------------------------------*/
16152 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16153 ( NULL == pEventData->pEventData))
16154 {
16155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 }
16160
16161 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16162
16163 /*-------------------------------------------------------------------------
16164 Extract response and send it to UMAC
16165 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016166 wpalMemoryCopy( &halStatus,
16167 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 sizeof(halStatus));
16169
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016171
16172 if ( eHAL_STATUS_SUCCESS != halStatus )
16173 {
16174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16175 "Remove STA Key failed with status %s (%d)",
16176 WDI_getHALStatusMsgString(halStatus),
16177 halStatus);
16178 /* send the status to UMAC, don't return from here*/
16179 }
16180
16181 /*Notify UMAC*/
16182 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16183
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016185}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16186
16187
16188/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016190==========================================================================*/
16191
16192/**
16193 @brief Process Add TSpec Rsp function (called when a response
16194 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016195
16196 @param pWDICtx: pointer to the WLAN DAL context
16197 pEventData: pointer to the event information structure
16198
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 @see
16200 @return Result of the function call
16201*/
16202WDI_Status
16203WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016204(
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 WDI_ControlBlockType* pWDICtx,
16206 WDI_EventInfoType* pEventData
16207)
16208{
16209 WDI_Status wdiStatus;
16210 eHalStatus halStatus;
16211 WDI_AddTsRspCb wdiAddTsRspCb;
16212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16213
16214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 -------------------------------------------------------------------------*/
16217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16218 ( NULL == pEventData->pEventData))
16219 {
16220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 }
16225
16226 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16227
16228 /*-------------------------------------------------------------------------
16229 Extract response and send it to UMAC
16230 -------------------------------------------------------------------------*/
16231 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016232 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016233
16234 /*Notify UMAC*/
16235 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16236
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016238}/*WDI_ProcessAddTSpecRsp*/
16239
16240
16241/**
16242 @brief Process Del TSpec Rsp function (called when a response
16243 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016244
16245 @param pWDICtx: pointer to the WLAN DAL context
16246 pEventData: pointer to the event information structure
16247
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 @see
16249 @return Result of the function call
16250*/
16251WDI_Status
16252WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016253(
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 WDI_ControlBlockType* pWDICtx,
16255 WDI_EventInfoType* pEventData
16256)
16257{
16258 WDI_Status wdiStatus;
16259 eHalStatus halStatus;
16260 WDI_DelTsRspCb wdiDelTsRspCb;
16261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16262
16263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 -------------------------------------------------------------------------*/
16266 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16267 ( NULL == pEventData->pEventData))
16268 {
16269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 }
16274
16275 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16276
16277 /*-------------------------------------------------------------------------
16278 Extract response and send it to UMAC
16279 -------------------------------------------------------------------------*/
16280 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016282
16283 /*Notify UMAC*/
16284 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16285
Jeff Johnsone7245742012-09-05 17:12:55 -070016286 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016287}/*WDI_ProcessDelTSpecRsp*/
16288
16289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016292
16293 @param pWDICtx: pointer to the WLAN DAL context
16294 pEventData: pointer to the event information structure
16295
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 @see
16297 @return Result of the function call
16298*/
16299WDI_Status
16300WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016301(
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 WDI_ControlBlockType* pWDICtx,
16303 WDI_EventInfoType* pEventData
16304)
16305{
16306 WDI_Status wdiStatus;
16307 eHalStatus halStatus;
16308 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16310
16311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 -------------------------------------------------------------------------*/
16314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16315 ( NULL == pEventData->pEventData))
16316 {
16317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 }
16322
16323 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16324
16325 /*-------------------------------------------------------------------------
16326 Extract response and send it to UMAC
16327 -------------------------------------------------------------------------*/
16328 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016329 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016330
16331 /*Notify UMAC*/
16332 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16333
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016335}/*WDI_ProcessUpdateEDCAParamsRsp*/
16336
16337
16338/**
16339 @brief Process Add BA Rsp function (called when a response
16340 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016341
16342 @param pWDICtx: pointer to the WLAN DAL context
16343 pEventData: pointer to the event information structure
16344
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 @see
16346 @return Result of the function call
16347*/
16348WDI_Status
16349WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016350(
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 WDI_ControlBlockType* pWDICtx,
16352 WDI_EventInfoType* pEventData
16353)
16354{
16355 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16356
16357 tAddBASessionRspParams halBASessionRsp;
16358 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16359
Jeff Johnsone7245742012-09-05 17:12:55 -070016360
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16362
16363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016365 -------------------------------------------------------------------------*/
16366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16367 ( NULL == pEventData->pEventData))
16368 {
16369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 }
16374
16375 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16376
16377 /*-------------------------------------------------------------------------
16378 Extract response and send it to UMAC
16379 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016380 wpalMemoryCopy( &halBASessionRsp,
16381 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 sizeof(halBASessionRsp));
16383
16384 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16385
Jeff Johnson43971f52012-07-17 12:26:56 -070016386 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016387 {
16388 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16389 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16390 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16391 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16392 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16393 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16394 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16395 }
16396
16397 /*Notify UMAC*/
16398 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16399
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016401}/*WDI_ProcessAddSessionBARsp*/
16402
16403
16404/**
16405 @brief Process Del BA Rsp function (called when a response
16406 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016407
16408 @param pWDICtx: pointer to the WLAN DAL context
16409 pEventData: pointer to the event information structure
16410
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 @see
16412 @return Result of the function call
16413*/
16414WDI_Status
16415WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016416(
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 WDI_ControlBlockType* pWDICtx,
16418 WDI_EventInfoType* pEventData
16419)
16420{
16421 WDI_Status wdiStatus;
16422 eHalStatus halStatus;
16423 WDI_DelBARspCb wdiDelBARspCb;
16424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16425
16426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 -------------------------------------------------------------------------*/
16429 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16430 ( NULL == pEventData->pEventData))
16431 {
16432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 }
16437
16438 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16439
16440 /*-------------------------------------------------------------------------
16441 Extract response and send it to UMAC
16442 -------------------------------------------------------------------------*/
16443 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016445
16446 if ( eHAL_STATUS_SUCCESS == halStatus )
16447 {
16448 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16449 }
16450
16451 /*Notify UMAC*/
16452 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16453
Jeff Johnsone7245742012-09-05 17:12:55 -070016454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016455}/*WDI_ProcessDelBARsp*/
16456
16457#ifdef FEATURE_WLAN_CCX
16458/**
16459 @brief Process TSM Stats Rsp function (called when a response
16460 is being received over the bus from HAL)
16461
16462 @param pWDICtx: pointer to the WLAN DAL context
16463 pEventData: pointer to the event information structure
16464
16465 @see
16466 @return Result of the function call
16467*/
16468WDI_Status
16469WDI_ProcessTsmStatsRsp
16470(
16471 WDI_ControlBlockType* pWDICtx,
16472 WDI_EventInfoType* pEventData
16473)
16474{
16475 WDI_TsmRspCb wdiTsmStatsRspCb;
16476 tTsmStatsRspMsg halTsmStatsRspMsg;
16477 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16479
16480 /*-------------------------------------------------------------------------
16481 Sanity check
16482 -------------------------------------------------------------------------*/
16483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16484 ( NULL == pEventData->pEventData))
16485 {
16486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 WDI_ASSERT(0);
16489 return WDI_STATUS_E_FAILURE;
16490 }
16491
16492 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16493
16494 /*-------------------------------------------------------------------------
16495 Unpack HAL Response Message - the header was already extracted by the
16496 main Response Handling procedure
16497 -------------------------------------------------------------------------*/
16498 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16499 pEventData->pEventData,
16500 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16501
16502 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16503 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16504 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16505 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16506 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16507 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16508 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16509 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16510 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16511 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16512 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16513 halTsmStatsRspMsg.tsmStatsRspParams.status);
16514
16515 /*Notify UMAC*/
16516 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16517
16518 return WDI_STATUS_SUCCESS;
16519}/*WDI_ProcessTsmStatsRsp*/
16520
16521#endif
16522
16523
16524
16525/**
16526 @brief Process Flush AC Rsp function (called when a response
16527 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016528
16529 @param pWDICtx: pointer to the WLAN DAL context
16530 pEventData: pointer to the event information structure
16531
Jeff Johnson295189b2012-06-20 16:38:30 -070016532 @see
16533 @return Result of the function call
16534*/
16535WDI_Status
16536WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016537(
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 WDI_ControlBlockType* pWDICtx,
16539 WDI_EventInfoType* pEventData
16540)
16541{
16542 WDI_Status wdiStatus;
16543 eHalStatus halStatus;
16544 WDI_FlushAcRspCb wdiFlushAcRspCb;
16545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16546
16547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 -------------------------------------------------------------------------*/
16550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16551 ( NULL == pEventData->pEventData))
16552 {
16553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 }
16558
16559 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16560
16561 /*-------------------------------------------------------------------------
16562 Extract response and send it to UMAC
16563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 wpalMemoryCopy( &halStatus,
16565 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 sizeof(halStatus));
16567
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016569
16570 /*Notify UMAC*/
16571 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16572
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016574}/*WDI_ProcessFlushAcRsp*/
16575
16576/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016579
16580 @param pWDICtx: pointer to the WLAN DAL context
16581 pEventData: pointer to the event information structure
16582
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 @see
16584 @return Result of the function call
16585*/
16586WDI_Status
16587WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016588(
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 WDI_ControlBlockType* pWDICtx,
16590 WDI_EventInfoType* pEventData
16591)
16592{
16593 WDI_Status wdiStatus;
16594 eHalStatus halStatus;
16595 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16597
16598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 -------------------------------------------------------------------------*/
16601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16602 ( NULL == pEventData->pEventData))
16603 {
16604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 }
16609
16610 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16611
16612 /*-------------------------------------------------------------------------
16613 Extract response and send it to UMAC
16614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016615 wpalMemoryCopy( &halStatus,
16616 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 sizeof(halStatus));
16618
Jeff Johnsone7245742012-09-05 17:12:55 -070016619 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016620
16621 /*Notify UMAC*/
16622 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16623
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016625}/*WDI_ProcessBtAmpEventRsp*/
16626
16627
16628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016631
16632 @param pWDICtx: pointer to the WLAN DAL context
16633 pEventData: pointer to the event information structure
16634
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 @see
16636 @return Result of the function call
16637*/
16638WDI_Status
16639WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016640(
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 WDI_ControlBlockType* pWDICtx,
16642 WDI_EventInfoType* pEventData
16643)
16644{
16645 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16646 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16647 tAddStaSelfRspMsg halAddStaSelfRsp;
16648 WDI_AddStaParams wdiAddSTAParam = {0};
16649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16650
16651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 -------------------------------------------------------------------------*/
16654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16655 ( NULL == pEventData->pEventData))
16656 {
16657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 }
16662
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16665
16666 /*-------------------------------------------------------------------------
16667 Extract response and send it to UMAC
16668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16670 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16672
16673
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 wdiAddSTASelfParams.wdiStatus =
16675 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016676
Jeff Johnsone7245742012-09-05 17:12:55 -070016677 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016678 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16683
16684 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16685 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16686 WDI_MAC_ADDR_LEN);
16687
16688
16689#ifdef HAL_SELF_STA_PER_BSS
16690
16691 /* At this point add the self-STA */
16692
16693 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16694 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16695 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16696
16697 //all DPU indices are the same for self STA
16698
16699 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16702 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16703 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16704 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16705 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16706
16707 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16708 WDI_MAC_ADDR_LEN);
16709
16710 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16711 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16712
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16715 {
16716 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16717 }
16718#endif
16719
16720 /*Notify UMAC*/
16721 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16722
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724}/*WDI_ProcessAddSTASelfRsp*/
16725
16726
16727
16728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016731
16732 @param pWDICtx: pointer to the WLAN DAL context
16733 pEventData: pointer to the event information structure
16734
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 @see
16736 @return Result of the function call
16737*/
16738WDI_Status
16739WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016740(
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 WDI_ControlBlockType* pWDICtx,
16742 WDI_EventInfoType* pEventData
16743)
16744{
16745 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16746 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16747 tDelStaSelfRspParams delStaSelfRspParams;
16748 wpt_uint8 ucStaIdx;
16749
16750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16751
16752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 -------------------------------------------------------------------------*/
16755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16756 ( NULL == pEventData->pEventData))
16757 {
16758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 }
16763
16764 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16765
16766 /*-------------------------------------------------------------------------
16767 Extract response and send it to UMAC
16768 -------------------------------------------------------------------------*/
16769
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 (wpt_uint8*)pEventData->pEventData,
16772 sizeof(tDelStaSelfRspParams));
16773
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 wdiDelStaSelfRspParams.wdiStatus =
16775 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016776
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16779 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16780 {
16781 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016782 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016783 delStaSelfRspParams.selfMacAddr,
16784 &ucStaIdx);
16785 if(WDI_STATUS_E_FAILURE == wdiStatus)
16786 {
16787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016788 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 }
16792 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16793 }
16794
16795 /*Notify UMAC*/
16796 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16797
16798 return WDI_STATUS_SUCCESS;
16799}
16800
Jeff Johnsone7245742012-09-05 17:12:55 -070016801#ifdef FEATURE_OEM_DATA_SUPPORT
16802/**
16803 @brief Start Oem Data Rsp function (called when a
16804 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016805
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 @param pWDICtx: pointer to the WLAN DAL context
16807 pEventData: pointer to the event information structure
16808
16809 @see
16810 @return Result of the function call
16811*/
16812#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16813
16814WDI_Status
16815WDI_ProcessStartOemDataRsp
16816(
16817 WDI_ControlBlockType* pWDICtx,
16818 WDI_EventInfoType* pEventData
16819)
16820{
16821 WDI_oemDataRspCb wdiOemDataRspCb;
16822 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16823 tStartOemDataRspParams* halStartOemDataRspParams;
16824
16825 /*-------------------------------------------------------------------------
16826 Sanity check
16827 -------------------------------------------------------------------------*/
16828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16829 ( NULL == pEventData->pEventData))
16830 {
16831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016832 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 WDI_ASSERT(0);
16834 return WDI_STATUS_E_FAILURE;
16835 }
16836
16837 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16838
16839 /*-------------------------------------------------------------------------
16840 Extract response and send it to UMAC
16841 -------------------------------------------------------------------------*/
16842 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16843
16844
16845 //It is the responsibility of the application code to check for failure
16846 //conditions!
16847
16848 //Allocate memory for WDI OEM DATA RSP structure
16849 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16850
16851 if(NULL == wdiOemDataRspParams)
16852 {
16853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16854 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16855 pWDICtx, pEventData, pEventData->pEventData);
16856 WDI_ASSERT(0);
16857 return WDI_STATUS_E_FAILURE;
16858 }
16859
16860 /* Populate WDI structure members */
16861 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16862
16863 /*Notify UMAC*/
16864 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16865
16866 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16867 wpalMemoryFree(wdiOemDataRspParams);
16868
16869 return WDI_STATUS_SUCCESS;
16870}/*WDI_PrcoessStartOemDataRsp*/
16871#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016872
16873/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016875===========================================================================*/
16876
16877/**
16878 @brief Process Channel Switch Rsp function (called when a response
16879 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016880
16881 @param pWDICtx: pointer to the WLAN DAL context
16882 pEventData: pointer to the event information structure
16883
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 @see
16885 @return Result of the function call
16886*/
16887WDI_Status
16888WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016889(
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 WDI_ControlBlockType* pWDICtx,
16891 WDI_EventInfoType* pEventData
16892)
16893{
16894 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16895 WDI_SwitchChRspCb wdiChSwitchRspCb;
16896 tSwitchChannelRspParams halSwitchChannelRsp;
16897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16898
16899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 -------------------------------------------------------------------------*/
16902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16903 ( NULL == pEventData->pEventData))
16904 {
16905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 }
16910
16911 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16912
16913 /*-------------------------------------------------------------------------
16914 Extract response and send it to UMAC
16915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 (wpt_uint8*)pEventData->pEventData,
16918 sizeof(halSwitchChannelRsp));
16919
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 wdiSwitchChRsp.wdiStatus =
16921 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16923
16924#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926#endif
16927
16928 /*Notify UMAC*/
16929 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16930
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016932}/*WDI_ProcessChannelSwitchRsp*/
16933
16934
16935/**
16936 @brief Process Config STA Rsp function (called when a response
16937 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016938
16939 @param pWDICtx: pointer to the WLAN DAL context
16940 pEventData: pointer to the event information structure
16941
Jeff Johnson295189b2012-06-20 16:38:30 -070016942 @see
16943 @return Result of the function call
16944*/
16945WDI_Status
16946WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016947(
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 WDI_ControlBlockType* pWDICtx,
16949 WDI_EventInfoType* pEventData
16950)
16951{
16952 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16953 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16954 WDI_AddStaParams wdiAddSTAParam;
16955
16956 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016958
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16961
16962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 -------------------------------------------------------------------------*/
16965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16966 ( NULL == pEventData->pEventData))
16967 {
16968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 }
16973
16974 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16975
16976 /*-------------------------------------------------------------------------
16977 Extract response and send it to UMAC
16978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016979 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16980 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 sizeof(halConfigStaRsp.configStaRspParams));
16982
16983
16984 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16985 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16986 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16987 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16988 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16989
16990 /* MAC Address of STA - take from cache as it does not come back in the
16991 response*/
16992 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016995
16996 wdiCfgSTAParams.wdiStatus =
16997 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016998
16999 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17000 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17001 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17002
17003 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17004 {
17005 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17006 {
17007 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17010 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017011
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017015 wdiAddSTAParam.ucHTCapable =
17016 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17017 wdiAddSTAParam.ucStaType =
17018 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017019 wdiAddSTAParam.ucRmfEnabled =
17020 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017021
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17024 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017026
17027 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17028 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17029 WDI_MAC_ADDR_LEN);
17030
17031 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17032 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17033 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017034
17035 if ( NULL == pBSSSes )
17036 {
17037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17038 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017039
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 }
17043
17044 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017054
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17056 }
17057 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17058 {
17059 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17060
Jeff Johnsone7245742012-09-05 17:12:55 -070017061 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 halConfigStaRsp.configStaRspParams.ucUcastSig;
17075 }
17076 }
17077
17078 /*Notify UMAC*/
17079 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17080
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017082}/*WDI_ProcessConfigStaRsp*/
17083
17084
17085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017088
17089 @param pWDICtx: pointer to the WLAN DAL context
17090 pEventData: pointer to the event information structure
17091
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 @see
17093 @return Result of the function call
17094*/
17095WDI_Status
17096WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017097(
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 WDI_ControlBlockType* pWDICtx,
17099 WDI_EventInfoType* pEventData
17100)
17101{
17102 WDI_Status wdiStatus;
17103 eHalStatus halStatus;
17104 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17105
17106 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17109
17110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 -------------------------------------------------------------------------*/
17113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17114 ( NULL == pEventData->pEventData))
17115 {
17116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 }
17121
17122 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17123
17124 wpalMutexAcquire(&pWDICtx->wptMutex);
17125
17126 /*If the link is being transitioned to idle - the BSS is to be deleted
17127 - this type of ending a session is possible when UMAC has failed an
17128 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017129 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17131 {
17132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17136 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17137 &pBSSSes);
17138
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 /*-----------------------------------------------------------------------
17140 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017141 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 -----------------------------------------------------------------------*/
17143 if ( NULL == pBSSSes )
17144 {
17145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17146 "Set link response received outside association session");
17147 }
17148 else
17149 {
17150 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17151 will be del BSS coming after this to stop the beaconing & cleaning up the
17152 sessions*/
17153 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17154 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17155 {
17156 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 -----------------------------------------------------------------------*/
17159 WDI_DeleteSession(pWDICtx, pBSSSes);
17160
17161 /*-----------------------------------------------------------------------
17162 Check to see if this association is in progress - if so disable the
17163 flag as this has ended
17164 -----------------------------------------------------------------------*/
17165 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 /*Association no longer in progress */
17168 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17169 /*Association no longer in progress - prepare pending assoc for processing*/
17170 WDI_DequeueAssocRequest(pWDICtx);
17171 }
17172 }
17173 }
17174 }
17175 /* If the link state has been set to POST ASSOC, reset the "association in
17176 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17179 {
17180 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17181 WDI_DequeueAssocRequest(pWDICtx);
17182 }
17183
17184 wpalMutexRelease(&pWDICtx->wptMutex);
17185
17186 /*-------------------------------------------------------------------------
17187 Extract response and send it to UMAC
17188 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 wpalMemoryCopy( &halStatus,
17190 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 sizeof(halStatus));
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017194
17195 /*Notify UMAC*/
17196 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17197
Jeff Johnsone7245742012-09-05 17:12:55 -070017198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017199}/*WDI_ProcessSetLinkStateRsp*/
17200
17201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017202 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017204
17205 @param pWDICtx: pointer to the WLAN DAL context
17206 pEventData: pointer to the event information structure
17207
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 @see
17209 @return Result of the function call
17210*/
17211WDI_Status
17212WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017213(
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 WDI_ControlBlockType* pWDICtx,
17215 WDI_EventInfoType* pEventData
17216)
17217{
17218 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17219 WDI_GetStatsRspCb wdiGetStatsRspCb;
17220 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017221
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 /*-------------------------------------------------------------------------
17237 Extract response and send it to UMAC
17238 -------------------------------------------------------------------------*/
17239 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17240
17241 /*allocate the stats response buffer */
17242 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17243 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17244 + sizeof(WDI_GetStatsRspParamsType));
17245
17246 if(NULL == wdiGetStatsRsp)
17247 {
17248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17249 "Failed to allocate memory in Get Stats Response %x %x %x ",
17250 pWDICtx, pEventData, pEventData->pEventData);
17251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 }
17254
17255 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17256
17257 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17258 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17259 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17260 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17261 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17262 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17263
17264 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17265 wpalMemoryCopy(wdiGetStatsRsp + 1,
17266 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17267 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17268
17269 /*Notify UMAC*/
17270 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17271
17272 wpalMemoryFree(wdiGetStatsRsp);
17273
Jeff Johnsone7245742012-09-05 17:12:55 -070017274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017275}/*WDI_ProcessGetStatsRsp*/
17276
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017277#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17278/**
17279 @brief Process Get Roam Rssi Rsp function (called when a response is
17280 being received over the bus from HAL)
17281
17282 @param pWDICtx: pointer to the WLAN DAL context
17283 pEventData: pointer to the event information structure
17284
17285 @see
17286 @return Result of the function call
17287*/
17288WDI_Status
17289WDI_ProcessGetRoamRssiRsp
17290(
17291 WDI_ControlBlockType* pWDICtx,
17292 WDI_EventInfoType* pEventData
17293)
17294{
17295 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17296 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17297 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17299
17300 /*-------------------------------------------------------------------------
17301 Sanity check
17302 -------------------------------------------------------------------------*/
17303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17304 ( NULL == pEventData->pEventData))
17305 {
17306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17307 "%s: Invalid parameters", __func__);
17308 WDI_ASSERT(0);
17309 return WDI_STATUS_E_FAILURE;
17310 }
17311
17312 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17313 if(NULL == wdiGetRoamRssiRspCb)
17314 {
17315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17316 "%s: call back function is NULL", __func__);
17317 WDI_ASSERT(0);
17318 return WDI_STATUS_E_FAILURE;
17319 }
17320
17321 /*-------------------------------------------------------------------------
17322 Extract response and send it to UMAC
17323 -------------------------------------------------------------------------*/
17324 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17325 pEventData->pEventData,
17326 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17327
17328 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17329 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17330 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17331
17332 /*Notify UMAC*/
17333 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17334
17335 return WDI_STATUS_SUCCESS;
17336}/*WDI_ProcessGetRoamRssiRsp*/
17337#endif
17338
Jeff Johnson295189b2012-06-20 16:38:30 -070017339
17340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017343
17344 @param pWDICtx: pointer to the WLAN DAL context
17345 pEventData: pointer to the event information structure
17346
Jeff Johnson295189b2012-06-20 16:38:30 -070017347 @see
17348 @return Result of the function call
17349*/
17350WDI_Status
17351WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017352(
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 WDI_ControlBlockType* pWDICtx,
17354 WDI_EventInfoType* pEventData
17355)
17356{
17357 WDI_Status wdiStatus;
17358 eHalStatus halStatus;
17359 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17361
17362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 -------------------------------------------------------------------------*/
17365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17366 ( NULL == pEventData->pEventData))
17367 {
17368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 }
17373
17374 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17375
17376 /*-------------------------------------------------------------------------
17377 Extract response and send it to UMAC
17378 -------------------------------------------------------------------------*/
17379 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017381
17382 /*Notify UMAC*/
17383 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17384
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017386}/*WDI_ProcessUpdateCfgRsp*/
17387
17388
17389
17390/**
17391 @brief Process Add BA Rsp function (called when a response
17392 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017393
17394 @param pWDICtx: pointer to the WLAN DAL context
17395 pEventData: pointer to the event information structure
17396
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 @see
17398 @return Result of the function call
17399*/
17400WDI_Status
17401WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017402(
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 WDI_ControlBlockType* pWDICtx,
17404 WDI_EventInfoType* pEventData
17405)
17406{
17407 WDI_AddBARspCb wdiAddBARspCb;
17408
17409 tAddBARspParams halAddBARsp;
17410 WDI_AddBARspinfoType wdiAddBARsp;
17411
17412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17413
17414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 -------------------------------------------------------------------------*/
17417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17418 ( NULL == pEventData->pEventData))
17419 {
17420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 }
17425
17426 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17427
17428 /*-------------------------------------------------------------------------
17429 Extract response and send it to UMAC
17430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 wpalMemoryCopy( &halAddBARsp,
17432 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 sizeof(halAddBARsp));
17434
17435 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17436
Jeff Johnson43971f52012-07-17 12:26:56 -070017437 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 {
17439 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17440 }
17441
17442 /*Notify UMAC*/
17443 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17444
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017446}/*WDI_ProcessAddSessionBARsp*/
17447
17448/**
17449 @brief Process Add BA Rsp function (called when a response
17450 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017451
17452 @param pWDICtx: pointer to the WLAN DAL context
17453 pEventData: pointer to the event information structure
17454
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 @see
17456 @return Result of the function call
17457*/
17458WDI_Status
17459WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017460(
Jeff Johnson295189b2012-06-20 16:38:30 -070017461 WDI_ControlBlockType* pWDICtx,
17462 WDI_EventInfoType* pEventData
17463)
17464{
17465 WDI_TriggerBARspCb wdiTriggerBARspCb;
17466
17467 tTriggerBARspParams* halTriggerBARsp;
17468 tTriggerBaRspCandidate* halBaCandidate;
17469 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17470 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17471 wpt_uint16 index;
17472 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017473 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17475
17476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 -------------------------------------------------------------------------*/
17479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17480 ( NULL == pEventData->pEventData))
17481 {
17482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 }
17487
17488 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17489
17490 /*-------------------------------------------------------------------------
17491 Extract response and send it to UMAC
17492 -------------------------------------------------------------------------*/
17493 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17494
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017495 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17496
17497 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17498 {
17499 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017500 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017502
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017503 if(NULL == wdiTriggerBARsp)
17504 {
17505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17506 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17507 pWDICtx, pEventData, pEventData->pEventData);
17508 WDI_ASSERT(0);
17509 return WDI_STATUS_E_FAILURE;
17510 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017512 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17513
Jeff Johnson295189b2012-06-20 16:38:30 -070017514 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017516 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17517
17518 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17519 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17520
17521 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17522 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17525 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17526 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17531 }
17532 wdiTriggerBARspCandidate++;
17533 halBaCandidate++;
17534 }
17535 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017536 else
17537 {
17538 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17539
17540 if(NULL == wdiTriggerBARsp)
17541 {
17542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17543 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17544 pWDICtx, pEventData, pEventData->pEventData);
17545 WDI_ASSERT(0);
17546 return WDI_STATUS_E_FAILURE;
17547 }
17548
17549 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17550
17551 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017552
17553 /*Notify UMAC*/
17554 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17555
17556 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017558}/*WDI_ProcessAddSessionBARsp*/
17559
17560/**
17561 @brief Process Update Beacon Params Rsp function (called when a response
17562 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017563
17564 @param pWDICtx: pointer to the WLAN DAL context
17565 pEventData: pointer to the event information structure
17566
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 @see
17568 @return Result of the function call
17569*/
17570WDI_Status
17571WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017572(
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 WDI_ControlBlockType* pWDICtx,
17574 WDI_EventInfoType* pEventData
17575)
17576{
17577 WDI_Status wdiStatus;
17578 eHalStatus halStatus;
17579 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17581
17582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 -------------------------------------------------------------------------*/
17585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17586 ( NULL == pEventData->pEventData))
17587 {
17588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 }
17593
17594 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17595
17596 /*-------------------------------------------------------------------------
17597 Extract response and send it to UMAC
17598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017599 wpalMemoryCopy( &halStatus,
17600 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 sizeof(halStatus));
17602
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017604
17605 /*Notify UMAC*/
17606 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17607
Jeff Johnsone7245742012-09-05 17:12:55 -070017608 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017609}/*WDI_ProcessUpdateBeaconParamsRsp*/
17610
17611/**
17612 @brief Process Send Beacon template Rsp function (called when a response
17613 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017614
17615 @param pWDICtx: pointer to the WLAN DAL context
17616 pEventData: pointer to the event information structure
17617
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 @see
17619 @return Result of the function call
17620*/
17621WDI_Status
17622WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017623(
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 WDI_ControlBlockType* pWDICtx,
17625 WDI_EventInfoType* pEventData
17626)
17627{
17628 WDI_Status wdiStatus;
17629 eHalStatus halStatus;
17630 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17632
17633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 -------------------------------------------------------------------------*/
17636 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17637 ( NULL == pEventData->pEventData))
17638 {
17639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 }
17644
17645 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17646
17647 /*-------------------------------------------------------------------------
17648 Extract response and send it to UMAC
17649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 wpalMemoryCopy( &halStatus,
17651 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 sizeof(halStatus));
17653
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017655
17656 /*Notify UMAC*/
17657 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17658
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017660}/*WDI_ProcessSendBeaconParamsRsp*/
17661
Jeff Johnsone7245742012-09-05 17:12:55 -070017662
Jeff Johnson295189b2012-06-20 16:38:30 -070017663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017666
17667 @param pWDICtx: pointer to the WLAN DAL context
17668 pEventData: pointer to the event information structure
17669
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 @see
17671 @return Result of the function call
17672*/
17673WDI_Status
17674WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017675(
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 WDI_ControlBlockType* pWDICtx,
17677 WDI_EventInfoType* pEventData
17678)
17679{
17680 WDI_Status wdiStatus;
17681 eHalStatus halStatus;
17682 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17684
17685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 -------------------------------------------------------------------------*/
17688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17689 ( NULL == pEventData->pEventData))
17690 {
17691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 }
17696
17697 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17698
17699 /*-------------------------------------------------------------------------
17700 Extract response and send it to UMAC
17701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 wpalMemoryCopy( &halStatus,
17703 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017704 sizeof(halStatus));
17705
Jeff Johnsone7245742012-09-05 17:12:55 -070017706 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017707
17708 /*Notify UMAC*/
17709 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17710
Jeff Johnsone7245742012-09-05 17:12:55 -070017711 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017712}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17713
17714 /**
17715 @brief Process Set Max Tx Power Rsp function (called when a response
17716 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017717
17718 @param pWDICtx: pointer to the WLAN DAL context
17719 pEventData: pointer to the event information structure
17720
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 @see
17722 @return Result of the function call
17723*/
17724WDI_Status
17725WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017726(
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 WDI_ControlBlockType* pWDICtx,
17728 WDI_EventInfoType* pEventData
17729)
17730{
17731 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017732
Jeff Johnson295189b2012-06-20 16:38:30 -070017733 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017734
Jeff Johnson295189b2012-06-20 16:38:30 -070017735 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17751
17752 /*-------------------------------------------------------------------------
17753 Extract response and send it to UMAC
17754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17756 pEventData->pEventData,
17757 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017758
17759 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17760 {
17761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17762 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017765 }
17766
Jeff Johnsone7245742012-09-05 17:12:55 -070017767 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017769 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017770
17771 /*Notify UMAC*/
17772 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17773
Jeff Johnsone7245742012-09-05 17:12:55 -070017774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017775}
17776
schangd82195a2013-03-13 18:41:24 -070017777 /**
17778 @brief Process Set Tx Power Rsp function (called when a response
17779 is being received over the bus from HAL)
17780
17781 @param pWDICtx: pointer to the WLAN DAL context
17782 pEventData: pointer to the event information structure
17783
17784 @see
17785 @return Result of the function call
17786*/
17787WDI_Status
17788WDI_ProcessSetTxPowerRsp
17789(
17790 WDI_ControlBlockType* pWDICtx,
17791 WDI_EventInfoType* pEventData
17792)
17793{
17794 tSetTxPwrRspMsg halTxpowerrsp;
17795 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17796 WDA_SetTxPowerRspCb wdiReqStatusCb;
17797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17798
17799 /*-------------------------------------------------------------------------
17800 Sanity check
17801 -------------------------------------------------------------------------*/
17802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17803 ( NULL == pEventData->pEventData))
17804 {
17805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17806 "%s: Invalid parameters", __func__);
17807 WDI_ASSERT(0);
17808 return WDI_STATUS_E_FAILURE;
17809 }
17810
17811 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17812
17813 /*-------------------------------------------------------------------------
17814 Extract response and send it to UMAC
17815 -------------------------------------------------------------------------*/
17816 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17817 pEventData->pEventData,
17818 sizeof(halTxpowerrsp.setTxPwrRspParams));
17819
17820 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17821 {
17822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17823 "Error status returned in Set Tx Power Response ");
17824 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17825 return WDI_STATUS_E_FAILURE;
17826 }
17827
17828 wdiSetTxPowerRspMsg.wdiStatus =
17829 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17830
17831 /*Notify UMAC*/
17832 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17833
17834 return WDI_STATUS_SUCCESS;
17835}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017836#ifdef FEATURE_WLAN_TDLS
17837/**
17838 @brief Process TDLS Link Establish Rsp function (called
17839 when a response is being received over the bus from HAL)
17840
17841 @param pWDICtx: pointer to the WLAN DAL context
17842 pEventData: pointer to the event information structure
17843
17844 @see
17845 @return Result of the function call
17846*/
17847WDI_Status
17848WDI_ProcessLinkEstablishReqRsp
17849(
17850 WDI_ControlBlockType* pWDICtx,
17851 WDI_EventInfoType* pEventData
17852)
17853{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017854 eHalStatus halStatus;
17855 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017856 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
17857 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
17858
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17860
17861 /*-------------------------------------------------------------------------
17862 Sanity check
17863 -------------------------------------------------------------------------*/
17864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17865 ( NULL == pEventData->pEventData))
17866 {
17867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17868 "%s: Invalid parameters", __func__);
17869 WDI_ASSERT(0);
17870 return WDI_STATUS_E_FAILURE;
17871 }
17872
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017873 /*-------------------------------------------------------------------------
17874 Extract indication and send it to UMAC
17875 -------------------------------------------------------------------------*/
17876 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
17877 pEventData->pEventData,
17878 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
17879
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017880 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17881
17882 /*-------------------------------------------------------------------------
17883 Extract response and send it to UMAC
17884 -------------------------------------------------------------------------*/
17885 wpalMemoryCopy( &halStatus,
17886 pEventData->pEventData,
17887 sizeof(halStatus));
17888
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017889 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17890 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017891
17892 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017893 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017894
17895 return WDI_STATUS_SUCCESS;
17896}/*WDI_ProcessLinkEstablishReqRsp*/
17897#endif
schangd82195a2013-03-13 18:41:24 -070017898
Jeff Johnson295189b2012-06-20 16:38:30 -070017899/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017900 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017902
17903 @param pWDICtx: pointer to the WLAN DAL context
17904 pEventData: pointer to the event information structure
17905
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 @see
17907 @return Result of the function call
17908*/
17909WDI_Status
17910WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017911(
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 WDI_ControlBlockType* pWDICtx,
17913 WDI_EventInfoType* pEventData
17914)
17915{
17916 WDI_Status wdiStatus;
17917 eHalStatus halStatus;
17918 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17920
17921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 -------------------------------------------------------------------------*/
17924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17925 ( NULL == pEventData->pEventData))
17926 {
17927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 }
17932
17933 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17934
17935 /*-------------------------------------------------------------------------
17936 Extract response and send it to UMAC
17937 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 wpalMemoryCopy( &halStatus,
17939 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 sizeof(halStatus));
17941
Jeff Johnsone7245742012-09-05 17:12:55 -070017942 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017943
17944 /*Notify UMAC*/
17945 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17946
Jeff Johnsone7245742012-09-05 17:12:55 -070017947 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017948}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017952
17953 @param pWDICtx: pointer to the WLAN DAL context
17954 pEventData: pointer to the event information structure
17955
Jeff Johnson295189b2012-06-20 16:38:30 -070017956 @see
17957 @return Result of the function call
17958*/
17959WDI_Status
17960WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017961(
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 WDI_ControlBlockType* pWDICtx,
17963 WDI_EventInfoType* pEventData
17964)
17965{
17966 WDI_Status wdiStatus;
17967 eHalStatus halStatus;
17968 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017969 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17971
17972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 -------------------------------------------------------------------------*/
17975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17976 ( NULL == pEventData->pEventData))
17977 {
17978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 }
17983
17984 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17985
17986 /*-------------------------------------------------------------------------
17987 Extract response and send it to UMAC
17988 -------------------------------------------------------------------------*/
17989 halStatus = *((eHalStatus*)pEventData->pEventData);
17990
Jeff Johnsone7245742012-09-05 17:12:55 -070017991 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017992
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017993 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17994 * Other module states are taken care by PMC.
17995 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17996 */
17997 if (wdiStatus != WDI_STATUS_SUCCESS) {
17998
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18000 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18001 halStatus);
18002 /* Call Back is not required as we are putting the DXE in FULL
18003 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018004 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18005
18006 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18008 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18009 WDI_ASSERT(0);
18010 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018011 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 /*Notify UMAC*/
18013 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18014
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018016}/*WDI_ProcessEnterImpsRsp*/
18017
18018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018021
18022 @param pWDICtx: pointer to the WLAN DAL context
18023 pEventData: pointer to the event information structure
18024
Jeff Johnson295189b2012-06-20 16:38:30 -070018025 @see
18026 @return Result of the function call
18027*/
18028WDI_Status
18029WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018030(
Jeff Johnson295189b2012-06-20 16:38:30 -070018031 WDI_ControlBlockType* pWDICtx,
18032 WDI_EventInfoType* pEventData
18033)
18034{
18035 WDI_Status wdiStatus;
18036 eHalStatus halStatus;
18037 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018038 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18040
18041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 -------------------------------------------------------------------------*/
18044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18045 ( NULL == pEventData->pEventData))
18046 {
18047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018051 }
18052
18053 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18054
18055 /*-------------------------------------------------------------------------
18056 Extract response and send it to UMAC
18057 -------------------------------------------------------------------------*/
18058 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018059 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018060
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018061 if (halStatus != eHAL_STATUS_SUCCESS)
18062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18063 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18064
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018066 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18067 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18068 {
18069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18070 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18071 WDI_ASSERT(0);
18072 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 /*Notify UMAC*/
18074 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018077}/*WDI_ProcessExitImpsRsp*/
18078
18079/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018082
18083 @param pWDICtx: pointer to the WLAN DAL context
18084 pEventData: pointer to the event information structure
18085
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 @see
18087 @return Result of the function call
18088*/
18089WDI_Status
18090WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018091(
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 WDI_ControlBlockType* pWDICtx,
18093 WDI_EventInfoType* pEventData
18094)
18095{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018096 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18097 tHalEnterBmpsRspParams halEnterBmpsRsp;
18098 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18099 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018100 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18102
18103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 -------------------------------------------------------------------------*/
18106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18107 ( NULL == pEventData->pEventData))
18108 {
18109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 }
18114
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018116 Extract response and send it to UMAC
18117 -------------------------------------------------------------------------*/
18118 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18119 {
18120 wpalMemoryCopy( &halEnterBmpsRsp,
18121 pEventData->pEventData,
18122 sizeof(halEnterBmpsRsp));
18123
18124 //Used to print debug message
18125 halStatus = halEnterBmpsRsp.status;
18126 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18127 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18128 }
18129 else
18130 {
18131 halStatus = *((eHalStatus*)pEventData->pEventData);
18132 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18133 }
18134
18135 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018136
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018137 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18138 * Other module states are taken care by PMC.
18139 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18140 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018141 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18142 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018143
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018145 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18146 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018147 /* Call Back is not required as we are putting the DXE in FULL
18148 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018149 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18150 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18151 {
18152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18153 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18154 WDI_ASSERT(0);
18155 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018156 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018157 }
18158
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018160 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018161
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018163}/*WDI_ProcessEnterBmpsRsp*/
18164
18165/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018168
18169 @param pWDICtx: pointer to the WLAN DAL context
18170 pEventData: pointer to the event information structure
18171
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 @see
18173 @return Result of the function call
18174*/
18175WDI_Status
18176WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018177(
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 WDI_ControlBlockType* pWDICtx,
18179 WDI_EventInfoType* pEventData
18180)
18181{
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 eHalStatus halStatus;
18183 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018184 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018185 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18186 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18188
18189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 -------------------------------------------------------------------------*/
18192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18193 ( NULL == pEventData->pEventData))
18194 {
18195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 }
18200
18201 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18202
18203 /*-------------------------------------------------------------------------
18204 Extract response and send it to UMAC
18205 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018206
18207 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18208 {
18209 wpalMemoryCopy( &halExitBmpsRsp,
18210 pEventData->pEventData,
18211 sizeof(halExitBmpsRsp));
18212
18213 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18214 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18215 }
18216 else
18217 {
18218 halStatus = *((eHalStatus*)pEventData->pEventData);
18219 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018221
18222 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018223 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18224 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18225 {
18226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18227 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18228 WDI_ASSERT(0);
18229 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18231
18232 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018233 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018234
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018236}/*WDI_ProcessExitBmpsRsp*/
18237
18238/**
18239 @brief Process Enter UAPSD Rsp function (called when a response
18240 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018241
18242 @param pWDICtx: pointer to the WLAN DAL context
18243 pEventData: pointer to the event information structure
18244
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 @see
18246 @return Result of the function call
18247*/
18248WDI_Status
18249WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018250(
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 WDI_ControlBlockType* pWDICtx,
18252 WDI_EventInfoType* pEventData
18253)
18254{
Jeff Johnson295189b2012-06-20 16:38:30 -070018255 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018256 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018258 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18259
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18261
18262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018264 -------------------------------------------------------------------------*/
18265 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18266 ( NULL == pEventData->pEventData))
18267 {
18268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 }
18273
18274 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18275
18276 /*-------------------------------------------------------------------------
18277 Extract response and send it to UMAC
18278 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018279 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18280 {
18281 wpalMemoryCopy( &halEnterUapsdRsp,
18282 pEventData->pEventData,
18283 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018284
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018285 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18286 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18287 }
18288 else
18289 {
18290 halStatus = *((eHalStatus*)pEventData->pEventData);
18291 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18292 }
18293
18294 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018295 {
18296 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18297 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18298 // the traffic to decide when to suspend the trigger frames when there is no traffic
18299 // activity on the trigger enabled ACs
18300 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18301
18302#ifdef WLAN_PERF
18303 // Increment the BD signature to refresh the fast path BD utilization
18304 pWDICtx->uBdSigSerialNum++;
18305#endif
18306 }
18307
18308 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018309 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018310
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018312}/*WDI_ProcessEnterUapsdRsp*/
18313
18314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018316 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018317
18318 @param pWDICtx: pointer to the WLAN DAL context
18319 pEventData: pointer to the event information structure
18320
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 @see
18322 @return Result of the function call
18323*/
18324WDI_Status
18325WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018326(
Jeff Johnson295189b2012-06-20 16:38:30 -070018327 WDI_ControlBlockType* pWDICtx,
18328 WDI_EventInfoType* pEventData
18329)
18330{
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 eHalStatus halStatus;
18332 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018333 tHalExitUapsdRspParams halExitUapsdRsp;
18334 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18336
18337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018339 -------------------------------------------------------------------------*/
18340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18341 ( NULL == pEventData->pEventData))
18342 {
18343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 }
18348
18349 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18350
18351 /*-------------------------------------------------------------------------
18352 Extract response and send it to UMAC
18353 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018354 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18355 {
18356 wpalMemoryCopy( &halExitUapsdRsp,
18357 pEventData->pEventData,
18358 sizeof(halExitUapsdRsp));
18359
18360 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18361 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18362 }
18363 else
18364 {
18365 halStatus = *((eHalStatus*)pEventData->pEventData);
18366 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18367 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18369 // directly instead of the FW WQ.
18370 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18371
18372#ifdef WLAN_PERF
18373 // Increment the BD signature to refresh the fast path BD utilization
18374 pWDICtx->uBdSigSerialNum++;
18375#endif
18376
18377 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018378 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018379
Jeff Johnsone7245742012-09-05 17:12:55 -070018380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018381}/*WDI_ProcessExitUapsdRsp*/
18382
18383/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018384 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018386
18387 @param pWDICtx: pointer to the WLAN DAL context
18388 pEventData: pointer to the event information structure
18389
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 @see
18391 @return Result of the function call
18392*/
18393WDI_Status
18394WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018395(
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 WDI_ControlBlockType* pWDICtx,
18397 WDI_EventInfoType* pEventData
18398)
18399{
18400 WDI_Status wdiStatus;
18401 eHalStatus halStatus;
18402 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18404
18405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 -------------------------------------------------------------------------*/
18408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18409 ( NULL == pEventData->pEventData))
18410 {
18411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 }
18416
18417 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18418
18419 /*-------------------------------------------------------------------------
18420 Extract response and send it to UMAC
18421 -------------------------------------------------------------------------*/
18422 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018424
18425 /*Notify UMAC*/
18426 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18427
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018429}/*WDI_ProcessSetUapsdAcParamsRsp*/
18430
18431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018432 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018433 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018434
18435 @param pWDICtx: pointer to the WLAN DAL context
18436 pEventData: pointer to the event information structure
18437
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 @see
18439 @return Result of the function call
18440*/
18441WDI_Status
18442WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018443(
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 WDI_ControlBlockType* pWDICtx,
18445 WDI_EventInfoType* pEventData
18446)
18447{
18448 WDI_Status wdiStatus;
18449 eHalStatus halStatus;
18450 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18452
18453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 -------------------------------------------------------------------------*/
18456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18457 ( NULL == pEventData->pEventData))
18458 {
18459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 }
18464
18465 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18466
18467 /*-------------------------------------------------------------------------
18468 Extract response and send it to UMAC
18469 -------------------------------------------------------------------------*/
18470 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018472
18473 /*Notify UMAC*/
18474 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18475
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018477}/*WDI_ProcessUpdateUapsdParamsRsp*/
18478
18479/**
18480 @brief Process Configure RXP filter Rsp function (called when a
18481 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018482
18483 @param pWDICtx: pointer to the WLAN DAL context
18484 pEventData: pointer to the event information structure
18485
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 @see
18487 @return Result of the function call
18488*/
18489WDI_Status
18490WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018491(
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 WDI_ControlBlockType* pWDICtx,
18493 WDI_EventInfoType* pEventData
18494)
18495{
18496 WDI_Status wdiStatus;
18497 eHalStatus halStatus;
18498 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18500
18501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018502 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 -------------------------------------------------------------------------*/
18504 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18505 ( NULL == pEventData->pEventData))
18506 {
18507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 }
18512
18513 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18514
18515 /*-------------------------------------------------------------------------
18516 Extract response and send it to UMAC
18517 -------------------------------------------------------------------------*/
18518 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018519 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018520
18521 /*Notify UMAC*/
18522 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18523
Jeff Johnsone7245742012-09-05 17:12:55 -070018524 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018525}/*WDI_ProcessConfigureRxpFilterRsp*/
18526
18527/**
18528 @brief Process Set beacon filter Rsp function (called when a
18529 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018530
18531 @param pWDICtx: pointer to the WLAN DAL context
18532 pEventData: pointer to the event information structure
18533
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 @see
18535 @return Result of the function call
18536*/
18537WDI_Status
18538WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018539(
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 WDI_ControlBlockType* pWDICtx,
18541 WDI_EventInfoType* pEventData
18542)
18543{
18544 WDI_Status wdiStatus;
18545 eHalStatus halStatus;
18546 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18548
18549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 -------------------------------------------------------------------------*/
18552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18553 ( NULL == pEventData->pEventData))
18554 {
18555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 }
18560
18561 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18562
18563 /*-------------------------------------------------------------------------
18564 Extract response and send it to UMAC
18565 -------------------------------------------------------------------------*/
18566 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018568
18569 /*Notify UMAC*/
18570 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18571
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573}/*WDI_ProcessSetBeaconFilterRsp*/
18574
18575/**
18576 @brief Process remove beacon filter Rsp function (called when a
18577 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018578
18579 @param pWDICtx: pointer to the WLAN DAL context
18580 pEventData: pointer to the event information structure
18581
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 @see
18583 @return Result of the function call
18584*/
18585WDI_Status
18586WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018587(
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 WDI_ControlBlockType* pWDICtx,
18589 WDI_EventInfoType* pEventData
18590)
18591{
18592 WDI_Status wdiStatus;
18593 eHalStatus halStatus;
18594 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18596
18597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 -------------------------------------------------------------------------*/
18600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18601 ( NULL == pEventData->pEventData))
18602 {
18603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 }
18608
18609 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18610
18611 /*-------------------------------------------------------------------------
18612 Extract response and send it to UMAC
18613 -------------------------------------------------------------------------*/
18614 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018616
18617 /*Notify UMAC*/
18618 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18619
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018621}/*WDI_ProcessRemBeaconFilterRsp*/
18622
18623/**
18624 @brief Process set RSSI thresholds Rsp function (called when a
18625 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018626
18627 @param pWDICtx: pointer to the WLAN DAL context
18628 pEventData: pointer to the event information structure
18629
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 @see
18631 @return Result of the function call
18632*/
18633WDI_Status
18634WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018635(
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 WDI_ControlBlockType* pWDICtx,
18637 WDI_EventInfoType* pEventData
18638)
18639{
18640 WDI_Status wdiStatus;
18641 eHalStatus halStatus;
18642 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18644
18645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 -------------------------------------------------------------------------*/
18648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18649 ( NULL == pEventData->pEventData))
18650 {
18651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 }
18656
18657 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18658
18659 /*-------------------------------------------------------------------------
18660 Extract response and send it to UMAC
18661 -------------------------------------------------------------------------*/
18662 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018664
18665 /*Notify UMAC*/
18666 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18667
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669}/*WDI_ProcessSetRSSIThresoldsRsp*/
18670
18671/**
18672 @brief Process host offload Rsp function (called when a
18673 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018674
18675 @param pWDICtx: pointer to the WLAN DAL context
18676 pEventData: pointer to the event information structure
18677
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 @see
18679 @return Result of the function call
18680*/
18681WDI_Status
18682WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018683(
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 WDI_ControlBlockType* pWDICtx,
18685 WDI_EventInfoType* pEventData
18686)
18687{
18688 WDI_Status wdiStatus;
18689 eHalStatus halStatus;
18690 WDI_HostOffloadCb wdiHostOffloadCb;
18691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18692
18693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 -------------------------------------------------------------------------*/
18696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18697 ( NULL == pEventData->pEventData))
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 }
18704
18705 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18706
18707 /*-------------------------------------------------------------------------
18708 Extract response and send it to UMAC
18709 -------------------------------------------------------------------------*/
18710 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018712
18713 /*Notify UMAC*/
18714 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18715
Jeff Johnsone7245742012-09-05 17:12:55 -070018716 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018717}/*WDI_ProcessHostOffloadRsp*/
18718
18719/**
18720 @brief Process keep alive Rsp function (called when a
18721 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018722
18723 @param pWDICtx: pointer to the WLAN DAL context
18724 pEventData: pointer to the event information structure
18725
Jeff Johnson295189b2012-06-20 16:38:30 -070018726 @see
18727 @return Result of the function call
18728*/
18729WDI_Status
18730WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018731(
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 WDI_ControlBlockType* pWDICtx,
18733 WDI_EventInfoType* pEventData
18734)
18735{
18736 WDI_Status wdiStatus;
18737 eHalStatus halStatus;
18738 WDI_KeepAliveCb wdiKeepAliveCb;
18739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18741 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18742
18743
18744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 -------------------------------------------------------------------------*/
18747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18748 ( NULL == pEventData->pEventData))
18749 {
18750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 }
18755
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18757
Jeff Johnson295189b2012-06-20 16:38:30 -070018758 /*-------------------------------------------------------------------------
18759 Extract response and send it to UMAC
18760 -------------------------------------------------------------------------*/
18761 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018763
18764 /*Notify UMAC*/
18765 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18766
Jeff Johnsone7245742012-09-05 17:12:55 -070018767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018768}/*WDI_ProcessKeepAliveRsp*/
18769
18770/**
18771 @brief Process wowl add ptrn Rsp function (called when a
18772 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018773
18774 @param pWDICtx: pointer to the WLAN DAL context
18775 pEventData: pointer to the event information structure
18776
Jeff Johnson295189b2012-06-20 16:38:30 -070018777 @see
18778 @return Result of the function call
18779*/
18780WDI_Status
18781WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018782(
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 WDI_ControlBlockType* pWDICtx,
18784 WDI_EventInfoType* pEventData
18785)
18786{
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 eHalStatus halStatus;
18788 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018789 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18790 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18791
Jeff Johnson295189b2012-06-20 16:38:30 -070018792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18793
18794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 -------------------------------------------------------------------------*/
18797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18798 ( NULL == pEventData->pEventData))
18799 {
18800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 }
18805
18806 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18807
18808 /*-------------------------------------------------------------------------
18809 Extract response and send it to UMAC
18810 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018811 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18812 {
18813 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18814 pEventData->pEventData,
18815 sizeof(halAddWowlBcastPtrRsp));
18816
18817 wdiWowlAddBcPtrRsp.wdiStatus =
18818 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18819 }
18820 else
18821 {
18822 halStatus = *((eHalStatus*)pEventData->pEventData);
18823 wdiWowlAddBcPtrRsp.wdiStatus =
18824 WDI_HAL_2_WDI_STATUS(halStatus);
18825 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018826
18827 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018828 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018829
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018831}/*WDI_ProcessWowlAddBcPtrnRsp*/
18832
18833/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018834 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018836
18837 @param pWDICtx: pointer to the WLAN DAL context
18838 pEventData: pointer to the event information structure
18839
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 @see
18841 @return Result of the function call
18842*/
18843WDI_Status
18844WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018845(
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 WDI_ControlBlockType* pWDICtx,
18847 WDI_EventInfoType* pEventData
18848)
18849{
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 eHalStatus halStatus;
18851 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018852 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18853 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18855
18856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018858 -------------------------------------------------------------------------*/
18859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18860 ( NULL == pEventData->pEventData))
18861 {
18862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 }
18867
18868 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18869
18870 /*-------------------------------------------------------------------------
18871 Extract response and send it to UMAC
18872 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018873 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18874 {
18875 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18876 pEventData->pEventData,
18877 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018878
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018879 wdiWowlDelBcstPtrRsp.wdiStatus =
18880 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18881 }
18882 else
18883 {
18884 halStatus = *((eHalStatus*)pEventData->pEventData);
18885 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18886 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018888 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018889
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018891}/*WDI_ProcessWowlDelBcPtrnRsp*/
18892
18893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018896
18897 @param pWDICtx: pointer to the WLAN DAL context
18898 pEventData: pointer to the event information structure
18899
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 @see
18901 @return Result of the function call
18902*/
18903WDI_Status
18904WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018905(
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 WDI_ControlBlockType* pWDICtx,
18907 WDI_EventInfoType* pEventData
18908)
18909{
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 eHalStatus halStatus;
18911 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018912 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18913 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18915
18916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 -------------------------------------------------------------------------*/
18919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18920 ( NULL == pEventData->pEventData))
18921 {
18922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 }
18927
18928 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18929
18930 /*-------------------------------------------------------------------------
18931 Extract response and send it to UMAC
18932 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018933 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18934 {
18935 wpalMemoryCopy( &halEnterWowlRspParams,
18936 (wpt_uint8*)pEventData->pEventData,
18937 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018938
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018939 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18940 wdiwowlEnterRsp.status =
18941 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18942 }
18943 else
18944 {
18945 halStatus = *((eHalStatus*)pEventData->pEventData);
18946 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18947 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018949 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018950
Jeff Johnsone7245742012-09-05 17:12:55 -070018951 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018952}/*WDI_ProcessWowlEnterRsp*/
18953
18954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018957
18958 @param pWDICtx: pointer to the WLAN DAL context
18959 pEventData: pointer to the event information structure
18960
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 @see
18962 @return Result of the function call
18963*/
18964WDI_Status
18965WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018966(
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 WDI_ControlBlockType* pWDICtx,
18968 WDI_EventInfoType* pEventData
18969)
18970{
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 eHalStatus halStatus;
18972 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018973 tHalExitWowlRspParams halExitWowlRspParams;
18974 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18975
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18977
18978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 -------------------------------------------------------------------------*/
18981 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18982 ( NULL == pEventData->pEventData))
18983 {
18984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 }
18989
18990 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18991
18992 /*-------------------------------------------------------------------------
18993 Extract response and send it to UMAC
18994 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018995 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18996 {
18997 wpalMemoryCopy( &halExitWowlRspParams,
18998 pEventData->pEventData,
18999 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019000
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019001 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19002 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19003
19004 }
19005 else
19006 {
19007 halStatus = *((eHalStatus*)pEventData->pEventData);
19008 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19009 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019011 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019012
Jeff Johnsone7245742012-09-05 17:12:55 -070019013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019014}/*WDI_ProcessWowlExitRsp*/
19015
19016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 (called when a response is being received over the bus
19019 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019020
19021 @param pWDICtx: pointer to the WLAN DAL context
19022 pEventData: pointer to the event information structure
19023
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 @see
19025 @return Result of the function call
19026*/
19027WDI_Status
19028WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019029(
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 WDI_ControlBlockType* pWDICtx,
19031 WDI_EventInfoType* pEventData
19032)
19033{
19034 WDI_Status wdiStatus;
19035 eHalStatus halStatus;
19036 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19038
19039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 -------------------------------------------------------------------------*/
19042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19043 ( NULL == pEventData->pEventData))
19044 {
19045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019049 }
19050
19051 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19052
19053 /*-------------------------------------------------------------------------
19054 Extract response and send it to UMAC
19055 -------------------------------------------------------------------------*/
19056 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019058
19059 /*Notify UMAC*/
19060 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19061
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19064
19065
19066/**
19067 @brief Process Nv download(called when a response
19068 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019069
19070 @param pWDICtx: pointer to the WLAN DAL context
19071 pEventData: pointer to the event information structure
19072
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 @see
19074 @return Result of the function call
19075*/
19076WDI_Status
19077WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019078(
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 WDI_ControlBlockType* pWDICtx,
19080 WDI_EventInfoType* pEventData
19081)
19082{
19083
19084 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19085 tHalNvImgDownloadRspParams halNvDownloadRsp;
19086 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19087
19088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019090 -------------------------------------------------------------------------*/
19091 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19092 ( NULL == pEventData->pEventData))
19093 {
19094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019095 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 }
19099
19100 /*-------------------------------------------------------------------------
19101 Extract response and send it to UMAC
19102 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 wpalMemoryCopy( &halNvDownloadRsp,
19104 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 sizeof(halNvDownloadRsp));
19106
19107 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19108
19109 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19111 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 {
19113 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019114 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 }
19116 else
19117 {
19118 /*Reset the Nv related global information in WDI context information */
19119 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19120 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19121 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19122 /*call WDA callback function for last fragment */
19123 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19124 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19125 }
19126
Jeff Johnsone7245742012-09-05 17:12:55 -070019127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019128}
19129#ifdef WLAN_FEATURE_VOWIFI_11R
19130/**
19131 @brief Process Add TSpec Rsp function (called when a response
19132 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019133
19134 @param pWDICtx: pointer to the WLAN DAL context
19135 pEventData: pointer to the event information structure
19136
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 @see
19138 @return Result of the function call
19139*/
19140WDI_Status
19141WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019142(
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 WDI_ControlBlockType* pWDICtx,
19144 WDI_EventInfoType* pEventData
19145)
19146{
19147 WDI_Status wdiStatus;
19148 tAggrAddTsRspParams aggrAddTsRsp;
19149 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19151
19152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 -------------------------------------------------------------------------*/
19155 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19156 ( NULL == pEventData->pEventData))
19157 {
19158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 }
19163
19164 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19165
19166 /*-------------------------------------------------------------------------
19167 Extract response and send it to UMAC
19168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 wpalMemoryCopy( &aggrAddTsRsp,
19170 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 sizeof(aggrAddTsRsp));
19172
19173 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019175
19176 /*Notify UMAC*/
19177 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19178
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019180}/*WDI_ProcessAddTSpecRsp*/
19181#endif /* WLAN_FEATURE_VOWIFI_11R */
19182
19183/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019186
19187 @param pWDICtx: pointer to the WLAN DAL context
19188 pEventData: pointer to the event information structure
19189
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 @see
19191 @return Result of the function call
19192*/
19193WDI_Status
19194WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019195(
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 WDI_ControlBlockType* pWDICtx,
19197 WDI_EventInfoType* pEventData
19198)
19199{
19200 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19201 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19202 tHalHostResumeRspParams hostResumeRspMsg;
19203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19204
19205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 -------------------------------------------------------------------------*/
19208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19209 ( NULL == pEventData->pEventData))
19210 {
19211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 }
19216
19217 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19218
19219 /*-------------------------------------------------------------------------
19220 Extract response and send it to UMAC
19221 -------------------------------------------------------------------------*/
19222
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 (wpt_uint8*)pEventData->pEventData,
19225 sizeof(hostResumeRspMsg));
19226
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 wdiResumeRspParams.wdiStatus =
19228 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019229
19230 /*Notify UMAC*/
19231 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19232
19233 return WDI_STATUS_SUCCESS;
19234}
19235
19236/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019239
19240 @param pWDICtx: pointer to the WLAN DAL context
19241 pEventData: pointer to the event information structure
19242
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 @see
19244 @return Result of the function call
19245*/
19246WDI_Status
19247WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019248(
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 WDI_ControlBlockType* pWDICtx,
19250 WDI_EventInfoType* pEventData
19251)
19252{
19253 WDI_Status wdiStatus;
19254 eHalStatus halStatus;
19255 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19257
19258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 -------------------------------------------------------------------------*/
19261 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19262 ( NULL == pEventData->pEventData))
19263 {
19264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019269
19270 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019271
19272 /*-------------------------------------------------------------------------
19273 Extract response and send it to UMAC
19274 -------------------------------------------------------------------------*/
19275 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019277
19278 /*Notify UMAC*/
19279 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19280
Jeff Johnsone7245742012-09-05 17:12:55 -070019281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019282}/*WDI_ProcessSetTxPerTrackingRsp*/
19283
19284/*==========================================================================
19285 Indications from HAL
19286 ==========================================================================*/
19287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 indication of this kind is being received over the bus
19290 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019291
19292 @param pWDICtx: pointer to the WLAN DAL context
19293 pEventData: pointer to the event information structure
19294
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 @see
19296 @return Result of the function call
19297*/
19298WDI_Status
19299WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019300(
Jeff Johnson295189b2012-06-20 16:38:30 -070019301 WDI_ControlBlockType* pWDICtx,
19302 WDI_EventInfoType* pEventData
19303)
19304{
19305 WDI_LowLevelIndType wdiInd;
19306 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19308
19309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 -------------------------------------------------------------------------*/
19312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19313 ( NULL == pEventData->pEventData))
19314 {
19315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 }
19320
19321 /*-------------------------------------------------------------------------
19322 Extract indication and send it to UMAC
19323 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19325 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 sizeof(tHalRSSINotification));
19327
19328 /*Fill in the indication parameters*/
19329 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19330 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19331 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19332 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19333 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19334 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19335 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19336 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19337 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19338 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19339 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19340 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19341 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019342 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19343 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019344
ltimariu034f7d62013-01-24 18:54:33 -080019345 if ( pWDICtx->wdiLowLevelIndCB )
19346 {
19347 /*Notify UMAC of indication*/
19348 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19349 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019350
19351 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019352}/*WDI_ProcessLowRSSIInd*/
19353
19354
19355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 an indication of this kind is being received over the
19358 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019359
19360 @param pWDICtx: pointer to the WLAN DAL context
19361 pEventData: pointer to the event information structure
19362
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 @see
19364 @return Result of the function call
19365*/
19366WDI_Status
19367WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019368(
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 WDI_ControlBlockType* pWDICtx,
19370 WDI_EventInfoType* pEventData
19371)
19372{
19373 WDI_Status wdiStatus;
19374 eHalStatus halStatus;
19375 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019376 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19378
19379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 -------------------------------------------------------------------------*/
19382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19383 ( NULL == pEventData->pEventData))
19384 {
19385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019389 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019390 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 /*-------------------------------------------------------------------------
19392 Extract indication and send it to UMAC
19393 -------------------------------------------------------------------------*/
19394 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19395 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019397
19398 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019399 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019400 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19401 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019402 if ( pWDICtx->wdiLowLevelIndCB )
19403 {
19404 /*Notify UMAC*/
19405 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19406 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019407
19408 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019409}/*WDI_ProcessMissedBeaconInd*/
19410
19411
19412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019413 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019414 an indication of this kind is being received over the
19415 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019416
19417 @param pWDICtx: pointer to the WLAN DAL context
19418 pEventData: pointer to the event information structure
19419
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 @see
19421 @return Result of the function call
19422*/
19423WDI_Status
19424WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019425(
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 WDI_ControlBlockType* pWDICtx,
19427 WDI_EventInfoType* pEventData
19428)
19429{
19430 WDI_Status wdiStatus;
19431 eHalStatus halStatus;
19432 WDI_LowLevelIndType wdiInd;
19433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19434
19435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 -------------------------------------------------------------------------*/
19438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19439 ( NULL == pEventData->pEventData))
19440 {
19441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019445 }
19446
19447 /*-------------------------------------------------------------------------
19448 Extract indication and send it to UMAC
19449 -------------------------------------------------------------------------*/
19450 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19451 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019452 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019453
19454 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 /* ! TO DO - fill in from HAL struct:
19457 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19458
ltimariu034f7d62013-01-24 18:54:33 -080019459 if ( pWDICtx->wdiLowLevelIndCB )
19460 {
19461 /*Notify UMAC*/
19462 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19463 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019464
19465 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019466}/*WDI_ProcessUnkAddrFrameInd*/
19467
19468
19469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019470 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 indication of this kind is being received over the bus
19472 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019473
19474 @param pWDICtx: pointer to the WLAN DAL context
19475 pEventData: pointer to the event information structure
19476
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 @see
19478 @return Result of the function call
19479*/
19480WDI_Status
19481WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019482(
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 WDI_ControlBlockType* pWDICtx,
19484 WDI_EventInfoType* pEventData
19485)
19486{
19487 WDI_LowLevelIndType wdiInd;
19488 tpSirMicFailureInd pHalMicFailureInd;
19489
19490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19491
19492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 -------------------------------------------------------------------------*/
19495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19496 ( NULL == pEventData->pEventData))
19497 {
19498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019502 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019503
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19505 /*-------------------------------------------------------------------------
19506 Extract indication and send it to UMAC
19507 -------------------------------------------------------------------------*/
19508
19509 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19512 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19513 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19514 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19515 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19516 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19517 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19518 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019523 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 pHalMicFailureInd->info.keyId;
19525 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19526 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19527 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19528 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019529
19530 if ( pWDICtx->wdiLowLevelIndCB )
19531 {
19532 /*Notify UMAC*/
19533 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19534 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019535
19536 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019537}/*WDI_ProcessMicFailureInd*/
19538
19539
19540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 an indication of this kind is being received over the
19543 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019544
19545 @param pWDICtx: pointer to the WLAN DAL context
19546 pEventData: pointer to the event information structure
19547
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 @see
19549 @return Result of the function call
19550*/
19551WDI_Status
19552WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019553(
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 WDI_ControlBlockType* pWDICtx,
19555 WDI_EventInfoType* pEventData
19556)
19557{
19558 WDI_Status wdiStatus;
19559 eHalStatus halStatus;
19560 WDI_LowLevelIndType wdiInd;
19561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19562
19563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 -------------------------------------------------------------------------*/
19566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19567 ( NULL == pEventData->pEventData))
19568 {
19569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 }
19574
19575 /*-------------------------------------------------------------------------
19576 Extract indication and send it to UMAC
19577 -------------------------------------------------------------------------*/
19578
19579 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19580 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019582
19583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19584 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019585
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19588 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019589
ltimariu034f7d62013-01-24 18:54:33 -080019590 if ( pWDICtx->wdiLowLevelIndCB )
19591 {
19592 /*Notify UMAC*/
19593 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19594 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019595
19596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019597}/*WDI_ProcessFatalErrorInd*/
19598
19599/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019600 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019601 an indication of this kind is being received over the
19602 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019603
19604 @param pWDICtx: pointer to the WLAN DAL context
19605 pEventData: pointer to the event information structure
19606
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 @see
19608 @return Result of the function call
19609*/
19610WDI_Status
19611WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019612(
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 WDI_ControlBlockType* pWDICtx,
19614 WDI_EventInfoType* pEventData
19615)
19616{
19617 tDeleteStaContextParams halDelSTACtx;
19618 WDI_LowLevelIndType wdiInd;
19619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19620
19621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 -------------------------------------------------------------------------*/
19624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19625 ( NULL == pEventData->pEventData))
19626 {
19627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 }
19632
19633 /*-------------------------------------------------------------------------
19634 Extract indication and send it to UMAC
19635 -------------------------------------------------------------------------*/
19636
19637 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 wpalMemoryCopy( &halDelSTACtx,
19639 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 sizeof(halDelSTACtx));
19641
19642 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019644
19645 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19646 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19647 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19648 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19649
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19655 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019656
ltimariu034f7d62013-01-24 18:54:33 -080019657 if ( pWDICtx->wdiLowLevelIndCB )
19658 {
19659 /*Notify UMAC*/
19660 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19661 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019662
19663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019664}/*WDI_ProcessDelSTAInd*/
19665
19666/**
19667*@brief Process Coex Indication function (called when
19668 an indication of this kind is being received over the
19669 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019670
19671 @param pWDICtx: pointer to the WLAN DAL context
19672 pEventData: pointer to the event information structure
19673
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 @see
19675 @return Result of the function call
19676*/
19677WDI_Status
19678WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019679(
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 WDI_ControlBlockType* pWDICtx,
19681 WDI_EventInfoType* pEventData
19682)
19683{
19684 WDI_LowLevelIndType wdiInd;
19685 tCoexIndMsg halCoexIndMsg;
19686 wpt_uint32 index;
19687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19688
19689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 -------------------------------------------------------------------------*/
19692 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19693 ( NULL == pEventData->pEventData ))
19694 {
19695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 }
19700
19701 /*-------------------------------------------------------------------------
19702 Extract indication and send it to UMAC
19703 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019704 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19705 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 sizeof(halCoexIndMsg.coexIndParams) );
19707
19708 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 wdiInd.wdiIndicationType = WDI_COEX_IND;
19710 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19712 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019713 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 }
19715
19716 // DEBUG
19717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19718 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19720 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19721 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19722 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19723 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019724
ltimariu034f7d62013-01-24 18:54:33 -080019725 if ( pWDICtx->wdiLowLevelIndCB )
19726 {
19727 /*Notify UMAC*/
19728 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19729 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019730
19731 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019732}/*WDI_ProcessCoexInd*/
19733
19734/**
19735*@brief Process Tx Complete Indication function (called when
19736 an indication of this kind is being received over the
19737 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019738
19739 @param pWDICtx: pointer to the WLAN DAL context
19740 pEventData: pointer to the event information structure
19741
Jeff Johnson295189b2012-06-20 16:38:30 -070019742 @see
19743 @return Result of the function call
19744*/
19745WDI_Status
19746WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019747(
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 WDI_ControlBlockType* pWDICtx,
19749 WDI_EventInfoType* pEventData
19750)
19751{
19752 WDI_LowLevelIndType wdiInd;
19753 tTxComplIndMsg halTxComplIndMsg;
19754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19755
19756 /*-------------------------------------------------------------------------
19757 Sanity check
19758 -------------------------------------------------------------------------*/
19759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19760 ( NULL == pEventData->pEventData ))
19761 {
19762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019764 WDI_ASSERT( 0 );
19765 return WDI_STATUS_E_FAILURE;
19766 }
19767
19768 /*-------------------------------------------------------------------------
19769 Extract indication and send it to UMAC
19770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019771 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19772 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 sizeof(halTxComplIndMsg.txComplParams) );
19774
19775 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019776 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19777 wdiInd.wdiIndicationData.tx_complete_status
19778 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779
ltimariu034f7d62013-01-24 18:54:33 -080019780 if ( pWDICtx->wdiLowLevelIndCB )
19781 {
19782 /*Notify UMAC*/
19783 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19784 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019785
19786 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019787}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019788#ifdef FEATURE_WLAN_TDLS
19789/**
19790*@brief Process TDLS Indication function (called when
19791 an indication of this kind is being received over the
19792 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019793
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019794 @param pWDICtx: pointer to the WLAN DAL context
19795 pEventData: pointer to the event information structure
19796
19797 @see
19798 @return Result of the function call
19799*/
19800WDI_Status
19801WDI_ProcessTdlsInd
19802(
19803 WDI_ControlBlockType* pWDICtx,
19804 WDI_EventInfoType* pEventData
19805)
19806{
19807 WDI_LowLevelIndType wdiInd;
19808 tTdlsIndMsg halTdlsIndMsg;
19809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19810
19811 /*-------------------------------------------------------------------------
19812 Sanity check
19813 -------------------------------------------------------------------------*/
19814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19815 ( NULL == pEventData->pEventData ))
19816 {
19817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19818 "%s: Invalid parameters", __func__);
19819 WDI_ASSERT( 0 );
19820 return WDI_STATUS_E_FAILURE;
19821 }
19822
19823 /*-------------------------------------------------------------------------
19824 Extract indication and send it to UMAC
19825 -------------------------------------------------------------------------*/
19826 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19827 pEventData->pEventData,
19828 sizeof(halTdlsIndMsg.tdlsIndParams) );
19829
19830 /*Fill in the indication parameters*/
19831 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19832
19833 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19834 = halTdlsIndMsg.tdlsIndParams.status;
19835
19836 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19837 = halTdlsIndMsg.tdlsIndParams.staIdx;
19838
19839 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19840 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19841
19842 /*Notify UMAC*/
19843 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19844
19845 return WDI_STATUS_SUCCESS;
19846}/*WDI_ProcessTdlsInd*/
19847#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019848/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019849*@brief Process Noa Start Indication function (called when
19850 an indication of this kind is being received over the
19851 bus from HAL)
19852
19853 @param pWDICtx: pointer to the WLAN DAL context
19854 pEventData: pointer to the event information structure
19855
19856 @see
19857 @return Result of the function call
19858*/
19859WDI_Status
19860WDI_ProcessP2pNoaStartInd
19861(
19862 WDI_ControlBlockType* pWDICtx,
19863 WDI_EventInfoType* pEventData
19864)
19865{
19866 WDI_LowLevelIndType wdiInd;
19867 tNoaStartIndMsg halNoaStartIndMsg;
19868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19869
19870 /*-------------------------------------------------------------------------
19871 Sanity check
19872 -------------------------------------------------------------------------*/
19873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19874 ( NULL == pEventData->pEventData ))
19875 {
19876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19877 "%s: Invalid parameters", __func__);
19878 WDI_ASSERT( 0 );
19879 return WDI_STATUS_E_FAILURE;
19880 }
19881
19882 /*-------------------------------------------------------------------------
19883 Extract indication and send it to UMAC
19884 -------------------------------------------------------------------------*/
19885 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19886 pEventData->pEventData,
19887 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19888
19889 /*Fill in the indication parameters*/
19890 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19891
19892 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19893 = halNoaStartIndMsg.noaStartIndParams.status;
19894
19895 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19896 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19897
19898 /*Notify UMAC*/
19899 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19900
19901 return WDI_STATUS_SUCCESS;
19902}/*WDI_ProcessNoaAttrInd*/
19903
19904/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019905*@brief Process Noa Attr Indication function (called when
19906 an indication of this kind is being received over the
19907 bus from HAL)
19908
19909 @param pWDICtx: pointer to the WLAN DAL context
19910 pEventData: pointer to the event information structure
19911
19912 @see
19913 @return Result of the function call
19914*/
19915WDI_Status
19916WDI_ProcessP2pNoaAttrInd
19917(
19918 WDI_ControlBlockType* pWDICtx,
19919 WDI_EventInfoType* pEventData
19920)
19921{
19922 WDI_LowLevelIndType wdiInd;
19923 tNoaAttrIndMsg halNoaAttrIndMsg;
19924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19925
19926 /*-------------------------------------------------------------------------
19927 Sanity check
19928 -------------------------------------------------------------------------*/
19929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19930 ( NULL == pEventData->pEventData ))
19931 {
19932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019934 WDI_ASSERT( 0 );
19935 return WDI_STATUS_E_FAILURE;
19936 }
19937
19938 /*-------------------------------------------------------------------------
19939 Extract indication and send it to UMAC
19940 -------------------------------------------------------------------------*/
19941 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19942 pEventData->pEventData,
19943 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19944
19945 /*Fill in the indication parameters*/
19946 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019947
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19949 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019950
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19952 = halNoaAttrIndMsg.noaAttrIndParams.index;
19953 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19954 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19955 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19956 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019957
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19959 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19960 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19961 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19962 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19963 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19964 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19965 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019966
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19968 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19969 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19970 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19971 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19972 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19973 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19974 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19975
ltimariu034f7d62013-01-24 18:54:33 -080019976 if ( pWDICtx->wdiLowLevelIndCB )
19977 {
19978 /*Notify UMAC*/
19979 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19980 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019981
19982 return WDI_STATUS_SUCCESS;
19983}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019984
19985/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 an indication of this kind is being received over the
19988 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019989
19990 @param pWDICtx: pointer to the WLAN DAL context
19991 pEventData: pointer to the event information structure
19992
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 @see
19994 @return Result of the function call
19995*/
19996WDI_Status
19997WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019998(
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 WDI_ControlBlockType* pWDICtx,
20000 WDI_EventInfoType* pEventData
20001)
20002{
20003 WDI_LowLevelIndType wdiInd;
20004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020005
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 /*-------------------------------------------------------------------------
20007 Extract indication and send it to UMAC
20008 -------------------------------------------------------------------------*/
20009 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20011
ltimariu034f7d62013-01-24 18:54:33 -080020012 if ( pWDICtx->wdiLowLevelIndCB )
20013 {
20014 /*Notify UMAC*/
20015 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20016 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020017
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020019}/*WDI_ProcessTxPerHitInd*/
20020
Jeff Johnson295189b2012-06-20 16:38:30 -070020021/**
20022 @brief WDI_ProcessFTMCommandReq
20023 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020024
20025 @param pWDICtx: pointer to the WLAN DAL context
20026 pEventData: pointer to the event information structure
20027
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 @see
20029 @return Result of the function call
20030*/
20031WDI_Status
20032WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020033(
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 WDI_ControlBlockType* pWDICtx,
20035 WDI_EventInfoType* pEventData
20036)
20037{
20038 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20039 wpt_uint8 *ftmCommandBuffer = NULL;
20040 wpt_uint16 dataOffset;
20041 wpt_uint16 bufferSize;
20042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 -------------------------------------------------------------------------*/
20045 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20046 ( NULL == pEventData->pEventData))
20047
20048 {
20049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 }
20054
20055 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20056
20057 /* Get MSG Buffer */
20058 WDI_GetMessageBuffer(pWDICtx,
20059 WDI_FTM_CMD_REQ,
20060 ftmCommandReq->bodyLength,
20061 &ftmCommandBuffer,
20062 &dataOffset,
20063 &bufferSize);
20064
20065 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20066 ftmCommandReq->FTMCommandBody,
20067 ftmCommandReq->bodyLength);
20068
20069 /* Send MSG */
20070 return WDI_SendMsg(pWDICtx,
20071 ftmCommandBuffer,
20072 bufferSize,
20073 pEventData->pCBfnc,
20074 pEventData->pUserData,
20075 WDI_FTM_CMD_RESP);
20076}
20077
20078/**
20079 @brief WDI_ProcessFTMCommandRsp
20080 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020081
20082 @param pWDICtx: pointer to the WLAN DAL context
20083 pEventData: pointer to the event information structure
20084
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 @see
20086 @return Result of the function call
20087*/
20088WDI_Status
20089WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020090(
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 WDI_ControlBlockType* pWDICtx,
20092 WDI_EventInfoType* pEventData
20093)
20094{
20095 WDI_FTMCommandRspCb ftmCMDRspCb;
20096 tProcessPttRspParams *ftmCMDRspData = NULL;
20097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20098
20099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 -------------------------------------------------------------------------*/
20102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20103 ( NULL == pEventData->pEventData))
20104 {
20105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 }
20110
20111 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20112
20113 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20114
Jeff Johnsone7245742012-09-05 17:12:55 -070020115 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20116 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020117 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20118
20119 /*Notify UMAC*/
20120 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20121
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020123}
Jeff Johnson295189b2012-06-20 16:38:30 -070020124/**
20125 @brief WDI_ProcessHalDumpCmdReq
20126 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020127
20128 @param pWDICtx: pointer to the WLAN DAL context
20129 pEventData: pointer to the event information structure
20130
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 @see
20132 @return Result of the function call
20133*/
20134WDI_Status
20135WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020136(
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 WDI_ControlBlockType* pWDICtx,
20138 WDI_EventInfoType* pEventData
20139)
20140{
20141 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20142 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20143 wpt_uint16 usDataOffset = 0;
20144 wpt_uint16 usSendSize = 0;
20145 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020147
20148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 -------------------------------------------------------------------------*/
20151 if (( NULL == pEventData ) ||
20152 ( NULL == pEventData->pEventData) ||
20153 ( NULL == pEventData->pCBfnc ))
20154 {
20155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020159 }
20160
20161 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20162 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20163
20164 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020165 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020166 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020174 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020175
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 /*-----------------------------------------------------------------------
20177 Get message buffer
20178 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20181 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20184 {
20185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20186 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20187 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 }
20191
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 wpalMemoryCopy( pSendBuffer+usDataOffset,
20193 &halDumpCmdReqMsg.dumpCmdReqParams,
20194 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020195
20196 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020197 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198
20199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20203 wdiHALDumpCmdRspCb, pEventData->pUserData,
20204 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020205}
20206
20207/**
20208 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 Process hal Dump Command Response from HAL, simply route to HDD
20210
20211 @param pWDICtx: pointer to the WLAN DAL context
20212 pEventData: pointer to the event information structure
20213
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 @see
20215 @return Result of the function call
20216*/
20217WDI_Status
20218WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020219(
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 WDI_ControlBlockType* pWDICtx,
20221 WDI_EventInfoType* pEventData
20222)
20223{
20224 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020225 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20227
20228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 -------------------------------------------------------------------------*/
20231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20232 ( NULL == pEventData->pEventData))
20233 {
20234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 }
20239
Jeff Johnsone7245742012-09-05 17:12:55 -070020240 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020241
20242 /*Initialize the WDI Response structure */
20243 wdiHALDumpCmdRsp.usBufferLen = 0;
20244 wdiHALDumpCmdRsp.pBuffer = NULL;
20245
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020246 wpalMemoryCopy( &halDumpCmdRspParams,
20247 pEventData->pEventData,
20248 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020249
20250 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020251 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020252
20253 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020254 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 {
20256 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020257 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20258 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20259
20260 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20261 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020262 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020264
Jeff Johnson295189b2012-06-20 16:38:30 -070020265 /*Notify UMAC*/
20266 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20267
20268 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20269 {
20270 /* Free the allocated buffer */
20271 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20272 }
20273 return WDI_STATUS_SUCCESS;
20274}
20275
20276/*==========================================================================
20277 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020278
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020281==========================================================================*/
20282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020283 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020284 when it wishes to send up a notification like the ones
20285 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020286
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020288
20289 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020291 wctsNotifyCBData: the callback data of the user
20292
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020294
20295 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020296*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020297void
Jeff Johnson295189b2012-06-20 16:38:30 -070020298WDI_NotifyMsgCTSCB
20299(
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 WCTS_NotifyEventType wctsEvent,
20302 void* wctsNotifyCBData
20303)
20304{
Jeff Johnsone7245742012-09-05 17:12:55 -070020305 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20307
20308 if (NULL == pWDICtx )
20309 {
20310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020313 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 }
20315
20316 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20317 {
20318 /* callback presumably occurred after close */
20319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020320 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020322 }
20323
20324 if ( WCTS_EVENT_OPEN == wctsEvent )
20325 {
20326 /*Flag must be set atomically as it is checked from incoming request
20327 functions*/
20328 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020330
20331 /*Nothing to do - so try to dequeue any pending request that may have
20332 occurred while we were trying to establish this*/
20333 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020335 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020336 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 {
20338 /*Flag must be set atomically as it is checked from incoming request
20339 functions*/
20340 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020341 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020342
20343 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020344 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020345 wpalMutexRelease(&pWDICtx->wptMutex);
20346
20347 /*Notify that the Control Channel is closed */
20348 wpalEventSet(&pWDICtx->wctsActionEvent);
20349 }
20350
20351}/*WDI_NotifyMsgCTSCB*/
20352
20353
20354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020355 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 when it wishes to send up a packet received over the
20357 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020358
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020360
20361 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 pMsg: the packet
20363 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020364 wctsRxMsgCBData: the callback data of the user
20365
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020367
20368 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020369*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020370void
20371WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020372(
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 void* pMsg,
20375 wpt_uint32 uLen,
20376 void* wctsRxMsgCBData
20377)
20378{
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 tHalMsgHeader *pHalMsgHeader;
20380 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20383
20384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 ( uLen < sizeof(tHalMsgHeader)))
20389 {
20390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020393 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 }
20395
20396 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20397 {
20398 /* callback presumably occurred after close */
20399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020400 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020401 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 }
20403
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 context - so no serialization is necessary here
20406 ! - revisit this assumption */
20407
20408 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20409
20410 if ( uLen != pHalMsgHeader->msgLen )
20411 {
20412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20413 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020414 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20415 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 }
20417
20418 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20419
20420 /*The message itself starts after the header*/
20421 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20422 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20423 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20424 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20425
20426
20427 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20428 {
20429 /*Stop the timer as the response was received */
20430 /*!UT - check for potential race conditions between stop and response */
20431 wpalTimerStop(&pWDICtx->wptResponseTimer);
20432 }
20433 /* Check if we receive a response message which is not expected */
20434 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20435 {
20436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20437 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20438 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20441 pWDICtx->wdiExpectedResponse);
20442 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20443 return;
20444 }
20445
20446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20447 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20448
20449 /*Post response event to the state machine*/
20450 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20451
20452}/*WDI_RXMsgCTSCB*/
20453
20454
20455/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020457========================================================================*/
20458
20459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020460 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020462
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 @param pWDICtx - pointer to the control block
20464
20465 @return Result of the function call
20466*/
20467WPT_INLINE WDI_Status
20468WDI_CleanCB
20469(
20470 WDI_ControlBlockType* pWDICtx
20471)
20472{
20473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20474
20475 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020477
Jeff Johnsone7245742012-09-05 17:12:55 -070020478 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20480 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20481
20482 WDI_ResetAssocSessions( pWDICtx );
20483
20484 return WDI_STATUS_SUCCESS;
20485}/*WDI_CleanCB*/
20486
20487
20488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020490
Jeff Johnsone7245742012-09-05 17:12:55 -070020491
20492 @param pWDICtx: pointer to the WLAN DAL context
20493 pEventData: pointer to the event information structure
20494
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 @see
20496 @return Result of the function call
20497*/
20498WPT_INLINE WDI_Status
20499WDI_ProcessRequest
20500(
20501 WDI_ControlBlockType* pWDICtx,
20502 WDI_EventInfoType* pEventData
20503)
20504{
20505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20506
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 already checked these pointers*/
20509
20510 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20511 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20514 "Calling request processing function for req %s (%d) %x",
20515 WDI_getReqMsgString(pEventData->wdiRequest),
20516 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20517 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20518 }
20519 else
20520 {
20521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020522 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020523 pEventData->wdiRequest);
20524 return WDI_STATUS_E_NOT_IMPLEMENT;
20525 }
20526}/*WDI_ProcessRequest*/
20527
20528
20529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 prefixes it with a send message header
20533
20534 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 wdiReqType: type of the request being sent
20536 uBufferLen: message buffer len
20537 pMsgBuffer: resulting allocated buffer
20538 pusDataOffset: offset in the buffer where the caller
20539 can start copying its message data
20540 puBufferSize: the resulting buffer size (offset+buff
20541 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020542
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 @see
20544 @return Result of the function call
20545*/
20546WDI_Status
20547WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020548(
20549 WDI_ControlBlockType* pWDICtx,
20550 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020551 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020552 wpt_uint8** pMsgBuffer,
20553 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 wpt_uint16* pusBufferSize
20555)
20556{
20557 tHalMsgHeader halMsgHeader;
20558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20559
Jeff Johnsone7245742012-09-05 17:12:55 -070020560 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 again*/
20562
20563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20568 if ( NULL == *pMsgBuffer )
20569 {
20570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20571 "Unable to allocate message buffer for req %s (%d)",
20572 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 }
20577
20578 /*-------------------------------------------------------------------------
20579 Fill in the message header
20580 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20582 /* Fill msgVersion */
20583#ifdef WLAN_FEATURE_11AC
20584 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020585 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020586 else
20587#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020588 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020589
Jeff Johnsone7245742012-09-05 17:12:55 -070020590 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20591 *pusDataOffset = sizeof(halMsgHeader);
20592 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20593
20594 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595}/*WDI_GetMessageBuffer*/
20596
20597
20598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 the CB
20602
20603 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020605
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 usSendSize size of the buffer to be sent
20607 pRspCb: response callback - save in the WDI
20608 CB
20609 pUserData: user data associated with the
20610 callback
20611 wdiExpectedResponse: the code of the response that is
20612 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020613
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 @see
20615 @return Result of the function call
20616*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020618WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020619(
20620 WDI_ControlBlockType* pWDICtx,
20621 wpt_uint8* pSendBuffer,
20622 wpt_uint32 usSendSize,
20623 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 void* pUserData,
20625 WDI_ResponseEnumType wdiExpectedResponse
20626)
20627{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020628 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020629 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20631
20632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 ------------------------------------------------------------------------*/
20635 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 pWDICtx->pfncRspCB = pRspCb;
20637 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638
20639 /*-----------------------------------------------------------------------
20640 Call the CTS to send this message over - free message afterwards
20641 - notify transport failure
20642 Note: CTS is reponsible for freeing the message buffer.
20643 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020644 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20645 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20646 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 "Failed to send message over the bus - catastrophic failure");
20650
Jeff Johnsond13512a2012-07-17 11:42:19 -070020651 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020653 else
20654 {
20655 /* even when message was placed in CTS deferred Q, we will treat it
20656 success but log this info
20657 */
20658 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20659 {
20660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20661 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20662 "response %s (%d)",
20663 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20664 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020665 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020666 }
20667 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020668
Jeff Johnsond13512a2012-07-17 11:42:19 -070020669 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 if ( NULL != pWDICtx->wdiReqStatusCB )
20671 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020672 /*Inform originator whether request went through or not*/
20673 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20674 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 pWDICtx->wdiReqStatusCB = NULL;
20676 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020677 callback(wdiStatus, callbackContext);
20678
20679 /*For WDI requests which have registered a request callback,
20680 inform the WDA caller of the same via setting the return value
20681 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20682 end up repeating the functonality in the req callback for the
20683 WDI_STATUS_E_FAILURE case*/
20684 if (wdiStatus == WDI_STATUS_E_FAILURE)
20685 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 }
20687
Jeff Johnsond13512a2012-07-17 11:42:19 -070020688 if ( wdiStatus == WDI_STATUS_SUCCESS )
20689 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 /*Start timer for the expected response */
20691 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020692
20693 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020694 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020695 }
20696 else
20697 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020698 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020699 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20700 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020701
Jeff Johnsond13512a2012-07-17 11:42:19 -070020702 return wdiStatus;
20703
Jeff Johnson295189b2012-06-20 16:38:30 -070020704}/*WDI_SendMsg*/
20705
20706
20707
20708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 the bus using the control transport and saves some info
20711 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020712
20713 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 pSendBuffer: buffer to be sent
20715 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020716
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 @see
20718 @return Result of the function call
20719*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020721WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020722(
20723 WDI_ControlBlockType* pWDICtx,
20724 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 wpt_uint32 usSendSize
20726)
20727{
20728 wpt_uint32 uStatus ;
20729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20730
20731 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020732 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 Note: CTS is reponsible for freeing the message buffer.
20734 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 (void*)pSendBuffer, usSendSize );
20737
20738 /*Inform Upper MAC about the outcome of the request*/
20739 if ( NULL != pWDICtx->wdiReqStatusCB )
20740 {
20741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20742 "Send indication status : %d", uStatus);
20743
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020744 /* even if CTS placed indication into its deferred Q, we treat it
20745 * as success and let CTS drain its queue as per smd interrupt to CTS
20746 */
20747 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 -070020748 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 }
20750
20751 /*If sending of the message failed - it is considered catastrophic and
20752 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020753 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20754 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20755
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 {
20757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020759
20760 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20761 return WDI_STATUS_E_FAILURE;
20762 }
20763
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020765}/*WDI_SendIndication*/
20766
20767
20768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 @brief WDI_DetectedDeviceError - called internally by DAL when
20770 it has detected a failure in the device
20771
20772 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 usErrorCode: error code detected by WDI or received
20774 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020775
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020778*/
20779void
20780WDI_DetectedDeviceError
20781(
20782 WDI_ControlBlockType* pWDICtx,
20783 wpt_uint16 usErrorCode
20784)
20785{
20786 WDI_LowLevelIndType wdiInd;
20787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20788
20789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20790 "Device Error detected code: %d - transitioning to stopped state",
20791 usErrorCode);
20792
20793 wpalMutexAcquire(&pWDICtx->wptMutex);
20794
20795 WDI_STATableStop(pWDICtx);
20796
20797 WDI_ResetAssocSessions(pWDICtx);
20798
20799 /*Set the expected state transition to stopped - because the device
20800 experienced a failure*/
20801 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20802
20803 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020805
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020807
20808 /*TO DO: - there should be an attempt to reset the device here*/
20809
20810 wpalMutexRelease(&pWDICtx->wptMutex);
20811
20812 /*------------------------------------------------------------------------
20813 Notify UMAC if a handler is registered
20814 ------------------------------------------------------------------------*/
20815 if (pWDICtx->wdiLowLevelIndCB)
20816 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020817 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20818 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819
20820 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20821 }
20822}/*WDI_DetectedDeviceError*/
20823
20824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 we started on send message has expire - this should
20827 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 reply - trigger catastrophic failure
20829 @param
20830
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020832
20833 @see
20834 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020835*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020836void
Jeff Johnson295189b2012-06-20 16:38:30 -070020837WDI_ResponseTimerCB
20838(
20839 void *pUserData
20840)
20841{
20842 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20844
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020845 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 }
20852
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020853 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020854 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020855
20856 /* If response timer is running at this time that means this timer
20857 * event is not for the last request but rather last-to-last request and
20858 * this timer event has come after we recevied respone for last-to-last
20859 * message
20860 */
20861 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20862 {
20863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20864 "WDI_ResponseTimerCB: timer in running state on timer event, "
20865 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20866 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20867 return;
20868 }
20869
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020870 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 {
20872
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020875 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020877 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20878 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020879
20880 /* WDI timeout means Riva is not responding or SMD communication to Riva
20881 * is not happening. The only possible way to recover from this error
20882 * is to initiate SSR from APPS.
20883 * There is also an option to re-enable wifi, which will eventually
20884 * trigger SSR
20885 */
20886 if (gWDICb.bEnableSSR == false)
20887 {
20888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20889 "SSR is not enabled on WDI timeout");
20890 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20891 return;
20892 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020893#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020894 wpalWcnssResetIntr();
20895 /* if this timer fires, it means Riva did not receive the FIQ */
20896 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020897#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020898 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20899 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020900#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 }
20902 else
20903 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020905 "Timeout occurred but not waiting for any response %d "
20906 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20907 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20908 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 }
20910
20911 return;
20912
20913}/*WDI_ResponseTimerCB*/
20914
20915
20916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020918
Jeff Johnsone7245742012-09-05 17:12:55 -070020919
20920 @param pWDICtx: pointer to the WLAN DAL context
20921 pEventData: pointer to the event information structure
20922
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 @see
20924 @return Result of the function call
20925*/
20926WPT_INLINE WDI_Status
20927WDI_ProcessResponse
20928(
20929 WDI_ControlBlockType* pWDICtx,
20930 WDI_EventInfoType* pEventData
20931)
20932{
20933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20934
Jeff Johnsone7245742012-09-05 17:12:55 -070020935 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 already checked these pointers
20937 ! - revisit this assumption */
20938 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20939 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 WDI_getRespMsgString(pEventData->wdiResponse),
20944 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20945 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20946 }
20947 else
20948 {
20949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 pEventData->wdiResponse);
20952 return WDI_STATUS_E_NOT_IMPLEMENT;
20953 }
20954}/*WDI_ProcessResponse*/
20955
20956
20957/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020958 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020959=========================================================================*/
20960
20961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 @brief Utility function used by the DAL Core to help queue a
20963 request that cannot be processed right away.
20964 @param
20965
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 pWDICtx: - pointer to the WDI control block
20967 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020968 queued
20969
20970 @see
20971 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020972*/
20973WDI_Status
20974WDI_QueuePendingReq
20975(
20976 WDI_ControlBlockType* pWDICtx,
20977 WDI_EventInfoType* pEventData
20978)
20979{
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20984
20985 if ( NULL == pEventDataQueue )
20986 {
20987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 WDI_ASSERT(0);
20990 return WDI_STATUS_MEM_FAILURE;
20991 }
20992
20993 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20994 pEventDataQueue->pUserData = pEventData->pUserData;
20995 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20996 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020998
20999 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21000 {
21001 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021002
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 if ( NULL == pEventInfo )
21004 {
21005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 WDI_ASSERT(0);
21008 wpalMemoryFree(pEventDataQueue);
21009 return WDI_STATUS_MEM_FAILURE;
21010 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021011
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21013
21014 }
21015 pEventDataQueue->pEventData = pEventInfo;
21016
21017 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021019
Jeff Johnsone7245742012-09-05 17:12:55 -070021020 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021021
21022 return WDI_STATUS_SUCCESS;
21023}/*WDI_QueuePendingReq*/
21024
21025/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 @param
21029
21030 pMsg - pointer to the message
21031
21032 @see
21033 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021034*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021035void
Jeff Johnson295189b2012-06-20 16:38:30 -070021036WDI_PALCtrlMsgCB
21037(
21038 wpt_msg *pMsg
21039)
21040{
21041 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 WDI_ControlBlockType* pWDICtx = NULL;
21043 WDI_Status wdiStatus;
21044 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 void* pUserData;
21046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21047
21048 if (( NULL == pMsg )||
21049 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21050 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21051 {
21052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 }
21057
21058 /*Transition back to the state that we had before serialization
21059 - serialization transitions us to BUSY to stop any incomming requests
21060 ! TO DO L: possible race condition here if a request comes in between the
21061 state transition and the post function*/
21062
Jeff Johnsone7245742012-09-05 17:12:55 -070021063 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021064
21065 /*-----------------------------------------------------------------------
21066 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021067 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 -----------------------------------------------------------------------*/
21069 switch ( pEventData->wdiRequest )
21070 {
21071
Jeff Johnsone7245742012-09-05 17:12:55 -070021072 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21074 break;
21075
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 case WDI_NV_DOWNLOAD_REQ:
21077 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21078 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21079 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21080 {
21081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021082 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21084 }
21085 else
21086 {
21087 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21088 }
21089
21090 break;
21091
21092 default:
21093 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21094 break;
21095 }/*switch ( pEventData->wdiRequest )*/
21096
21097 if ( WDI_STATUS_SUCCESS != wdiStatus )
21098 {
21099 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21100
21101 if ( NULL != pfnReqStatusCB )
21102 {
21103 /*Fail the request*/
21104 pfnReqStatusCB( wdiStatus, pUserData);
21105 }
21106 }
21107
21108 /* Free data - that was allocated when queueing*/
21109 if( pEventData != NULL )
21110 {
21111 if( pEventData->pEventData != NULL )
21112 {
21113 wpalMemoryFree(pEventData->pEventData);
21114 }
21115 wpalMemoryFree(pEventData);
21116 }
21117
21118 if( pMsg != NULL )
21119 {
21120 wpalMemoryFree(pMsg);
21121 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021122
Jeff Johnson295189b2012-06-20 16:38:30 -070021123}/*WDI_PALCtrlMsgCB*/
21124
21125/**
21126 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 and schedule for execution a pending request
21128 @param
21129
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 pWDICtx: - pointer to the WDI control block
21131 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021132 queued
21133
21134 @see
21135 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021136*/
21137WDI_Status
21138WDI_DequeuePendingReq
21139(
21140 WDI_ControlBlockType* pWDICtx
21141)
21142{
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21147
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021149
21150 if ( NULL == pNode )
21151 {
21152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 return WDI_STATUS_SUCCESS;
21155 }
21156
21157 /*The node actually points to the 1st element inside the Event Data struct -
21158 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021160
21161 /*Serialize processing in the control thread
21162 !TO DO: - check to see if these are all the messages params that need
21163 to be filled in*/
21164 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21165
21166 if ( NULL == palMsg )
21167 {
21168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 palMsg->callback = WDI_PALCtrlMsgCB;
21175 palMsg->ptr = pEventData;
21176
21177 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 palMsg->val = pWDICtx->uGlobalState;
21179
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 /*Transition back to BUSY as we need to handle a queued request*/
21181 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021182
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21184
21185 return WDI_STATUS_PENDING;
21186}/*WDI_DequeuePendingReq*/
21187
21188
21189/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021190 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 away.- The assoc requests will be queued by BSSID
21193 @param
21194
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 pWDICtx: - pointer to the WDI control block
21196 pEventData: pointer to the evnt info that needs to be queued
21197 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021198
21199 @see
21200 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021201*/
21202WDI_Status
21203WDI_QueueNewAssocRequest
21204(
21205 WDI_ControlBlockType* pWDICtx,
21206 WDI_EventInfoType* pEventData,
21207 wpt_macAddr macBSSID
21208)
21209{
Jeff Johnsone7245742012-09-05 17:12:55 -070021210 wpt_uint8 i;
21211 WDI_BSSSessionType* pSession = NULL;
21212 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021214 void* pEventInfo;
21215 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021217
Jeff Johnsone7245742012-09-05 17:12:55 -070021218
21219 /*------------------------------------------------------------------------
21220 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 ------------------------------------------------------------------------*/
21222 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21223 {
21224 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21225 {
21226 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021227 pSession = &pWDICtx->aBSSSessions[i];
21228 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 }
21230 }
21231
21232 if ( i >= WDI_MAX_BSS_SESSIONS )
21233 {
21234 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021237
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 /*------------------------------------------------------------------------
21239 Fill in the BSSID for this session and set the usage flag
21240 ------------------------------------------------------------------------*/
21241 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021242 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021243
21244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 ------------------------------------------------------------------------*/
21247 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21248 if ( NULL == pEventDataQueue )
21249 {
21250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021251 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 WDI_ASSERT(0);
21253 return WDI_STATUS_MEM_FAILURE;
21254 }
21255
21256 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21257 if ( NULL == pSessionIdElement )
21258 {
21259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021260 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 WDI_ASSERT(0);
21262 wpalMemoryFree(pEventDataQueue);
21263 return WDI_STATUS_MEM_FAILURE;
21264 }
21265
21266 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21267 if ( NULL == pEventInfo )
21268 {
21269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021270 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021271 WDI_ASSERT(0);
21272 wpalMemoryFree(pSessionIdElement);
21273 wpalMemoryFree(pEventDataQueue);
21274 return WDI_STATUS_MEM_FAILURE;
21275 }
21276
21277 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21278 pEventDataQueue->pUserData = pEventData->pUserData;
21279 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21280 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021282
21283 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21284 pEventDataQueue->pEventData = pEventInfo;
21285
21286 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021287 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021288
21289 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021291
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021293
21294 /*We need to maintain a separate list that keeps track of the order in which
21295 the new assoc requests are being queued such that we can start processing
21296 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 pSessionIdElement->ucIndex = i;
21298 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021299
21300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21301 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021302 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021303
21304 /*Return pending as this is what the status of the request is since it has
21305 been queued*/
21306 return WDI_STATUS_PENDING;
21307}/*WDI_QueueNewAssocRequest*/
21308
21309/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021310 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 away.- The assoc requests will be queued by BSSID
21313 @param
21314
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 pWDICtx: - pointer to the WDI control block
21316 pSession: - session in which to queue
21317 pEventData: pointer to the event info that needs to be
21318 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021319
21320 @see
21321 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021322*/
21323WDI_Status
21324WDI_QueueAssocRequest
21325(
21326 WDI_ControlBlockType* pWDICtx,
21327 WDI_BSSSessionType* pSession,
21328 WDI_EventInfoType* pEventData
21329)
21330{
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021335
21336 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 Sanity check
21338 ------------------------------------------------------------------------*/
21339 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21340 {
21341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021343
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 }
21346
21347 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 ------------------------------------------------------------------------*/
21350 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21351 if ( NULL == pEventDataQueue )
21352 {
21353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021354 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 WDI_ASSERT(0);
21356 return WDI_STATUS_MEM_FAILURE;
21357 }
21358
21359 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21360 if ( NULL == pEventInfo )
21361 {
21362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21363 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021364 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 WDI_ASSERT(0);
21366 wpalMemoryFree(pEventDataQueue);
21367 return WDI_STATUS_MEM_FAILURE;
21368 }
21369
21370 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21371 pEventDataQueue->pUserData = pEventData->pUserData;
21372 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21373 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 pEventDataQueue->pEventData = pEventInfo;
21376
21377 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21378
21379 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021381
21382 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021384
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021386
21387 /*The result of this operation is pending because the request has been
21388 queued and it will be processed at a later moment in time */
21389 return WDI_STATUS_PENDING;
21390}/*WDI_QueueAssocRequest*/
21391
21392/**
21393 @brief Utility function used by the DAL Core to help dequeue
21394 an association request that was pending
21395 The request will be queued up in front of the main
21396 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021397 @param
21398
Jeff Johnson295189b2012-06-20 16:38:30 -070021399 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021400
21401
21402 @see
21403 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021404*/
21405WDI_Status
21406WDI_DequeueAssocRequest
21407(
21408 WDI_ControlBlockType* pWDICtx
21409)
21410{
Jeff Johnsone7245742012-09-05 17:12:55 -070021411 wpt_list_node* pNode = NULL;
21412 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413 WDI_BSSSessionType* pSession;
21414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021415
21416 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 Sanity check
21418 ------------------------------------------------------------------------*/
21419 if ( NULL == pWDICtx )
21420 {
21421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021423
Jeff Johnsone7245742012-09-05 17:12:55 -070021424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021425 }
21426
21427 /*------------------------------------------------------------------------
21428 An association has been completed => a new association can occur
21429 Check to see if there are any pending associations ->
21430 If so , transfer all the pending requests into the busy queue for
21431 processing
21432 These requests have arrived prior to the requests in the busy queue
21433 (bc they needed to be processed in order to be placed in this queue)
21434 => they will be placed at the front of the busy queue
21435 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021437
21438 if ( NULL == pNode )
21439 {
21440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 return WDI_STATUS_SUCCESS;
21443 }
21444
21445 /*The node actually points to the 1st element inside the Session Id struct -
21446 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021448
21449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21450 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21451
21452 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21453 {
21454 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021455
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 the front of the main waiting queue for subsequent execution*/
21458 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 while ( NULL != pNode )
21460 {
21461 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021462 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21463 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 }
21467 else
21468 {
21469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 WPAL_ASSERT(0);
21472 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021475
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21477 wpalMemoryFree(pSessionIdElement);
21478 return WDI_STATUS_SUCCESS;
21479}/*WDI_DequeueAssocRequest*/
21480
21481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 pending requests - all req cb will be called with
21484 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 @param
21486
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021488
21489 @see
21490 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021491*/
21492WDI_Status
21493WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021494(
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 WDI_ControlBlockType* pWDICtx
21496)
21497{
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 void* pUserData;
21502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21503
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021505
21506 /*------------------------------------------------------------------------
21507 Go through all the requests and fail them - this will only be called
21508 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 ------------------------------------------------------------------------*/
21511 while( pNode )
21512 {
21513 /*The node actually points to the 1st element inside the Event Data struct -
21514 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021515 pEventDataQueue = (WDI_EventInfoType*)pNode;
21516
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21518 if ( NULL != pfnReqStatusCB )
21519 {
21520 /*Fail the request*/
21521 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21522 }
21523 /* Free data - that was allocated when queueing */
21524 if ( pEventDataQueue->pEventData != NULL )
21525 {
21526 wpalMemoryFree(pEventDataQueue->pEventData);
21527 }
21528 wpalMemoryFree(pEventDataQueue);
21529
21530 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21531 {
21532 break;
21533 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 }
21535
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 return WDI_STATUS_SUCCESS;
21537}/*WDI_ClearPendingRequests*/
21538
21539/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 @brief Helper routine used to init the BSS Sessions in the WDI control block
21541
21542
21543 @param pWDICtx: pointer to the WLAN DAL context
21544
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 @see
21546*/
21547void
21548WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021549(
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 WDI_ControlBlockType* pWDICtx
21551)
21552{
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21555
21556 /*-------------------------------------------------------------------------
21557 No Sanity check
21558 -------------------------------------------------------------------------*/
21559 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21563 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21564 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21565 }
21566}/*WDI_ResetAssocSessions*/
21567
21568/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021569 @brief Helper routine used to find a session based on the BSSID
21570
21571
21572 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 pSession: pointer to the session (if found)
21575
Jeff Johnson295189b2012-06-20 16:38:30 -070021576 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021578*/
21579wpt_uint8
21580WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021581(
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 WDI_ControlBlockType* pWDICtx,
21583 wpt_macAddr macBSSID,
21584 WDI_BSSSessionType** ppSession
21585)
21586{
Jeff Johnsone7245742012-09-05 17:12:55 -070021587 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21589
21590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 -------------------------------------------------------------------------*/
21593 if ( NULL == ppSession )
21594 {
21595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021596 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 }
21599
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021601
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 /*------------------------------------------------------------------------
21603 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021604 ------------------------------------------------------------------------*/
21605 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21606 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021607 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21608 (eWLAN_PAL_TRUE ==
21609 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21610 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 {
21612 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 return i;
21615 }
21616 }
21617
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021619}/*WDI_FindAssocSession*/
21620
21621/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 @brief Helper routine used to find a session based on the BSSID
21623
21624
21625 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 ucBSSIdx: BSS Index of the session
21627 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021628
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021631*/
21632wpt_uint8
21633WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021634(
Jeff Johnson295189b2012-06-20 16:38:30 -070021635 WDI_ControlBlockType* pWDICtx,
21636 wpt_uint16 ucBSSIdx,
21637 WDI_BSSSessionType** ppSession
21638)
21639{
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21642
21643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021645 -------------------------------------------------------------------------*/
21646 if ( NULL == ppSession )
21647 {
21648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021649 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 }
21652
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021654
Jeff Johnsone7245742012-09-05 17:12:55 -070021655 /*------------------------------------------------------------------------
21656 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 ------------------------------------------------------------------------*/
21658 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21659 {
21660 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21661 {
21662 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 return i;
21665 }
21666 }
21667
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669}/*WDI_FindAssocSessionByBSSIdx*/
21670
21671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 @brief Helper routine used to find a session based on the BSSID
21673
21674
21675 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 ucBSSIdx: BSS Index of the session
21677 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021678
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021681*/
21682wpt_uint8
21683WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021684(
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 WDI_ControlBlockType* pWDICtx,
21686 wpt_uint16 usIdx,
21687 WDI_BSSSessionType** ppSession
21688)
21689{
21690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21691
21692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 -------------------------------------------------------------------------*/
21695 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21696 {
21697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021698 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 }
21701
21702 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021704
21705 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021706
Jeff Johnson295189b2012-06-20 16:38:30 -070021707}/*WDI_FindAssocSessionByBSSIdx*/
21708
21709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021710 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021712
21713
21714 @param pWDICtx: pointer to the WLAN DAL context
21715 pSession: pointer to the session (if found)
21716
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021718 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021719*/
21720wpt_uint8
21721WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021722(
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 WDI_ControlBlockType* pWDICtx,
21724 WDI_BSSSessionType** ppSession
21725)
21726{
Jeff Johnsone7245742012-09-05 17:12:55 -070021727 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 -------------------------------------------------------------------------*/
21732 if ( NULL == ppSession )
21733 {
21734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021735 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 }
21738
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021740
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 /*------------------------------------------------------------------------
21742 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 ------------------------------------------------------------------------*/
21744 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21745 {
21746 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21747 {
21748 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 return i;
21751 }
21752 }
21753
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755}/*WDI_FindEmptySession*/
21756
21757
21758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021761
21762
21763 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021764 macBSSID: pointer to BSSID. If NULL, get all the session.
21765 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21766 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21767 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 @see
21769 @return Number of sessions in use
21770*/
21771wpt_uint8
21772WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021773(
Hoonki Lee26599972013-04-24 01:21:58 -070021774 WDI_ControlBlockType* pWDICtx,
21775 wpt_macAddr macBSSID,
21776 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021777)
21778{
Jeff Johnsone7245742012-09-05 17:12:55 -070021779 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021781
21782 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 Count all sessions in use
21784 ------------------------------------------------------------------------*/
21785 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21786 {
Hoonki Lee26599972013-04-24 01:21:58 -070021787 if ( macBSSID && skipBSSID &&
21788 (eWLAN_PAL_TRUE ==
21789 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21790 WDI_MAC_ADDR_LEN)))
21791 {
21792 continue;
21793 }
21794 else if ( pWDICtx->aBSSSessions[i].bInUse )
21795 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021797 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 }
21799
Jeff Johnsone7245742012-09-05 17:12:55 -070021800 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021801}/*WDI_GetActiveSessionsCount*/
21802
21803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021804 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021806
21807
21808 @param pWDICtx: pointer to the WLAN DAL context
21809 pSession: pointer to the session (if found)
21810
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021813*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021814void
Jeff Johnson295189b2012-06-20 16:38:30 -070021815WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021816(
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 WDI_ControlBlockType* pWDICtx,
21818 WDI_BSSSessionType* ppSession
21819)
21820{
21821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 -------------------------------------------------------------------------*/
21824 if ( NULL == ppSession )
21825 {
21826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021827 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 }
21830
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 /*------------------------------------------------------------------------
21832 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021833 ------------------------------------------------------------------------*/
21834 wpal_list_destroy(&ppSession->wptPendingQueue);
21835 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021836 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21837 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21839 wpal_list_init(&ppSession->wptPendingQueue);
21840
21841}/*WDI_DeleteSession*/
21842
21843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 @param
21847
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 WDI_AddStaParams: - pointer to the WDI Add STA params
21849 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021850
21851 @see
21852 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021853*/
21854void
21855WDI_AddBcastSTAtoSTATable
21856(
21857 WDI_ControlBlockType* pWDICtx,
21858 WDI_AddStaParams * staParams,
21859 wpt_uint16 usBcastStaIdx
21860)
21861{
21862 WDI_AddStaParams wdiAddSTAParam = {0};
21863 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21865
21866 /*---------------------------------------------------------------------
21867 Sanity check
21868 ---------------------------------------------------------------------*/
21869 if ( NULL == staParams )
21870 {
21871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021873
Jeff Johnsone7245742012-09-05 17:12:55 -070021874 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021875 }
21876
21877 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21878 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21879 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21880 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21881 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21882 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21883 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21884 WDI_MAC_ADDR_LEN );
21885 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21886 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21887 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21888 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21889 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21890 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21891 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021892
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21894}
21895
21896/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021897 @brief NV blob will be divided into fragments of size 4kb and
21898 Sent to HAL
21899
21900 @param pWDICtx: pointer to the WLAN DAL context
21901 pEventData: pointer to the event information structure
21902
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 @see
21904 @return Result of the function call
21905 */
21906
21907WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021908(
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 WDI_ControlBlockType* pWDICtx,
21910 WDI_EventInfoType* pEventData
21911)
21912{
21913
21914 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21915 wpt_uint8* pSendBuffer = NULL;
21916 wpt_uint16 usDataOffset = 0;
21917 wpt_uint16 usSendSize = 0;
21918 wpt_uint16 usCurrentFragmentSize =0;
21919 wpt_uint8* pSrcBuffer = NULL;
21920 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21921 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21922
21923 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21924 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21925 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21926
Jeff Johnsone7245742012-09-05 17:12:55 -070021927 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21929
21930 /* Update the current Fragment Number */
21931 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21932
21933 /*Update the HAL REQ structure */
21934 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21935 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21936 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21937
21938 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021939 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 image will be sent to HAL*/
21941
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21948 usCurrentFragmentSize = FRAGMENT_SIZE;
21949
21950 /*Update the HAL REQ structure */
21951 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21952 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21953
21954 }
21955 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 usCurrentFragmentSize = FRAGMENT_SIZE;
21958
21959 /*Update the HAL REQ structure */
21960 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21961 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21962 }
21963
21964 /*-----------------------------------------------------------------------
21965 Get message buffer
21966 -----------------------------------------------------------------------*/
21967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21968 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21969 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21972 {
21973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21974 "Unable to get send buffer in NV Download req %x %x ",
21975 pEventData, pwdiNvDownloadReqParams);
21976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 }
21979
21980 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021981 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21983
21984 /* Appending the NV image fragment */
21985 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21986 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21987 usCurrentFragmentSize);
21988
21989 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21993 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 WDI_NV_DOWNLOAD_RESP);
21995
21996}
Jeff Johnsone7245742012-09-05 17:12:55 -070021997/*============================================================================
21998 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 ============================================================================*/
22000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 @brief Helper routine used to find a session based on the BSSID
22002 @param pContext: pointer to the WLAN DAL context
22003 @param pDPContext: pointer to the Datapath context
22004
Jeff Johnson295189b2012-06-20 16:38:30 -070022005 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022007*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022008WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022009WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22010{
22011 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22012
22013 pCB->pDPContext = pDPContext;
22014 return;
22015}
22016
22017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022018 @brief Helper routine used to find a session based on the BSSID
22019
22020
22021 @param pContext: pointer to the WLAN DAL context
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 @see
22024 @return pointer to Datapath context
22025*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022026WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022027WDI_DS_GetDatapathContext (void *pContext)
22028{
22029 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22030 return pCB->pDPContext;
22031}
22032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 @brief Helper routine used to find a session based on the BSSID
22034
22035
22036 @param pContext: pointer to the WLAN DAL context
22037 @param pDTDriverContext: pointer to the Transport Driver context
22038
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 @see
22040 @return void
22041*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022042WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022043WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22044{
22045 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22046
22047 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022049}
22050
22051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 @brief Helper routine used to find a session based on the BSSID
22053
22054
22055 @param pWDICtx: pointer to the WLAN DAL context
22056
Jeff Johnson295189b2012-06-20 16:38:30 -070022057 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022059*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022060WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022061WDT_GetTransportDriverContext (void *pContext)
22062{
22063 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022064 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022065}
22066
Jeff Johnsone7245742012-09-05 17:12:55 -070022067/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 Helper inline converters
22069 ============================================================================*/
22070/*Convert WDI driver type into HAL driver type*/
22071WPT_STATIC WPT_INLINE WDI_Status
22072WDI_HAL_2_WDI_STATUS
22073(
22074 eHalStatus halStatus
22075)
22076{
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 the chances of getting inlined*/
22079 switch( halStatus )
22080 {
22081 case eHAL_STATUS_SUCCESS:
22082 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22083 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22084 return WDI_STATUS_SUCCESS;
22085 case eHAL_STATUS_FAILURE:
22086 return WDI_STATUS_E_FAILURE;
22087 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022088 return WDI_STATUS_MEM_FAILURE;
22089 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 default:
22092 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22093 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022094
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022096}/*WDI_HAL_2_WDI_STATUS*/
22097
22098/*Convert WDI request type into HAL request type*/
22099WPT_STATIC WPT_INLINE tHalHostMsgType
22100WDI_2_HAL_REQ_TYPE
22101(
22102 WDI_RequestEnumType wdiReqType
22103)
22104{
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 the chances of getting inlined*/
22107 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 return WLAN_HAL_RMV_STAKEY_REQ;
22144 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022145 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022146 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022151 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 case WDI_DEL_BA_REQ:
22153 return WLAN_HAL_DEL_BA_REQ;
22154#ifdef FEATURE_WLAN_CCX
22155 case WDI_TSM_STATS_REQ:
22156 return WLAN_HAL_TSM_STATS_REQ;
22157#endif
22158 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 case WDI_ADD_BA_SESSION_REQ:
22169 return WLAN_HAL_ADD_BA_SESSION_REQ;
22170 case WDI_TRIGGER_BA_REQ:
22171 return WLAN_HAL_TRIGGER_BA_REQ;
22172 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22177 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22178 case WDI_SET_MAX_TX_POWER_REQ:
22179 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022180 case WDI_SET_TX_POWER_REQ:
22181 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22183 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022184#ifdef FEATURE_WLAN_TDLS
22185 case WDI_TDLS_LINK_ESTABLISH_REQ:
22186 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22187#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022195 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022206 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 case WDI_REM_BEACON_FILTER_REQ:
22209 return WLAN_HAL_REM_BCN_FILTER_REQ;
22210 case WDI_SET_RSSI_THRESHOLDS_REQ:
22211 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22212 case WDI_HOST_OFFLOAD_REQ:
22213 return WLAN_HAL_HOST_OFFLOAD_REQ;
22214 case WDI_WOWL_ADD_BC_PTRN_REQ:
22215 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22216 case WDI_WOWL_DEL_BC_PTRN_REQ:
22217 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22218 case WDI_WOWL_ENTER_REQ:
22219 return WLAN_HAL_ENTER_WOWL_REQ;
22220 case WDI_WOWL_EXIT_REQ:
22221 return WLAN_HAL_EXIT_WOWL_REQ;
22222 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22223 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22224 case WDI_NV_DOWNLOAD_REQ:
22225 return WLAN_HAL_DOWNLOAD_NV_REQ;
22226 case WDI_FLUSH_AC_REQ:
22227 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22228 case WDI_BTAMP_EVENT_REQ:
22229 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22230#ifdef WLAN_FEATURE_VOWIFI_11R
22231 case WDI_AGGR_ADD_TS_REQ:
22232 return WLAN_HAL_AGGR_ADD_TS_REQ;
22233#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022234 case WDI_FTM_CMD_REQ:
22235 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 case WDI_ADD_STA_SELF_REQ:
22237 return WLAN_HAL_ADD_STA_SELF_REQ;
22238 case WDI_DEL_STA_SELF_REQ:
22239 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022240#ifdef FEATURE_OEM_DATA_SUPPORT
22241 case WDI_START_OEM_DATA_REQ:
22242 return WLAN_HAL_START_OEM_DATA_REQ;
22243#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022244 case WDI_HOST_RESUME_REQ:
22245 return WLAN_HAL_HOST_RESUME_REQ;
22246 case WDI_HOST_SUSPEND_IND:
22247 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022248 case WDI_TRAFFIC_STATS_IND:
22249 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022250#ifdef WLAN_FEATURE_11W
22251 case WDI_EXCLUDE_UNENCRYPTED_IND:
22252 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22253#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 case WDI_KEEP_ALIVE_REQ:
22255 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022256#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022257 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22258 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022259#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022260#ifdef FEATURE_WLAN_SCAN_PNO
22261 case WDI_SET_PREF_NETWORK_REQ:
22262 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22263 case WDI_SET_RSSI_FILTER_REQ:
22264 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22265 case WDI_UPDATE_SCAN_PARAMS_REQ:
22266 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22267#endif // FEATURE_WLAN_SCAN_PNO
22268 case WDI_SET_TX_PER_TRACKING_REQ:
22269 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22270#ifdef WLAN_FEATURE_PACKET_FILTERING
22271 case WDI_8023_MULTICAST_LIST_REQ:
22272 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22273 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22276 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22277 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22278 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22279#endif // WLAN_FEATURE_PACKET_FILTERING
22280 case WDI_HAL_DUMP_CMD_REQ:
22281 return WLAN_HAL_DUMP_COMMAND_REQ;
22282#ifdef WLAN_FEATURE_GTK_OFFLOAD
22283 case WDI_GTK_OFFLOAD_REQ:
22284 return WLAN_HAL_GTK_OFFLOAD_REQ;
22285 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22286 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22287#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22288
22289 case WDI_INIT_SCAN_CON_REQ:
22290 return WLAN_HAL_INIT_SCAN_CON_REQ;
22291 case WDI_SET_POWER_PARAMS_REQ:
22292 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22293 case WDI_SET_TM_LEVEL_REQ:
22294 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22295 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22296 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022297#ifdef WLAN_FEATURE_11AC
22298 case WDI_UPDATE_VHT_OP_MODE_REQ:
22299 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22300#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022301 case WDI_GET_ROAM_RSSI_REQ:
22302 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022303 case WDI_DHCP_START_IND:
22304 return WLAN_HAL_DHCP_START_IND;
22305 case WDI_DHCP_STOP_IND:
22306 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022307#ifdef FEATURE_WLAN_LPHB
22308 case WDI_LPHB_CFG_REQ:
22309 return WLAN_HAL_LPHB_CFG_REQ;
22310#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022312 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022314
Jeff Johnson295189b2012-06-20 16:38:30 -070022315}/*WDI_2_HAL_REQ_TYPE*/
22316
22317/*Convert WDI response type into HAL response type*/
22318WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22319HAL_2_WDI_RSP_TYPE
22320(
22321 tHalHostMsgType halMsg
22322)
22323{
Jeff Johnsone7245742012-09-05 17:12:55 -070022324 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 the chances of getting inlined*/
22326 switch( halMsg )
22327 {
22328 case WLAN_HAL_START_RSP:
22329 return WDI_START_RESP;
22330 case WLAN_HAL_STOP_RSP:
22331 return WDI_STOP_RESP;
22332 case WLAN_HAL_INIT_SCAN_RSP:
22333 return WDI_INIT_SCAN_RESP;
22334 case WLAN_HAL_START_SCAN_RSP:
22335 return WDI_START_SCAN_RESP;
22336 case WLAN_HAL_END_SCAN_RSP:
22337 return WDI_END_SCAN_RESP;
22338 case WLAN_HAL_FINISH_SCAN_RSP:
22339 return WDI_FINISH_SCAN_RESP;
22340 case WLAN_HAL_CONFIG_STA_RSP:
22341 return WDI_CONFIG_STA_RESP;
22342 case WLAN_HAL_DELETE_STA_RSP:
22343 return WDI_DEL_STA_RESP;
22344 case WLAN_HAL_CONFIG_BSS_RSP:
22345 return WDI_CONFIG_BSS_RESP;
22346 case WLAN_HAL_DELETE_BSS_RSP:
22347 return WDI_DEL_BSS_RESP;
22348 case WLAN_HAL_JOIN_RSP:
22349 return WDI_JOIN_RESP;
22350 case WLAN_HAL_POST_ASSOC_RSP:
22351 return WDI_POST_ASSOC_RESP;
22352 case WLAN_HAL_SET_BSSKEY_RSP:
22353 return WDI_SET_BSS_KEY_RESP;
22354 case WLAN_HAL_SET_STAKEY_RSP:
22355 return WDI_SET_STA_KEY_RESP;
22356 case WLAN_HAL_RMV_BSSKEY_RSP:
22357 return WDI_RMV_BSS_KEY_RESP;
22358 case WLAN_HAL_RMV_STAKEY_RSP:
22359 return WDI_RMV_STA_KEY_RESP;
22360 case WLAN_HAL_SET_BCASTKEY_RSP:
22361 return WDI_SET_STA_BCAST_KEY_RESP;
22362 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22363 // return WDI_RMV_STA_BCAST_KEY_RESP;
22364 case WLAN_HAL_ADD_TS_RSP:
22365 return WDI_ADD_TS_RESP;
22366 case WLAN_HAL_DEL_TS_RSP:
22367 return WDI_DEL_TS_RESP;
22368 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22369 return WDI_UPD_EDCA_PRMS_RESP;
22370 case WLAN_HAL_ADD_BA_RSP:
22371 return WDI_ADD_BA_RESP;
22372 case WLAN_HAL_DEL_BA_RSP:
22373 return WDI_DEL_BA_RESP;
22374#ifdef FEATURE_WLAN_CCX
22375 case WLAN_HAL_TSM_STATS_RSP:
22376 return WDI_TSM_STATS_RESP;
22377#endif
22378 case WLAN_HAL_CH_SWITCH_RSP:
22379 return WDI_CH_SWITCH_RESP;
22380 case WLAN_HAL_SET_LINK_ST_RSP:
22381 return WDI_SET_LINK_ST_RESP;
22382 case WLAN_HAL_GET_STATS_RSP:
22383 return WDI_GET_STATS_RESP;
22384 case WLAN_HAL_UPDATE_CFG_RSP:
22385 return WDI_UPDATE_CFG_RESP;
22386 case WLAN_HAL_ADD_BA_SESSION_RSP:
22387 return WDI_ADD_BA_SESSION_RESP;
22388 case WLAN_HAL_TRIGGER_BA_RSP:
22389 return WDI_TRIGGER_BA_RESP;
22390 case WLAN_HAL_UPDATE_BEACON_RSP:
22391 return WDI_UPD_BCON_PRMS_RESP;
22392 case WLAN_HAL_SEND_BEACON_RSP:
22393 return WDI_SND_BCON_RESP;
22394 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22395 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22396 /*Indications*/
22397 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22398 return WDI_HAL_RSSI_NOTIFICATION_IND;
22399 case WLAN_HAL_MISSED_BEACON_IND:
22400 return WDI_HAL_MISSED_BEACON_IND;
22401 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22402 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22403 case WLAN_HAL_MIC_FAILURE_IND:
22404 return WDI_HAL_MIC_FAILURE_IND;
22405 case WLAN_HAL_FATAL_ERROR_IND:
22406 return WDI_HAL_FATAL_ERROR_IND;
22407 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22408 return WDI_HAL_DEL_STA_IND;
22409 case WLAN_HAL_COEX_IND:
22410 return WDI_HAL_COEX_IND;
22411 case WLAN_HAL_OTA_TX_COMPL_IND:
22412 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 case WLAN_HAL_P2P_NOA_ATTR_IND:
22414 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022415 case WLAN_HAL_P2P_NOA_START_IND:
22416 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 case WLAN_HAL_TX_PER_HIT_IND:
22418 return WDI_HAL_TX_PER_HIT_IND;
22419 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22420 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022421 case WLAN_HAL_SET_TX_POWER_RSP:
22422 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 case WLAN_HAL_SET_P2P_GONOA_RSP:
22424 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022425#ifdef FEATURE_WLAN_TDLS
22426 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22427 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22428 case WLAN_HAL_TDLS_IND:
22429 return WDI_HAL_TDLS_IND;
22430#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22450 return WDI_SET_BEACON_FILTER_RESP;
22451 case WLAN_HAL_REM_BCN_FILTER_RSP:
22452 return WDI_REM_BEACON_FILTER_RESP;
22453 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22454 return WDI_SET_RSSI_THRESHOLDS_RESP;
22455 case WLAN_HAL_HOST_OFFLOAD_RSP:
22456 return WDI_HOST_OFFLOAD_RESP;
22457 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22458 return WDI_WOWL_ADD_BC_PTRN_RESP;
22459 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22460 return WDI_WOWL_DEL_BC_PTRN_RESP;
22461 case WLAN_HAL_ENTER_WOWL_RSP:
22462 return WDI_WOWL_ENTER_RESP;
22463 case WLAN_HAL_EXIT_WOWL_RSP:
22464 return WDI_WOWL_EXIT_RESP;
22465 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22466 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22467 case WLAN_HAL_DOWNLOAD_NV_RSP:
22468 return WDI_NV_DOWNLOAD_RESP;
22469 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22470 return WDI_FLUSH_AC_RESP;
22471 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22472 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 case WLAN_HAL_PROCESS_PTT_RSP:
22474 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 case WLAN_HAL_ADD_STA_SELF_RSP:
22476 return WDI_ADD_STA_SELF_RESP;
22477case WLAN_HAL_DEL_STA_SELF_RSP:
22478 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022479#ifdef FEATURE_OEM_DATA_SUPPORT
22480 case WLAN_HAL_START_OEM_DATA_RSP:
22481 return WDI_START_OEM_DATA_RESP;
22482#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 case WLAN_HAL_HOST_RESUME_RSP:
22484 return WDI_HOST_RESUME_RESP;
22485 case WLAN_HAL_KEEP_ALIVE_RSP:
22486 return WDI_KEEP_ALIVE_RESP;
22487#ifdef FEATURE_WLAN_SCAN_PNO
22488 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22489 return WDI_SET_PREF_NETWORK_RESP;
22490 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22493 return WDI_UPDATE_SCAN_PARAMS_RESP;
22494 case WLAN_HAL_PREF_NETW_FOUND_IND:
22495 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22496#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022497#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022498 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22499 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022500#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022501 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22502 return WDI_SET_TX_PER_TRACKING_RESP;
22503#ifdef WLAN_FEATURE_PACKET_FILTERING
22504 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22505 return WDI_8023_MULTICAST_LIST_RESP;
22506 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22507 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22508 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22509 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22510 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22511 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22512#endif // WLAN_FEATURE_PACKET_FILTERING
22513
22514 case WLAN_HAL_DUMP_COMMAND_RSP:
22515 return WDI_HAL_DUMP_CMD_RESP;
22516 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22517 return WDI_SET_POWER_PARAMS_RESP;
22518#ifdef WLAN_FEATURE_VOWIFI_11R
22519 case WLAN_HAL_AGGR_ADD_TS_RSP:
22520 return WDI_AGGR_ADD_TS_RESP;
22521#endif
22522
22523#ifdef WLAN_FEATURE_GTK_OFFLOAD
22524 case WLAN_HAL_GTK_OFFLOAD_RSP:
22525 return WDI_GTK_OFFLOAD_RESP;
22526 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22527 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22528#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22529#ifdef WLAN_WAKEUP_EVENTS
22530 case WLAN_HAL_WAKE_REASON_IND:
22531 return WDI_HAL_WAKE_REASON_IND;
22532#endif // WLAN_WAKEUP_EVENTS
22533
22534 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22535 return WDI_SET_TM_LEVEL_RESP;
22536 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22537 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022538#ifdef WLAN_FEATURE_11AC
22539 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22540 return WDI_UPDATE_VHT_OP_MODE_RESP;
22541#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022542#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22543 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22544 return WDI_GET_ROAM_RSSI_RESP;
22545#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022546
Leo Chang00bc9132013-08-01 19:21:11 -070022547#ifdef FEATURE_WLAN_LPHB
22548 case WLAN_HAL_LPHB_IND:
22549 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22550 case WLAN_HAL_LPHB_CFG_RSP:
22551 return WDI_LPHB_CFG_RESP;
22552#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022553
22554 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22555 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
22556
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 }
22560
22561}/*HAL_2_WDI_RSP_TYPE*/
22562
22563
22564/*Convert WDI driver type into HAL driver type*/
22565WPT_STATIC WPT_INLINE tDriverType
22566WDI_2_HAL_DRV_TYPE
22567(
22568 WDI_DriverType wdiDriverType
22569)
22570{
Jeff Johnsone7245742012-09-05 17:12:55 -070022571 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022572 the chances of getting inlined*/
22573 switch( wdiDriverType )
22574 {
22575 case WDI_DRIVER_TYPE_PRODUCTION:
22576 return eDRIVER_TYPE_PRODUCTION;
22577 case WDI_DRIVER_TYPE_MFG:
22578 return eDRIVER_TYPE_MFG;
22579 case WDI_DRIVER_TYPE_DVT:
22580 return eDRIVER_TYPE_DVT;
22581 }
22582
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022584}/*WDI_2_HAL_DRV_TYPE*/
22585
22586
22587/*Convert WDI stop reason into HAL stop reason*/
22588WPT_STATIC WPT_INLINE tHalStopType
22589WDI_2_HAL_STOP_REASON
22590(
22591 WDI_StopType wdiDriverType
22592)
22593{
Jeff Johnsone7245742012-09-05 17:12:55 -070022594 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 the chances of getting inlined*/
22596 switch( wdiDriverType )
22597 {
22598 case WDI_STOP_TYPE_SYS_RESET:
22599 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022600 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22601 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 case WDI_STOP_TYPE_RF_KILL:
22603 return HAL_STOP_TYPE_RF_KILL;
22604 }
22605
Jeff Johnsone7245742012-09-05 17:12:55 -070022606 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022607}/*WDI_2_HAL_STOP_REASON*/
22608
22609
22610/*Convert WDI scan mode type into HAL scan mode type*/
22611WPT_STATIC WPT_INLINE eHalSysMode
22612WDI_2_HAL_SCAN_MODE
22613(
22614 WDI_ScanMode wdiScanMode
22615)
22616{
Jeff Johnsone7245742012-09-05 17:12:55 -070022617 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 the chances of getting inlined*/
22619 switch( wdiScanMode )
22620 {
22621 case WDI_SCAN_MODE_NORMAL:
22622 return eHAL_SYS_MODE_NORMAL;
22623 case WDI_SCAN_MODE_LEARN:
22624 return eHAL_SYS_MODE_LEARN;
22625 case WDI_SCAN_MODE_SCAN:
22626 return eHAL_SYS_MODE_SCAN;
22627 case WDI_SCAN_MODE_PROMISC:
22628 return eHAL_SYS_MODE_PROMISC;
22629 case WDI_SCAN_MODE_SUSPEND_LINK:
22630 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022631 case WDI_SCAN_MODE_ROAM_SCAN:
22632 return eHAL_SYS_MODE_ROAM_SCAN;
22633 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22634 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 }
22636
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022638}/*WDI_2_HAL_SCAN_MODE*/
22639
22640/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022641WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022642WDI_2_HAL_SEC_CH_OFFSET
22643(
22644 WDI_HTSecondaryChannelOffset wdiSecChOffset
22645)
22646{
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 the chances of getting inlined*/
22649 switch( wdiSecChOffset )
22650 {
22651 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022656 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22657#ifdef WLAN_FEATURE_11AC
22658 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22659 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22660 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22661 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22662 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22663 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22664 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22665 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22666 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22667 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22668 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22669 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22670 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22671 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22672#endif
22673 default:
22674 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 }
22676
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022678}/*WDI_2_HAL_SEC_CH_OFFSET*/
22679
22680/*Convert WDI BSS type into HAL BSS type*/
22681WPT_STATIC WPT_INLINE tSirBssType
22682WDI_2_HAL_BSS_TYPE
22683(
22684 WDI_BssType wdiBSSType
22685)
22686{
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 the chances of getting inlined*/
22689 switch( wdiBSSType )
22690 {
22691 case WDI_INFRASTRUCTURE_MODE:
22692 return eSIR_INFRASTRUCTURE_MODE;
22693 case WDI_INFRA_AP_MODE:
22694 return eSIR_INFRA_AP_MODE;
22695 case WDI_IBSS_MODE:
22696 return eSIR_IBSS_MODE;
22697 case WDI_BTAMP_STA_MODE:
22698 return eSIR_BTAMP_STA_MODE;
22699 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 case WDI_BSS_AUTO_MODE:
22702 return eSIR_AUTO_MODE;
22703 }
22704
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022706}/*WDI_2_HAL_BSS_TYPE*/
22707
22708/*Convert WDI NW type into HAL NW type*/
22709WPT_STATIC WPT_INLINE tSirNwType
22710WDI_2_HAL_NW_TYPE
22711(
22712 WDI_NwType wdiNWType
22713)
22714{
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 the chances of getting inlined*/
22717 switch( wdiNWType )
22718 {
22719 case WDI_11A_NW_TYPE:
22720 return eSIR_11A_NW_TYPE;
22721 case WDI_11B_NW_TYPE:
22722 return eSIR_11B_NW_TYPE;
22723 case WDI_11G_NW_TYPE:
22724 return eSIR_11G_NW_TYPE;
22725 case WDI_11N_NW_TYPE:
22726 return eSIR_11N_NW_TYPE;
22727 }
22728
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022730}/*WDI_2_HAL_NW_TYPE*/
22731
22732/*Convert WDI chanel bonding type into HAL cb type*/
22733WPT_STATIC WPT_INLINE ePhyChanBondState
22734WDI_2_HAL_CB_STATE
22735(
22736 WDI_PhyChanBondState wdiCbState
22737)
22738{
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 the chances of getting inlined*/
22741 switch ( wdiCbState )
22742 {
22743 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22744 return PHY_SINGLE_CHANNEL_CENTERED;
22745 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22746 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22747 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22748 return PHY_DOUBLE_CHANNEL_CENTERED;
22749 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22750 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022751#ifdef WLAN_FEATURE_11AC
22752 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22753 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22754 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22755 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22756 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22757 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22758 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22759 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22760 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22761 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22762 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22763 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22764 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22765 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22766#endif
22767 case WDI_MAX_CB_STATE:
22768 default:
22769 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022771
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 return PHY_CHANNEL_BONDING_STATE_MAX;
22773}/*WDI_2_HAL_CB_STATE*/
22774
22775/*Convert WDI chanel bonding type into HAL cb type*/
22776WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22777WDI_2_HAL_HT_OPER_MODE
22778(
22779 WDI_HTOperatingMode wdiHTOperMode
22780)
22781{
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 the chances of getting inlined*/
22784 switch ( wdiHTOperMode )
22785 {
22786 case WDI_HT_OP_MODE_PURE:
22787 return eSIR_HT_OP_MODE_PURE;
22788 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22789 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22790 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22791 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22792 case WDI_HT_OP_MODE_MIXED:
22793 return eSIR_HT_OP_MODE_MIXED;
22794 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022795
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 return eSIR_HT_OP_MODE_MAX;
22797}/*WDI_2_HAL_HT_OPER_MODE*/
22798
22799/*Convert WDI mimo PS type into HAL mimo PS type*/
22800WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22801WDI_2_HAL_MIMO_PS
22802(
22803 WDI_HTMIMOPowerSaveState wdiHTOperMode
22804)
22805{
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 the chances of getting inlined*/
22808 switch ( wdiHTOperMode )
22809 {
22810 case WDI_HT_MIMO_PS_STATIC:
22811 return eSIR_HT_MIMO_PS_STATIC;
22812 case WDI_HT_MIMO_PS_DYNAMIC:
22813 return eSIR_HT_MIMO_PS_DYNAMIC;
22814 case WDI_HT_MIMO_PS_NA:
22815 return eSIR_HT_MIMO_PS_NA;
22816 case WDI_HT_MIMO_PS_NO_LIMIT:
22817 return eSIR_HT_MIMO_PS_NO_LIMIT;
22818 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022819
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 return eSIR_HT_MIMO_PS_MAX;
22821}/*WDI_2_HAL_MIMO_PS*/
22822
22823/*Convert WDI ENC type into HAL ENC type*/
22824WPT_STATIC WPT_INLINE tAniEdType
22825WDI_2_HAL_ENC_TYPE
22826(
22827 WDI_EncryptType wdiEncType
22828)
22829{
Jeff Johnsone7245742012-09-05 17:12:55 -070022830 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 the chances of getting inlined*/
22832 switch ( wdiEncType )
22833 {
22834 case WDI_ENCR_NONE:
22835 return eSIR_ED_NONE;
22836
22837 case WDI_ENCR_WEP40:
22838 return eSIR_ED_WEP40;
22839
22840 case WDI_ENCR_WEP104:
22841 return eSIR_ED_WEP104;
22842
22843 case WDI_ENCR_TKIP:
22844 return eSIR_ED_TKIP;
22845
22846 case WDI_ENCR_CCMP:
22847 return eSIR_ED_CCMP;
22848
22849 case WDI_ENCR_AES_128_CMAC:
22850 return eSIR_ED_AES_128_CMAC;
22851#if defined(FEATURE_WLAN_WAPI)
22852 case WDI_ENCR_WPI:
22853 return eSIR_ED_WPI;
22854#endif
22855 default:
22856 return eSIR_ED_NOT_IMPLEMENTED;
22857 }
22858
22859}/*WDI_2_HAL_ENC_TYPE*/
22860
22861/*Convert WDI WEP type into HAL WEP type*/
22862WPT_STATIC WPT_INLINE tAniWepType
22863WDI_2_HAL_WEP_TYPE
22864(
22865 WDI_WepType wdiWEPType
22866)
22867{
Jeff Johnsone7245742012-09-05 17:12:55 -070022868 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022869 the chances of getting inlined*/
22870 switch ( wdiWEPType )
22871 {
22872 case WDI_WEP_STATIC:
22873 return eSIR_WEP_STATIC;
22874
22875 case WDI_WEP_DYNAMIC:
22876 return eSIR_WEP_DYNAMIC;
22877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022878
Jeff Johnson295189b2012-06-20 16:38:30 -070022879 return eSIR_WEP_MAX;
22880}/*WDI_2_HAL_WEP_TYPE*/
22881
22882WPT_STATIC WPT_INLINE tSirLinkState
22883WDI_2_HAL_LINK_STATE
22884(
22885 WDI_LinkStateType wdiLinkState
22886)
22887{
Jeff Johnsone7245742012-09-05 17:12:55 -070022888 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 the chances of getting inlined*/
22890 switch ( wdiLinkState )
22891 {
22892 case WDI_LINK_IDLE_STATE:
22893 return eSIR_LINK_IDLE_STATE;
22894
22895 case WDI_LINK_PREASSOC_STATE:
22896 return eSIR_LINK_PREASSOC_STATE;
22897
22898 case WDI_LINK_POSTASSOC_STATE:
22899 return eSIR_LINK_POSTASSOC_STATE;
22900
22901 case WDI_LINK_AP_STATE:
22902 return eSIR_LINK_AP_STATE;
22903
22904 case WDI_LINK_IBSS_STATE:
22905 return eSIR_LINK_IBSS_STATE;
22906
22907 case WDI_LINK_BTAMP_PREASSOC_STATE:
22908 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22909
22910 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22911 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22912
22913 case WDI_LINK_BTAMP_AP_STATE:
22914 return eSIR_LINK_BTAMP_AP_STATE;
22915
22916 case WDI_LINK_BTAMP_STA_STATE:
22917 return eSIR_LINK_BTAMP_STA_STATE;
22918
22919 case WDI_LINK_LEARN_STATE:
22920 return eSIR_LINK_LEARN_STATE;
22921
22922 case WDI_LINK_SCAN_STATE:
22923 return eSIR_LINK_SCAN_STATE;
22924
22925 case WDI_LINK_FINISH_SCAN_STATE:
22926 return eSIR_LINK_FINISH_SCAN_STATE;
22927
22928 case WDI_LINK_INIT_CAL_STATE:
22929 return eSIR_LINK_INIT_CAL_STATE;
22930
22931 case WDI_LINK_FINISH_CAL_STATE:
22932 return eSIR_LINK_FINISH_CAL_STATE;
22933
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 case WDI_LINK_LISTEN_STATE:
22935 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022936
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022937 case WDI_LINK_SEND_ACTION_STATE:
22938 return eSIR_LINK_SEND_ACTION_STATE;
22939
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 default:
22941 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022942 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022943}
22944
Jeff Johnsone7245742012-09-05 17:12:55 -070022945/*Translate a STA Context from WDI into HAL*/
22946WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022947void
22948WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022949(
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 tConfigStaParams* phalConfigSta,
22951 WDI_ConfigStaReqInfoType* pwdiConfigSta
22952)
22953{
22954 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022955#ifdef WLAN_FEATURE_11AC
22956 /* Get the Version 1 Handler */
22957 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22958 if (WDI_getFwWlanFeatCaps(DOT11AC))
22959 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022960 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022961 }
22962#endif
22963 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022964 the chances of getting inlined*/
22965
Jeff Johnsone7245742012-09-05 17:12:55 -070022966 wpalMemoryCopy(phalConfigSta->bssId,
22967 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22968
22969 wpalMemoryCopy(phalConfigSta->staMac,
22970 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022971
22972 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22973 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22974 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22975 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22976 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22977 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22978 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22979 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22980 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22981 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22982 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22983 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22984 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22985 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22986 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22987 phalConfigSta->action = pwdiConfigSta->wdiAction;
22988 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22989 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22990 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22991 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22992 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22993 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22994 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022995
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22997
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 pwdiConfigSta->wdiSupportedRates.opRateMode;
23000 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23001 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23004 }
23005 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23006 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23009 }
23010 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23011 {
23012 phalConfigSta->supportedRates.aniLegacyRates[i] =
23013 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23014 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23017 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23018 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023019 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023020 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23021 }
23022 phalConfigSta->supportedRates.rxHighestDataRate =
23023 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23024
Jeff Johnsone7245742012-09-05 17:12:55 -070023025#ifdef WLAN_FEATURE_11AC
23026 if(phalConfigSta_V1 != NULL)
23027 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023028 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23029 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23030 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23031 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 }
23033#endif
23034
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023036
Jeff Johnsone7245742012-09-05 17:12:55 -070023037#ifdef WLAN_FEATURE_11AC
23038 if(phalConfigSta_V1 != NULL)
23039 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023040 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23041 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023042 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023043 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23044 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23045
Jeff Johnsone7245742012-09-05 17:12:55 -070023046 }
23047#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023048}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023049
23050/*Translate a Rate set info from WDI into HAL*/
23051WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023052WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023053(
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 tSirMacRateSet* pHalRateSet,
23055 WDI_RateSet* pwdiRateSet
23056)
23057{
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23060
23061 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23062 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23063
23064 for ( i = 0; i < pHalRateSet->numRates; i++ )
23065 {
23066 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23067 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023068
Jeff Johnson295189b2012-06-20 16:38:30 -070023069}/*WDI_CopyWDIRateSetToHALRateSet*/
23070
23071
23072/*Translate an EDCA Parameter Record from WDI into HAL*/
23073WPT_STATIC WPT_INLINE void
23074WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023075(
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 tSirMacEdcaParamRecord* phalEdcaParam,
23077 WDI_EdcaParamRecord* pWDIEdcaParam
23078)
23079{
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 the chances of getting inlined*/
23082
23083 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23084 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23085 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23086 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23087
23088 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23089 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23090 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23091}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23092
23093
23094/*Copy a management frame header from WDI fmt into HAL fmt*/
23095WPT_STATIC WPT_INLINE void
23096WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23097(
23098 tSirMacMgmtHdr* pmacMgmtHdr,
23099 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23100)
23101{
23102 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23103 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23104 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23105 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23106 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23107 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23108 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23109 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23110 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23111 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23112 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23113
23114 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23115 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23116
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 pwdiMacMgmtHdr->bssId, 6);
23123
23124 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23125 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23126 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23127
23128}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23129
23130
23131/*Copy config bss parameters from WDI fmt into HAL fmt*/
23132WPT_STATIC WPT_INLINE void
23133WDI_CopyWDIConfigBSSToHALConfigBSS
23134(
23135 tConfigBssParams* phalConfigBSS,
23136 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23137)
23138{
23139
23140 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023141#ifdef WLAN_FEATURE_11AC
23142 /* Get the Version 1 Handler */
23143 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23144 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023145 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023146#endif
23147
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 wpalMemoryCopy( phalConfigBSS->bssId,
23149 pwdiConfigBSS->macBSSID,
23150 WDI_MAC_ADDR_LEN);
23151
23152#ifdef HAL_SELF_STA_PER_BSS
23153 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23154 pwdiConfigBSS->macSelfAddr,
23155 WDI_MAC_ADDR_LEN);
23156#endif
23157
23158 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23159
23160 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23161 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23162
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 pwdiConfigBSS->ucShortSlotTimeSupported;
23165 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23166 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23167 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23168 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23169 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023170 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23172 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23173 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23174 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23175 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23176 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23177 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23178 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23179 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23180 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23181 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23182
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 phalConfigBSS->htOperMode =
23184 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023185
23186 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23187 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23188 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23189 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23190
23191#ifdef WLAN_FEATURE_VOWIFI
23192 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23193#endif
23194
23195 /*! Used 32 as magic number because that is how the ssid is declared inside the
23196 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023197 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23199 pwdiConfigBSS->wdiSSID.ucLength : 32;
23200 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 pwdiConfigBSS->wdiSSID.sSSID,
23202 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023203
23204 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23205 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023206
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23208 &pwdiConfigBSS->wdiRateSet);
23209
23210 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23211
23212 if(phalConfigBSS->edcaParamsValid)
23213 {
23214 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23215 &pwdiConfigBSS->wdiBEEDCAParams);
23216 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23217 &pwdiConfigBSS->wdiBKEDCAParams);
23218 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23219 &pwdiConfigBSS->wdiVIEDCAParams);
23220 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23221 &pwdiConfigBSS->wdiVOEDCAParams);
23222 }
23223
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023225
23226 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23227
23228#ifdef WLAN_FEATURE_VOWIFI_11R
23229
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023232
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 if( phalConfigBSS->extSetStaKeyParamValid )
23234 {
23235 /*-----------------------------------------------------------------------
23236 Copy the STA Key parameters into the HAL message
23237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23240
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23243
23244 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23245
23246 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23247
23248 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23249
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23251 keyIndex++)
23252 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23255 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23256 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23257 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23258 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23259 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23266 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023267 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023268 WDI_MAX_KEY_LENGTH);
23269 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 }
23271 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23272 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 sizeof(phalConfigBSS->extSetStaKeyParam) );
23275 }
23276
23277#endif /*WLAN_FEATURE_VOWIFI_11R*/
23278
Jeff Johnsone7245742012-09-05 17:12:55 -070023279#ifdef WLAN_FEATURE_11AC
23280 if(phalConfigBSS_V1 != NULL)
23281 {
23282 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23283 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23284 }
23285#endif
23286
Jeff Johnson295189b2012-06-20 16:38:30 -070023287}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23288
23289
Jeff Johnsone7245742012-09-05 17:12:55 -070023290/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 pointed to by user data */
23292WPT_STATIC WPT_INLINE void
23293WDI_ExtractRequestCBFromEvent
23294(
23295 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 void** ppUserData
23298)
23299{
23300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23301 switch ( pEvent->wdiRequest )
23302 {
23303 case WDI_START_REQ:
23304 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23305 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23306 break;
23307 case WDI_STOP_REQ:
23308 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23309 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23310 break;
23311 case WDI_INIT_SCAN_REQ:
23312 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23313 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23314 break;
23315 case WDI_START_SCAN_REQ:
23316 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23317 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23318 break;
23319 case WDI_END_SCAN_REQ:
23320 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23321 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23322 break;
23323 case WDI_FINISH_SCAN_REQ:
23324 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23325 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23326 break;
23327 case WDI_JOIN_REQ:
23328 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23329 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23330 break;
23331 case WDI_CONFIG_BSS_REQ:
23332 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23333 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23334 break;
23335 case WDI_DEL_BSS_REQ:
23336 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23337 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23338 break;
23339 case WDI_POST_ASSOC_REQ:
23340 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23341 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23342 break;
23343 case WDI_DEL_STA_REQ:
23344 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23345 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23346 break;
23347 case WDI_DEL_STA_SELF_REQ:
23348 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23349 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23350 break;
23351
23352 case WDI_SET_BSS_KEY_REQ:
23353 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23354 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23355 break;
23356 case WDI_RMV_BSS_KEY_REQ:
23357 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23358 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23359 break;
23360 case WDI_SET_STA_KEY_REQ:
23361 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23362 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23363 break;
23364 case WDI_RMV_STA_KEY_REQ:
23365 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23366 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23367 break;
23368 case WDI_ADD_TS_REQ:
23369 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23370 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23371 break;
23372 case WDI_DEL_TS_REQ:
23373 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23374 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23375 break;
23376 case WDI_UPD_EDCA_PRMS_REQ:
23377 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23378 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23379 break;
23380 case WDI_ADD_BA_SESSION_REQ:
23381 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23382 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23383 break;
23384 case WDI_DEL_BA_REQ:
23385 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23386 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23387 break;
23388#ifdef FEATURE_WLAN_CCX
23389 case WDI_TSM_STATS_REQ:
23390 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23391 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23392 break;
23393#endif
23394 case WDI_CH_SWITCH_REQ:
23395 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23396 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23397 break;
23398 case WDI_CONFIG_STA_REQ:
23399 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23400 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23401 break;
23402 case WDI_SET_LINK_ST_REQ:
23403 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23404 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23405 break;
23406 case WDI_GET_STATS_REQ:
23407 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23408 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23409 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023410#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23411 case WDI_GET_ROAM_RSSI_REQ:
23412 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23413 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23414 break;
23415#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 case WDI_UPDATE_CFG_REQ:
23417 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23418 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23419 break;
23420 case WDI_ADD_BA_REQ:
23421 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23422 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23423 break;
23424 case WDI_TRIGGER_BA_REQ:
23425 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23426 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23427 break;
23428 case WDI_UPD_BCON_PRMS_REQ:
23429 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23430 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23431 break;
23432 case WDI_SND_BCON_REQ:
23433 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23434 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23435 break;
23436 case WDI_ENTER_BMPS_REQ:
23437 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23438 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23439 break;
23440 case WDI_EXIT_BMPS_REQ:
23441 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23442 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23443 break;
23444 case WDI_ENTER_UAPSD_REQ:
23445 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23446 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23447 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023448 case WDI_EXIT_UAPSD_REQ:
23449 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23450 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23451 break;
23452 case WDI_SET_UAPSD_PARAM_REQ:
23453 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23454 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23455 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 case WDI_UPDATE_UAPSD_PARAM_REQ:
23457 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23458 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23459 break;
23460 case WDI_CONFIGURE_RXP_FILTER_REQ:
23461 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23462 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23463 break;
23464 case WDI_SET_BEACON_FILTER_REQ:
23465 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23466 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23467 break;
23468 case WDI_REM_BEACON_FILTER_REQ:
23469 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23470 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023471 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 case WDI_SET_RSSI_THRESHOLDS_REQ:
23473 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23474 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23475 break;
23476 case WDI_HOST_OFFLOAD_REQ:
23477 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23478 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23479 break;
23480 case WDI_WOWL_ADD_BC_PTRN_REQ:
23481 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23482 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23483 break;
23484 case WDI_WOWL_DEL_BC_PTRN_REQ:
23485 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23486 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23487 break;
23488 case WDI_WOWL_ENTER_REQ:
23489 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23490 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23491 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023492 case WDI_WOWL_EXIT_REQ:
23493 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23494 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23495 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23497 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23498 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23499 break;
23500 case WDI_FLUSH_AC_REQ:
23501 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23502 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23503 break;
23504 case WDI_BTAMP_EVENT_REQ:
23505 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23506 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23507 break;
23508 case WDI_KEEP_ALIVE_REQ:
23509 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23510 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23511 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023512#if defined FEATURE_WLAN_SCAN_PNO
23513 case WDI_SET_PREF_NETWORK_REQ:
23514 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23515 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23516 break;
23517 case WDI_SET_RSSI_FILTER_REQ:
23518 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23519 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23520 break;
23521 case WDI_UPDATE_SCAN_PARAMS_REQ:
23522 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23523 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23524 break;
23525#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 case WDI_SET_TX_PER_TRACKING_REQ:
23527 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23528 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023529 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023530#if defined WLAN_FEATURE_PACKET_FILTERING
23531 case WDI_8023_MULTICAST_LIST_REQ:
23532 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23533 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23534 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023535 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23536 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23537 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23538 break;
23539 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23540 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23541 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23542 break;
23543 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23544 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23545 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23546 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023547#endif
23548 case WDI_SET_POWER_PARAMS_REQ:
23549 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23550 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23551 break;
23552#if defined WLAN_FEATURE_GTK_OFFLOAD
23553 case WDI_GTK_OFFLOAD_REQ:
23554 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23555 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23556 break;
23557 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23558 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23559 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23560 break;
23561#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023562
Jeff Johnson295189b2012-06-20 16:38:30 -070023563 default:
23564 *ppfnReqCB = NULL;
23565 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023566 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 }
23568}/*WDI_ExtractRequestCBFromEvent*/
23569
23570
23571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023572 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 frame xtl is enabled for a particular STA.
23574
23575 WDI_PostAssocReq must have been called.
23576
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 @param uSTAIdx: STA index
23578
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 @see WDI_PostAssocReq
23580 @return Result of the function call
23581*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023582wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023583WDI_IsHwFrameTxTranslationCapable
23584(
23585 wpt_uint8 uSTAIdx
23586)
23587{
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 uma value*/
23590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 ------------------------------------------------------------------------*/
23593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23594 {
23595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23596 "WDI API call before module is initialized - Fail request");
23597
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 }
23600
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023601#ifdef WLAN_SOFTAP_VSTA_FEATURE
23602 if (IS_VSTA_IDX(uSTAIdx))
23603 {
23604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23605 "STA %d is a Virtual STA, "
23606 "HW frame translation disabled", uSTAIdx);
23607 return eWLAN_PAL_FALSE;
23608 }
23609#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023610
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 return gWDICb.bFrameTransEnabled;
23612}/*WDI_IsHwFrameTxTranslationCapable*/
23613
23614#ifdef FEATURE_WLAN_SCAN_PNO
23615/**
23616 @brief WDI_SetPreferredNetworkList
23617
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023620
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 wdiPNOScanCb: callback for passing back the response
23622 of the Set PNO operation received from the
23623 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023624
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 callback
23627
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 @return Result of the function call
23629*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023630WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023631WDI_SetPreferredNetworkReq
23632(
23633 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23634 WDI_PNOScanCb wdiPNOScanCb,
23635 void* pUserData
23636)
23637{
23638 WDI_EventInfoType wdiEventData = {{0}};
23639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23640
23641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 ------------------------------------------------------------------------*/
23644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23645 {
23646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23647 "WDI API call before module is initialized - Fail request");
23648
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 }
23651
23652 /*------------------------------------------------------------------------
23653 Fill in Event data and post to the Main FSM
23654 ------------------------------------------------------------------------*/
23655 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659 wdiEventData.pUserData = pUserData;
23660
23661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23662}
23663
23664
23665/**
23666 @brief WDI_SetRssiFilterReq
23667
Jeff Johnsone7245742012-09-05 17:12:55 -070023668 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023670
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 wdiRssiFilterCb: callback for passing back the response
23672 of the Set RSSI Filter operation received from the
23673 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023674
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023676 callback
23677
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 @return Result of the function call
23679*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023680WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023681WDI_SetRssiFilterReq
23682(
23683 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23684 WDI_RssiFilterCb wdiRssiFilterCb,
23685 void* pUserData
23686)
23687{
23688 WDI_EventInfoType wdiEventData = {{0}};
23689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23690
23691 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 ------------------------------------------------------------------------*/
23694 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23695 {
23696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23697 "WDI API call before module is initialized - Fail request");
23698
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 }
23701
23702 /*------------------------------------------------------------------------
23703 Fill in Event data and post to the Main FSM
23704 ------------------------------------------------------------------------*/
23705 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023706 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 wdiEventData.pUserData = pUserData;
23710
23711 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23712}/*WDI_SetRssiFilterReq*/
23713
23714/**
23715 @brief WDI_UpdateScanParamsReq
23716
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023719
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 wdiUpdateScanParamsCb: callback for passing back the response
23721 of the Set PNO operation received from the
23722 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023723
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023725 callback
23726
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 @return Result of the function call
23728*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023730WDI_UpdateScanParamsReq
23731(
23732 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23733 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23734 void* pUserData
23735)
23736{
23737 WDI_EventInfoType wdiEventData = {{0}};
23738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23739
23740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 ------------------------------------------------------------------------*/
23743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23744 {
23745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23746 "WDI API call before module is initialized - Fail request");
23747
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 }
23750
23751 /*------------------------------------------------------------------------
23752 Fill in Event data and post to the Main FSM
23753 ------------------------------------------------------------------------*/
23754 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 wdiEventData.pUserData = pUserData;
23759
23760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23761}
23762
23763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023766
23767 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023768 pwdiPNOScanReqParams: pointer to the info received
23769 from upper layers
23770 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 and its size
23772
Jeff Johnson295189b2012-06-20 16:38:30 -070023773 @return Result of the function call
23774*/
23775
23776WDI_Status
23777WDI_PackPreferredNetworkList
23778(
23779 WDI_ControlBlockType* pWDICtx,
23780 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23781 wpt_uint8** ppSendBuffer,
23782 wpt_uint16* pSize
23783)
23784{
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 wpt_uint16 usDataOffset = 0;
23787 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023788 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 /*-----------------------------------------------------------------------
23791 Get message buffer
23792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023794 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023796 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 {
23798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23799 "Unable to get send buffer in Set PNO req %x ",
23800 pwdiPNOScanReqParams);
23801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 }
23804
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023805 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23806
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 /*-------------------------------------------------------------------------
23808 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23809 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023810 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023812 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23814
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023815 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23820
23821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23824 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23825 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23826
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023827 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 {
23829 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023830 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23832
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023833 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023835 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023836
23837 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023838 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023839 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023840
23841 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023842 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023843 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023844
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023847 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023848 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23849 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23850 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23851 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023852
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023853 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023854 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023855 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023856
23857 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023858 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23860
23861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023862 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023863 pPrefNetwListParams->aNetworks[i].ssId.length,
23864 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 }
23866
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023867 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023869 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23870 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23871 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23872
23873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023875 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23877 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23878
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023879 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023881 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023883 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23885 }
23886
23887 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023888 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23890 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23891 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023893
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023894 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023896 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023897
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023898 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023899 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23900 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23901 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023904 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023906 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023907
23908 /*Set the output values*/
23909 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023911
23912 return WDI_STATUS_SUCCESS;
23913}/*WDI_PackPreferredNetworkList*/
23914
23915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023918
23919 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 pwdiPNOScanReqParams: pointer to the info received
23921 from upper layers
23922 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 and its size
23924
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 @return Result of the function call
23926*/
23927
23928WDI_Status
23929WDI_PackPreferredNetworkListNew
23930(
23931 WDI_ControlBlockType* pWDICtx,
23932 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23933 wpt_uint8** ppSendBuffer,
23934 wpt_uint16* pSize
23935)
23936{
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 wpt_uint16 usDataOffset = 0;
23939 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023940 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023941 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942
23943 /*-----------------------------------------------------------------------
23944 Get message buffer
23945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023947 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023949 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 {
23951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23952 "Unable to get send buffer in Set PNO req %x ",
23953 pwdiPNOScanReqParams);
23954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 }
23957
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023958 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23959
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 /*-------------------------------------------------------------------------
23961 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23962 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023963 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023965 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23967
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023968 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23973
23974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23977 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23978 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23979
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023980 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 {
23982 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023983 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23985
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023986 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023987 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023988 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023989
23990 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023991 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023993
23994 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023995 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023997
23998 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023999 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024004 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24006
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024007 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024009 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024010
24011 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024012 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24014
24015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024017 pPrefNetwListParams->aNetworks[i].ssId.length,
24018 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 }
24020
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024021 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24024 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24025 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24026
24027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024029 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024030 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24031 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24032
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024033 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024035 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024037 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24039 }
24040
24041 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024042 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24044 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24045 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024047
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024048 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024050 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024051
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024052 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24054 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24055 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024058 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024060 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024061
Jeff Johnson295189b2012-06-20 16:38:30 -070024062
24063 /*Set the output values*/
24064 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024066
24067 return WDI_STATUS_SUCCESS;
24068}/*WDI_PackPreferredNetworkListNew*/
24069
24070/**
24071 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024072
24073 @param pWDICtx: pointer to the WLAN DAL context
24074 pEventData: pointer to the event information structure
24075
Jeff Johnson295189b2012-06-20 16:38:30 -070024076 @return Result of the function call
24077*/
24078WDI_Status
24079WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024080(
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 WDI_ControlBlockType* pWDICtx,
24082 WDI_EventInfoType* pEventData
24083)
24084{
24085 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24086 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090
24091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 -------------------------------------------------------------------------*/
24094 if (( NULL == pEventData ) ||
24095 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24096 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24097 {
24098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 }
24103
24104 /*-------------------------------------------------------------------------
24105 Pack the PNO request structure based on version
24106 -------------------------------------------------------------------------*/
24107 if ( pWDICtx->wdiPNOVersion > 0 )
24108 {
24109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024110 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024111 pWDICtx->wdiPNOVersion);
24112
24113 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24114 &pSendBuffer, &usSendSize);
24115 }
24116 else
24117 {
24118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024119 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 pWDICtx->wdiPNOVersion);
24121
24122 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24123 &pSendBuffer, &usSendSize);
24124 }
24125
24126 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24127 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24128 {
24129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024130 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024132 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 }
24134
24135 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024136 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024137
24138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24142 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024143}
24144
24145/**
24146 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024147
24148 @param pWDICtx: pointer to the WLAN DAL context
24149 pEventData: pointer to the event information structure
24150
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 @see
24152 @return Result of the function call
24153*/
24154WDI_Status
24155WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024156(
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 WDI_ControlBlockType* pWDICtx,
24158 WDI_EventInfoType* pEventData
24159)
24160{
24161 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24162 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 wpt_uint16 usDataOffset = 0;
24165 wpt_uint16 usSendSize = 0;
24166 wpt_uint8 ucRssiThreshold;
24167
24168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 -------------------------------------------------------------------------*/
24171 if (( NULL == pEventData ) ||
24172 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24173 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24174 {
24175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 }
24180
24181 /*-----------------------------------------------------------------------
24182 Get message buffer
24183 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 sizeof(ucRssiThreshold),
24186 &pSendBuffer, &usDataOffset, &usSendSize))||
24187 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24188 {
24189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24190 "Unable to get send buffer in Set PNO req %x %x %x",
24191 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024194 }
24195
24196 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24197
Jeff Johnsone7245742012-09-05 17:12:55 -070024198 wpalMemoryCopy( pSendBuffer+usDataOffset,
24199 &ucRssiThreshold,
24200 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024201
24202 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024204
24205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024206 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024208 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24209 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024210}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024211#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24212/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024213 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024215 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024216 by the Device Interface
24217
24218 wdiRoamOffloadScancb: callback for passing back the response
24219 of the Roam Candidate Lookup Req operation received from the
24220 device
24221
24222 pUserData: user data will be passed back with the
24223 callback
24224 @return Result of the function call
24225*/
24226WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024227WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024228(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024229 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024230 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24231 void* pUserData
24232)
24233{
24234 WDI_EventInfoType wdiEventData = {{0}};
24235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24236
24237 /*------------------------------------------------------------------------
24238 Sanity Check
24239 ------------------------------------------------------------------------*/
24240 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24241 {
24242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24243 "WDI API call before module is initialized - Fail request");
24244
24245 return WDI_STATUS_E_NOT_ALLOWED;
24246 }
24247
24248 /*------------------------------------------------------------------------
24249 Fill in Event data and post to the Main FSM
24250 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024251 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24252 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24253 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024254 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24255 wdiEventData.pUserData = pUserData;
24256
24257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24258}
24259
24260void
24261WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24262{
24263 switch (wdiEdType)
24264 {
24265 case WDI_ED_NONE:
24266 *EdType = eED_NONE;
24267 break;
24268 case WDI_ED_WEP40:
24269 case WDI_ED_WEP104:
24270 *EdType = eED_WEP;
24271 break;
24272 case WDI_ED_TKIP:
24273 *EdType = eED_TKIP;
24274 break;
24275 case WDI_ED_CCMP:
24276#ifdef WLAN_FEATURE_11W
24277 case WDI_ED_AES_128_CMAC:
24278#endif
24279 *EdType = eED_CCMP;
24280 break;
24281#ifdef FEATURE_WLAN_WAPI
24282 case WDI_ED_WPI:
24283 *EdType = eED_WPI;
24284 break;
24285#endif
24286 case WDI_ED_ANY:
24287 *EdType = eED_ANY;
24288 break;
24289
24290 default:
24291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24292 "%s: Unknown Encryption Type", __func__);
24293 break;
24294 }
24295}
24296
24297/**
24298 @brief Helper function to pack Start Roam Candidate Lookup
24299 Request parameters
24300
24301 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024302 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024303 from upper layers
24304 ppSendBuffer, pSize - out pointers of the packed buffer
24305 and its size
24306
24307 @return Result of the function call
24308*/
24309
24310WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024311WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024312(
24313 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024314 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024315 wpt_uint8** ppSendBuffer,
24316 wpt_uint16* pSize
24317)
24318{
24319 wpt_uint8* pSendBuffer = NULL;
24320 wpt_uint16 usDataOffset = 0;
24321 wpt_uint16 usSendSize = 0;
24322 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24323 wpt_uint8 i;
24324 /*-----------------------------------------------------------------------
24325 Get message buffer
24326 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024328 sizeof(tRoamCandidateListParams),
24329 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024330 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024331 {
24332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24333 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024334 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024335 WDI_ASSERT(0);
24336 return WDI_STATUS_E_FAILURE;
24337 }
24338 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024339 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024340 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024341 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024342 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024343 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024344 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024345 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024346 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024347 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024348 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024349
24350 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024351 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024352 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024353 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024354 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24355 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024356 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24357 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24358 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24359 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24360 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24361 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24362 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24363 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24364 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24365 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24366 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24367 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24368 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24369 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024370 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024371 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24372 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24373 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024374
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24376 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24377 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24378 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24379 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24380 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24381 "HomeAwayTime=%d\n",
24382 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24383 pRoamCandidateListParams->RoamScanOffloadEnabled,
24384 pRoamCandidateListParams->Command,
24385 pRoamCandidateListParams->StartScanReason,
24386 pRoamCandidateListParams->NeighborScanTimerPeriod,
24387 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24388 pRoamCandidateListParams->NeighborScanChannelMinTime,
24389 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24390 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24391 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24392 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24393 pRoamCandidateListParams->ConnectedNetwork.authentication,
24394 pRoamCandidateListParams->ConnectedNetwork.encryption,
24395 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24396 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24397 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024398 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024399 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024400 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024401 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024402 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24403 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024404 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024405 pRoamCandidateListParams->us24GProbeSize);
24406 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024407 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024408 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024409 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024410 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24411 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024412 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024413 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024414 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24415 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24416 pRoamCandidateListParams->nProbes =
24417 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24418 pRoamCandidateListParams->HomeAwayTime =
24419 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024421 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24422 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024424 }
24425
24426
24427 /*Set the output values*/
24428 *ppSendBuffer = pSendBuffer;
24429 *pSize = usSendSize;
24430 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024431}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024432
24433/**
24434 @brief Process Start Roam Candidate Lookup Request function
24435
24436 @param pWDICtx: pointer to the WLAN DAL context
24437 pEventData: pointer to the event information structure
24438
24439 @return Result of the function call
24440*/
24441WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024442WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024443(
24444 WDI_ControlBlockType* pWDICtx,
24445 WDI_EventInfoType* pEventData
24446)
24447{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024448 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024449 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24450 wpt_uint8* pSendBuffer = NULL;
24451 wpt_uint16 usSendSize = 0;
24452 WDI_Status wdiStatus;
24453 /*-------------------------------------------------------------------------
24454 Sanity check
24455 -------------------------------------------------------------------------*/
24456 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024457 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024458 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24459 {
24460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24461 "%s: Invalid parameters", __func__);
24462 WDI_ASSERT(0);
24463 return WDI_STATUS_E_FAILURE;
24464 }
24465
24466 /*-------------------------------------------------------------------------
24467 Pack the Start Roam Candidate Lookup request structure based on version
24468 -------------------------------------------------------------------------*/
24469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24470 "%s: Packing Roam Candidate Lookup request ", __func__);
24471
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024472 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024473 &pSendBuffer, &usSendSize);
24474
24475 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24476 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24477 {
24478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24479 "%s: failed to pack request parameters", __func__);
24480 WDI_ASSERT(0);
24481 return wdiStatus;
24482 }
24483
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024484 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24485 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024486
24487 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024488 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024489 -------------------------------------------------------------------------*/
24490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024491 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024492}
24493
24494/**
24495 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24496 response is being received over the bus from HAL)
24497
24498 @param pWDICtx: pointer to the WLAN DAL context
24499 pEventData: pointer to the event information structure
24500
24501 @see
24502 @return Result of the function call
24503*/
24504WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024505WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024506(
24507 WDI_ControlBlockType* pWDICtx,
24508 WDI_EventInfoType* pEventData
24509)
24510{
24511 WDI_Status wdiStatus;
24512 eHalStatus halStatus;
24513 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24514
24515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24516
24517 /*-------------------------------------------------------------------------
24518 Sanity check
24519 -------------------------------------------------------------------------*/
24520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24521 ( NULL == pEventData->pEventData ))
24522 {
24523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24524 "%s: Invalid parameters", __func__);
24525 WDI_ASSERT(0);
24526 return WDI_STATUS_E_FAILURE;
24527 }
24528
24529 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24530
24531 /*-------------------------------------------------------------------------
24532 Extract response and send it to UMAC
24533 -------------------------------------------------------------------------*/
24534 halStatus = *((eHalStatus*)pEventData->pEventData);
24535 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24536
24537 /*Notify UMAC*/
24538 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24539
24540 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024541}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024542#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024543
24544/**
24545 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024546
24547 @param pWDICtx: pointer to the WLAN DAL context
24548 pEventData: pointer to the event information structure
24549
Jeff Johnson295189b2012-06-20 16:38:30 -070024550 @see
24551 @return Result of the function call
24552*/
24553WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024554WDI_PackUpdateScanParamsReq
24555(
24556 WDI_ControlBlockType* pWDICtx,
24557 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24558 wpt_uint8** ppSendBuffer,
24559 wpt_uint16* pSize
24560)
24561{
24562 wpt_uint8* pSendBuffer = NULL;
24563 wpt_uint16 usDataOffset = 0;
24564 wpt_uint16 usSendSize = 0;
24565 tUpdateScanParams updateScanParams = {0};
24566
24567
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024569 "Begin WDI Update Scan Parameters Old Style Params");
24570 /*-----------------------------------------------------------------------
24571 Get message buffer
24572 -----------------------------------------------------------------------*/
24573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24574 sizeof(updateScanParams),
24575 &pSendBuffer, &usDataOffset, &usSendSize))||
24576 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24577 {
24578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24579 "Unable to get send buffer in Update Scan Params req %x",
24580 pwdiUpdateScanParams);
24581 WDI_ASSERT(0);
24582 return WDI_STATUS_E_FAILURE;
24583 }
24584
24585 //
24586 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24587 //
24588
24589 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24590 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24591
24592 updateScanParams.ucChannelCount =
24593 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24594 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24595 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24596 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24597
24598 wpalMemoryCopy( updateScanParams.aChannels,
24599 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24600 updateScanParams.ucChannelCount);
24601
24602
24603 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24604 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24605 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24606 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24607 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24608
24609 wpalMemoryCopy( pSendBuffer+usDataOffset,
24610 &updateScanParams,
24611 sizeof(updateScanParams));
24612
24613 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24614 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24615
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024617 "End Update Scan Parameters Old Style");
24618
24619 /*Set the output values*/
24620 *ppSendBuffer = pSendBuffer;
24621 *pSize = usSendSize;
24622
24623 return WDI_STATUS_SUCCESS;
24624}
24625
24626/**
24627 @brief Process Update Scan Params function
24628
24629 @param pWDICtx: pointer to the WLAN DAL context
24630 pEventData: pointer to the event information structure
24631
24632 @see
24633 @return Result of the function call
24634*/
24635WDI_Status
24636WDI_PackUpdateScanParamsReqEx
24637(
24638 WDI_ControlBlockType* pWDICtx,
24639 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24640 wpt_uint8** ppSendBuffer,
24641 wpt_uint16* pSize
24642)
24643{
24644 wpt_uint8* pSendBuffer = NULL;
24645 wpt_uint16 usDataOffset = 0;
24646 wpt_uint16 usSendSize = 0;
24647 tUpdateScanParamsEx updateScanParams = {0};
24648
24649
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024650 /*-----------------------------------------------------------------------
24651 Get message buffer
24652 -----------------------------------------------------------------------*/
24653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24654 sizeof(updateScanParams),
24655 &pSendBuffer, &usDataOffset, &usSendSize))||
24656 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24657 {
24658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24659 "Unable to get send buffer in Update Scan Params Ex req %x",
24660 pwdiUpdateScanParams);
24661 WDI_ASSERT(0);
24662 return WDI_STATUS_E_FAILURE;
24663 }
24664
24665 //
24666 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24667 //
24668
24669 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24670 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24671
24672 updateScanParams.ucChannelCount =
24673 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24674 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24675 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24676 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24677
24678 wpalMemoryCopy( updateScanParams.aChannels,
24679 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24680 updateScanParams.ucChannelCount);
24681
24682
24683 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24684 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24685 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24686 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24687 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24688
24689 wpalMemoryCopy( pSendBuffer+usDataOffset,
24690 &updateScanParams,
24691 sizeof(updateScanParams));
24692
24693 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24694 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24695
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024696 /*Set the output values*/
24697 *ppSendBuffer = pSendBuffer;
24698 *pSize = usSendSize;
24699
24700 return WDI_STATUS_SUCCESS;
24701}
24702
24703/**
24704 @brief Process Update Scan Params function
24705
24706 @param pWDICtx: pointer to the WLAN DAL context
24707 pEventData: pointer to the event information structure
24708
24709 @see
24710 @return Result of the function call
24711*/
24712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024713WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024714(
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 WDI_ControlBlockType* pWDICtx,
24716 WDI_EventInfoType* pEventData
24717)
24718{
24719 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24720 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024723 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724
24725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024727 -------------------------------------------------------------------------*/
24728 if (( NULL == pEventData ) ||
24729 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24730 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24731 {
24732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 }
24737
24738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24739 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024740
24741 //
24742 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24743 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024744 if ( pWDICtx->wlanVersion.revision < 1 )
24745 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024746 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024747 &pSendBuffer, &usSendSize);
24748 }
24749 else
24750 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024751 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24752 &pSendBuffer, &usSendSize);
24753 }
24754
24755 if(WDI_STATUS_SUCCESS != wdiStatus)
24756 {
24757 //memory allocation failed
24758 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024759 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024760
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024762 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024765 wdiUpdateScanParamsCb, pEventData->pUserData,
24766 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024767}
24768
24769/**
24770 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024771
24772 @param pWDICtx: pointer to the WLAN DAL context
24773 pEventData: pointer to the event information structure
24774
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 @see
24776 @return Result of the function call
24777*/
24778WDI_Status
24779WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024780(
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 WDI_ControlBlockType* pWDICtx,
24782 WDI_EventInfoType* pEventData
24783)
24784{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024785 WDI_LowLevelIndType wdiInd;
24786 tpPrefNetwFoundParams pNetwFoundParams;
24787 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024788
24789
24790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024792 -------------------------------------------------------------------------*/
24793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24794 ( NULL == pEventData->pEventData ))
24795 {
24796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024798 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024800 }
24801
24802 /*-------------------------------------------------------------------------
24803 Extract indication and send it to UMAC
24804 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024805 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24806
24807 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24808 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24809 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24810
24811 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24812 {
24813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24814 "%s: fail to allocate memory", __func__);
24815 return WDI_STATUS_MEM_FAILURE;
24816 }
24817
24818 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24819 (pNetwFoundParams->ssId.length < 32 )?
24820 pNetwFoundParams->ssId.length : 32;
24821 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24822 pNetwFoundParams->ssId.ssId,
24823 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24824 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24825 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24826 pNetwFoundParams->frameLength;
24827 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24828 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24829 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024830
24831 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024832 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024833
Jeff Johnson295189b2012-06-20 16:38:30 -070024834 // DEBUG
24835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24836 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24837 wdiInd.wdiIndicationType,
24838 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24839 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24840
ltimariu034f7d62013-01-24 18:54:33 -080024841 if ( pWDICtx->wdiLowLevelIndCB )
24842 {
24843 /*Notify UMAC*/
24844 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24845 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024846
24847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024848}
24849
24850/**
24851 @brief Process PNO Rsp function (called when a
24852 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024853
24854 @param pWDICtx: pointer to the WLAN DAL context
24855 pEventData: pointer to the event information structure
24856
Jeff Johnson295189b2012-06-20 16:38:30 -070024857 @see
24858 @return Result of the function call
24859*/
24860WDI_Status
24861WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024862(
Jeff Johnson295189b2012-06-20 16:38:30 -070024863 WDI_ControlBlockType* pWDICtx,
24864 WDI_EventInfoType* pEventData
24865)
24866{
24867 WDI_Status wdiStatus;
24868 eHalStatus halStatus;
24869 WDI_PNOScanCb wdiPNOScanCb = NULL;
24870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24871
24872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024874 -------------------------------------------------------------------------*/
24875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24876 ( NULL == pEventData->pEventData ))
24877 {
24878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024882 }
24883
24884
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024886
24887 /*-------------------------------------------------------------------------
24888 Extract response and send it to UMAC
24889 -------------------------------------------------------------------------*/
24890 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024891 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024892
24893 /*Notify UMAC*/
24894 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24895
Jeff Johnsone7245742012-09-05 17:12:55 -070024896 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024897}/*WDI_ProcessSetPreferredNetworkRsp*/
24898
24899/**
24900 @brief Process RSSI Filter Rsp function (called when a
24901 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024902
24903 @param pWDICtx: pointer to the WLAN DAL context
24904 pEventData: pointer to the event information structure
24905
Jeff Johnson295189b2012-06-20 16:38:30 -070024906 @see
24907 @return Result of the function call
24908*/
24909WDI_Status
24910WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024911(
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 WDI_ControlBlockType* pWDICtx,
24913 WDI_EventInfoType* pEventData
24914)
24915{
24916 WDI_Status wdiStatus;
24917 eHalStatus halStatus;
24918 WDI_RssiFilterCb wdiRssiFilterCb;
24919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24920
24921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024923 -------------------------------------------------------------------------*/
24924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24925 ( NULL == pEventData->pEventData ))
24926 {
24927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 }
24932
Jeff Johnsone7245742012-09-05 17:12:55 -070024933 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024934
24935 /*-------------------------------------------------------------------------
24936 Extract response and send it to UMAC
24937 -------------------------------------------------------------------------*/
24938 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024939 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024940
24941 /*Notify UMAC*/
24942 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24943
Jeff Johnsone7245742012-09-05 17:12:55 -070024944 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024945}/*WDI_ProcessSetRssiFilterRsp*/
24946
24947/**
24948 @brief Process Update Scan Params Rsp function (called when a
24949 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024950
24951 @param pWDICtx: pointer to the WLAN DAL context
24952 pEventData: pointer to the event information structure
24953
Jeff Johnson295189b2012-06-20 16:38:30 -070024954 @see
24955 @return Result of the function call
24956*/
24957WDI_Status
24958WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024959(
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 WDI_ControlBlockType* pWDICtx,
24961 WDI_EventInfoType* pEventData
24962)
24963{
24964 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024967 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24969
24970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024972 -------------------------------------------------------------------------*/
24973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24974 ( NULL == pEventData->pEventData ))
24975 {
24976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 }
24981
24982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024983 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024984
Jeff Johnsone7245742012-09-05 17:12:55 -070024985 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024986
24987 /*-------------------------------------------------------------------------
24988 Extract response and send it to UMAC
24989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024990 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24991 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 sizeof(halUpdScanParams.status));
24993
24994 uStatus = halUpdScanParams.status;
24995
24996 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024998
24999 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025000 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025001
Jeff Johnsone7245742012-09-05 17:12:55 -070025002 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025003
25004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025005 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 halUpdScanParams.status);
25007
25008 /*Notify UMAC*/
25009 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25010
Jeff Johnsone7245742012-09-05 17:12:55 -070025011 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025012}
25013#endif // FEATURE_WLAN_SCAN_PNO
25014
25015#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025017WDI_8023MulticastListReq
25018(
25019 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25020 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25021 void* pUserData
25022)
25023{
25024 WDI_EventInfoType wdiEventData;
25025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25026
25027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025028 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025029
25030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025031 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025032 ------------------------------------------------------------------------*/
25033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25034 {
25035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25036 "WDI API call before module is initialized - Fail request");
25037
Jeff Johnsone7245742012-09-05 17:12:55 -070025038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025039 }
25040
25041 /*------------------------------------------------------------------------
25042 Fill in Event data and post to the Main FSM
25043 ------------------------------------------------------------------------*/
25044 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025045 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 wdiEventData.pUserData = pUserData;
25049
25050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25051}
25052
Jeff Johnsone7245742012-09-05 17:12:55 -070025053WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025054WDI_ReceiveFilterSetFilterReq
25055(
25056 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25057 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25058 void* pUserData
25059)
25060{
25061 WDI_EventInfoType wdiEventData;
25062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25063
25064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025065 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025066
25067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 ------------------------------------------------------------------------*/
25070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25071 {
25072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25073 "WDI API call before module is initialized - Fail request");
25074
Jeff Johnsone7245742012-09-05 17:12:55 -070025075 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025076 }
25077
25078 /*------------------------------------------------------------------------
25079 Fill in Event data and post to the Main FSM
25080 ------------------------------------------------------------------------*/
25081 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025082 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25083 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025084 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25085 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 wdiEventData.pUserData = pUserData;
25088
25089
25090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25091}
25092
Jeff Johnsone7245742012-09-05 17:12:55 -070025093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025094WDI_FilterMatchCountReq
25095(
25096 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25097 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25098 void* pUserData
25099)
25100{
25101 WDI_EventInfoType wdiEventData;
25102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25103
25104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025105 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025106
25107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 ------------------------------------------------------------------------*/
25110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25111 {
25112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25113 "WDI API call before module is initialized - Fail request");
25114
Jeff Johnsone7245742012-09-05 17:12:55 -070025115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 }
25117
25118 /*------------------------------------------------------------------------
25119 Fill in Event data and post to the Main FSM
25120 ------------------------------------------------------------------------*/
25121 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025122 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025123 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025124 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 wdiEventData.pUserData = pUserData;
25126
25127
25128 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25129}
25130
Jeff Johnsone7245742012-09-05 17:12:55 -070025131WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025132WDI_ReceiveFilterClearFilterReq
25133(
25134 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25135 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25136 void* pUserData
25137)
25138{
25139 WDI_EventInfoType wdiEventData;
25140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25141
25142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025143 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025144
25145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025147 ------------------------------------------------------------------------*/
25148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25149 {
25150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25151 "WDI API call before module is initialized - Fail request");
25152
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025154 }
25155
25156 /*------------------------------------------------------------------------
25157 Fill in Event data and post to the Main FSM
25158 ------------------------------------------------------------------------*/
25159 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025162 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 wdiEventData.pUserData = pUserData;
25164
25165
25166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25167}
25168
25169/**
25170 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025171
25172 @param pWDICtx: pointer to the WLAN DAL context
25173 pEventData: pointer to the event information structure
25174
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 @see
25176 @return Result of the function call
25177*/
25178WDI_Status
25179WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025180(
Jeff Johnson295189b2012-06-20 16:38:30 -070025181 WDI_ControlBlockType* pWDICtx,
25182 WDI_EventInfoType* pEventData
25183)
25184{
25185 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25186 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025187 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 wpt_uint16 usDataOffset = 0;
25189 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025190 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025192 wpt_uint8 ucCurrentBSSSesIdx = 0;
25193 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025194
25195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025196 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025197
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025198 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25199 if( NULL == pRcvFltMcAddrListType )
25200 {
25201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25202 "Failed to alloc in WDI_Process8023MulticastListReq");
25203 return WDI_STATUS_E_FAILURE;
25204 }
25205
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025208 -------------------------------------------------------------------------*/
25209 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025212 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25214 {
25215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025216 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025217 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025219 return WDI_STATUS_E_FAILURE;
25220 }
25221
25222 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25223 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25224 &pBSSSes);
25225 if ( NULL == pBSSSes )
25226 {
25227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025228 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025229 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025231 }
25232
25233 /*-----------------------------------------------------------------------
25234 Get message buffer
25235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25237 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 sizeof(tHalRcvFltMcAddrListType),
25239 &pSendBuffer, &usDataOffset, &usSendSize))||
25240 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25241 {
25242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25243 "Unable to get send buffer in "
25244 "WDI_Process8023MulticastListReq() %x %x %x",
25245 pEventData, pwdiFltPktSetMcListReqParamsType,
25246 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025247 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025250 }
25251
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025252 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025253 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025254 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025255 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025256 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25258 sizeof(tSirMacAddr));
25259 }
25260
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025261 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025262 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025263 pRcvFltMcAddrListType,
25264 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025265
25266 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025267 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025268
25269
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025270 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025272 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025275 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025276 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025277}
25278
25279/**
25280 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025281
25282 @param pWDICtx: pointer to the WLAN DAL context
25283 pEventData: pointer to the event information structure
25284
Jeff Johnson295189b2012-06-20 16:38:30 -070025285 @see
25286 @return Result of the function call
25287*/
25288WDI_Status
25289WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025290(
Jeff Johnson295189b2012-06-20 16:38:30 -070025291 WDI_ControlBlockType* pWDICtx,
25292 WDI_EventInfoType* pEventData
25293)
25294{
25295 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25296 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 wpt_uint16 usDataOffset = 0;
25299 wpt_uint16 usSendSize = 0;
25300 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025301 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025302 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 wpt_uint8 ucCurrentBSSSesIdx = 0;
25304 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025305 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25306 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025307
25308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025309 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025310
25311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 -------------------------------------------------------------------------*/
25314 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25319 {
25320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 return WDI_STATUS_E_FAILURE;
25324 }
25325
25326 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25327 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25328 &pBSSSes);
25329 if ( NULL == pBSSSes )
25330 {
25331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025332 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025334 }
25335
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025336 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25337 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025339 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25340 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25341 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25342
25343 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25344 usSessRcvPktFilterCfgSize);
25345
25346 if(NULL == pSessRcvPktFilterCfg)
25347 {
25348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25349 "%s: Failed to allocate memory for "
25350 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025351 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025352 WDI_ASSERT(0);
25353 return WDI_STATUS_E_FAILURE;
25354 }
25355
25356 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25357
25358 /*-----------------------------------------------------------------------
25359 Get message buffer
25360 -----------------------------------------------------------------------*/
25361
25362 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25363 usSessRcvPktFilterCfgSize,
25364 &pSendBuffer, &usDataOffset, &usSendSize))||
25365 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25366 {
25367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25368 "Unable to get send buffer in "
25369 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25370 pEventData, pwdiSetRcvPktFilterReqInfo,
25371 wdiReceiveFilterSetFilterCb);
25372 WDI_ASSERT(0);
25373 wpalMemoryFree(pSessRcvPktFilterCfg);
25374 return WDI_STATUS_E_FAILURE;
25375 }
25376
25377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25378 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25379 usSendSize,pSessRcvPktFilterCfg);
25380
25381 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25382 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25383 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25384 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25385
25386 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25387
25388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25389 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25390 pSessRcvPktFilterCfg->filterType);
25391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25392 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25393 pSessRcvPktFilterCfg->coleasceTime);
25394
25395 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25396 {
25397 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25398 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25399 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25400 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25401 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25402 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25403 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25404 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25405
25406 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25407 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25408 8);
25409 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25410 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25411 8);
25412
25413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25414 "Out:Proto %d Comp Flag %d \n",
25415 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25416 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25417
25418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25419 "Data Offset %d Data Len %d\n",
25420 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25421 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25422
25423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25424 "CData: %d:%d:%d:%d:%d:%d\n",
25425 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25426 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25427 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25428 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25429 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25430 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25431
25432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25433 "MData: %d:%d:%d:%d:%d:%d\n",
25434 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25435 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25436 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25437 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25438 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25439 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25440 }
25441
25442 wpalMemoryCopy( pSendBuffer+usDataOffset,
25443 pSessRcvPktFilterCfg,
25444 usSessRcvPktFilterCfgSize);
25445
25446
25447 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25448 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25449
25450 wpalMemoryFree(pSessRcvPktFilterCfg);
25451
25452 }
25453 /*If SLM_SESSIONIZATION is not supported then do this */
25454 else
25455 {
25456 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25457 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25458 * sizeof(tHalRcvPktFilterParams));
25459
25460 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025461 usRcvPktFilterCfgSize);
25462
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025463 if(NULL == pRcvPktFilterCfg)
25464 {
25465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25466 "%s: Failed to allocate memory for "
25467 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025468 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025469 WDI_ASSERT(0);
25470 return WDI_STATUS_E_FAILURE;
25471 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025472
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025473 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025474
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025475 /*-----------------------------------------------------------------------
25476 Get message buffer
25477 -----------------------------------------------------------------------*/
25478 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 usRcvPktFilterCfgSize,
25480 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025481 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25482 {
25483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 "Unable to get send buffer in "
25485 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25486 pEventData, pwdiSetRcvPktFilterReqInfo,
25487 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025488 WDI_ASSERT(0);
25489 wpalMemoryFree(pRcvPktFilterCfg);
25490 return WDI_STATUS_E_FAILURE;
25491 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025492
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025494 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 usSendSize,usRcvPktFilterCfgSize);
25496
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025497 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25498 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25499 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25500 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025501
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025503 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025506 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025508
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025509 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25510 {
25511 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25512 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25513 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25514 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25515 pRcvPktFilterCfg->paramsData[i].dataOffset =
25516 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25517 pRcvPktFilterCfg->paramsData[i].dataLength =
25518 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025519
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025520 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25522 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025523 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025524 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25525 8);
25526
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25533 "Data Offset %d Data Len %d\n",
25534 pRcvPktFilterCfg->paramsData[i].dataOffset,
25535 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025536
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25538 "CData: %d:%d:%d:%d:%d:%d\n",
25539 pRcvPktFilterCfg->paramsData[i].compareData[0],
25540 pRcvPktFilterCfg->paramsData[i].compareData[1],
25541 pRcvPktFilterCfg->paramsData[i].compareData[2],
25542 pRcvPktFilterCfg->paramsData[i].compareData[3],
25543 pRcvPktFilterCfg->paramsData[i].compareData[4],
25544 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025545
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25547 "MData: %d:%d:%d:%d:%d:%d\n",
25548 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25549 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25550 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25551 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25552 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25553 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25554 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025555
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025556 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 pRcvPktFilterCfg,
25558 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025559
25560
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025561 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25562 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025563
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025565 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025566 wpalMemoryFree(pRcvPktFilterCfg);
25567 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025569 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025571 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025574}
25575
25576/**
25577 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025578
25579 @param pWDICtx: pointer to the WLAN DAL context
25580 pEventData: pointer to the event information structure
25581
Jeff Johnson295189b2012-06-20 16:38:30 -070025582 @see
25583 @return Result of the function call
25584*/
25585WDI_Status
25586WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025587(
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 WDI_ControlBlockType* pWDICtx,
25589 WDI_EventInfoType* pEventData
25590)
25591{
25592 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25593 NULL;
25594 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25595 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 wpt_uint16 usDataOffset = 0;
25598 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025599 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25600 wpt_uint8 ucCurrentBSSSesIdx = 0;
25601 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025602
25603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025604 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025605
25606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 -------------------------------------------------------------------------*/
25609 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25614 {
25615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 }
25620
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025621 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25622 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25623 &pBSSSes);
25624 if ( NULL == pBSSSes )
25625 {
25626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025627 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025628 return WDI_STATUS_E_FAILURE;
25629 }
25630
Jeff Johnson295189b2012-06-20 16:38:30 -070025631 /*-----------------------------------------------------------------------
25632 Get message buffer
25633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25635 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025636 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025638 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 {
25640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25641 "Unable to get send buffer in "
25642 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25643 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25644 wdiFilterMatchCountCb);
25645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 }
25648
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025649 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25650 wpalMemoryCopy( pSendBuffer+usDataOffset,
25651 &rcvFltPktMatchCntReqParam,
25652 sizeof(rcvFltPktMatchCntReqParam));
25653
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 //
25655 // Don't need to fill send buffer other than header
25656 //
25657 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025659
25660
25661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025662 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25665 wdiFilterMatchCountCb,
25666 pEventData->pUserData,
25667 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025668}
25669
25670/**
25671 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025672
25673 @param pWDICtx: pointer to the WLAN DAL context
25674 pEventData: pointer to the event information structure
25675
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 @see
25677 @return Result of the function call
25678*/
25679WDI_Status
25680WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025681(
Jeff Johnson295189b2012-06-20 16:38:30 -070025682 WDI_ControlBlockType* pWDICtx,
25683 WDI_EventInfoType* pEventData
25684)
Jeff Johnsone7245742012-09-05 17:12:55 -070025685{
Jeff Johnson295189b2012-06-20 16:38:30 -070025686 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25687 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025688 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025689 wpt_uint16 usDataOffset = 0;
25690 wpt_uint16 usSendSize = 0;
25691 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025692 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025694
25695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025696 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025697
25698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 -------------------------------------------------------------------------*/
25701 if (( NULL == pEventData ) ||
25702 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25703 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025704 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25706 {
25707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025710 return WDI_STATUS_E_FAILURE;
25711 }
25712
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025713 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025714 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25715 &pBSSSes);
25716 if ( NULL == pBSSSes )
25717 {
25718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025719 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025721 }
25722
25723 /*-----------------------------------------------------------------------
25724 Get message buffer
25725 -----------------------------------------------------------------------*/
25726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 sizeof(tHalRcvFltPktClearParam),
25729 &pSendBuffer, &usDataOffset, &usSendSize))||
25730 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25731 {
25732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25733 "Unable to get send buffer in "
25734 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25735 pEventData, pwdiRcvFltPktClearReqParamsType,
25736 wdiRcvFltPktClearFilterCb);
25737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025739 }
25740
25741
25742 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025743 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025744 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025746
Jeff Johnsone7245742012-09-05 17:12:55 -070025747 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25748 wpalMemoryCopy( pSendBuffer+usDataOffset,
25749 &rcvFltPktClearParam,
25750 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025751
25752 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025753 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025754
25755
25756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025757 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025760 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025761 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025762}
25763
25764/**
25765 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025766
25767 @param pWDICtx: pointer to the WLAN DAL context
25768 pEventData: pointer to the event information structure
25769
Jeff Johnson295189b2012-06-20 16:38:30 -070025770 @see
25771 @return Result of the function call
25772*/
25773WDI_Status
25774WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025775(
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 WDI_ControlBlockType* pWDICtx,
25777 WDI_EventInfoType* pEventData
25778)
25779{
Jeff Johnson295189b2012-06-20 16:38:30 -070025780 eHalStatus halStatus;
25781 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025782 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25783 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25785
25786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025787 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025788
25789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025791 -------------------------------------------------------------------------*/
25792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25793 ( NULL == pEventData->pEventData ))
25794 {
25795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 }
25800
Jeff Johnsone7245742012-09-05 17:12:55 -070025801 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025802
25803 /*-------------------------------------------------------------------------
25804 Extract response and send it to UMAC
25805 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025806 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25807 {
25808 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25809 pEventData->pEventData,
25810 sizeof(halRcvFltPktSetMcListRsp));
25811
25812 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25813 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25814 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25815 halRcvFltPktSetMcListRsp.bssIdx;
25816 }
25817 else
25818 {
25819 halStatus = *((eHalStatus*)pEventData->pEventData);
25820 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25821 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025822
25823 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025824 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025825
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025827}
25828
25829/**
25830 @brief Process Set Rsp function (called when a
25831 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025832
25833 @param pWDICtx: pointer to the WLAN DAL context
25834 pEventData: pointer to the event information structure
25835
Jeff Johnson295189b2012-06-20 16:38:30 -070025836 @see
25837 @return Result of the function call
25838*/
25839WDI_Status
25840WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025841(
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 WDI_ControlBlockType* pWDICtx,
25843 WDI_EventInfoType* pEventData
25844)
25845{
Jeff Johnson295189b2012-06-20 16:38:30 -070025846 eHalStatus halStatus;
25847 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025848 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25849 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25851
25852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025853 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025854
25855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 -------------------------------------------------------------------------*/
25858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25859 ( NULL == pEventData->pEventData ))
25860 {
25861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 }
25866
25867 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025868 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025869
25870 /*-------------------------------------------------------------------------
25871 Extract response and send it to UMAC
25872 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025873 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25874 {
25875 wpalMemoryCopy( &halSetPktFilterRspParams,
25876 pEventData->pEventData,
25877 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025878
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025879 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25880 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25881 }
25882 else
25883 {
25884 halStatus = *((eHalStatus*)pEventData->pEventData);
25885 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25886 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025888 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025889
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025891}
25892
25893/**
25894 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025895
25896 @param pWDICtx: pointer to the WLAN DAL context
25897 pEventData: pointer to the event information structure
25898
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 @see
25900 @return Result of the function call
25901*/
25902WDI_Status
25903WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025904(
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 WDI_ControlBlockType* pWDICtx,
25906 WDI_EventInfoType* pEventData
25907)
25908{
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025911 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25912 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025913
25914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25915
25916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025917 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025918
25919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025921 -------------------------------------------------------------------------*/
25922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25923 ( NULL == pEventData->pEventData ))
25924 {
25925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 }
25930
Jeff Johnsone7245742012-09-05 17:12:55 -070025931 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025932
25933 /*-------------------------------------------------------------------------
25934 Extract response and send it to UMAC
25935 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025936 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25937 {
25938 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25939 pEventData->pEventData,
25940 sizeof(halRcvFltrPktMatachRsp));
25941
25942 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25943 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25944 }
25945 else
25946 {
25947 halStatus = *((eHalStatus*)pEventData->pEventData);
25948 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25949 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025950
25951 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025952 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025953
Jeff Johnsone7245742012-09-05 17:12:55 -070025954 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025955}
25956
25957/**
25958 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025959
25960 @param pWDICtx: pointer to the WLAN DAL context
25961 pEventData: pointer to the event information structure
25962
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 @see
25964 @return Result of the function call
25965*/
25966WDI_Status
25967WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025968(
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 WDI_ControlBlockType* pWDICtx,
25970 WDI_EventInfoType* pEventData
25971)
25972{
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 eHalStatus halStatus;
25974 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025975 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25976 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25978
25979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025980 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025981
25982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025983 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025984 -------------------------------------------------------------------------*/
25985 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25986 ( NULL == pEventData->pEventData ))
25987 {
25988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 }
25993
25994 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025995 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025996
25997 /*-------------------------------------------------------------------------
25998 Extract response and send it to UMAC
25999 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026000 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26001 {
26002 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26003 pEventData->pEventData,
26004 sizeof(halRcvFltPktClearRspMsg));
26005
26006 wdiRcvFltPktClearRspParamsType.wdiStatus =
26007 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26008 wdiRcvFltPktClearRspParamsType.bssIdx =
26009 halRcvFltPktClearRspMsg.bssIdx;
26010 }
26011 else
26012 {
26013 halStatus = *((eHalStatus*)pEventData->pEventData);
26014 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26015 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026016
26017 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026018 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026019
Jeff Johnsone7245742012-09-05 17:12:55 -070026020 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026021}
26022#endif // WLAN_FEATURE_PACKET_FILTERING
26023
26024/**
26025 @brief Process Shutdown Rsp function
26026 There is no shutdown response comming from HAL
26027 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026028
Jeff Johnson295189b2012-06-20 16:38:30 -070026029 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026030 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026031
26032 @see
26033 @return Result of the function call
26034*/
26035WDI_Status
26036WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026037(
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 WDI_ControlBlockType* pWDICtx,
26039 WDI_EventInfoType* pEventData
26040)
26041{
26042 /*There is no shutdown response comming from HAL - function just kept for
26043 simmetry */
26044 WDI_ASSERT(0);
26045 return WDI_STATUS_SUCCESS;
26046}/*WDI_ProcessShutdownRsp*/
26047
26048/**
26049 @brief WDI_SetPowerParamsReq
26050
Jeff Johnsone7245742012-09-05 17:12:55 -070026051 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026052 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026053
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 wdiPowerParamsCb: callback for passing back the response
26055 of the Set Power Params operation received from the
26056 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026057
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026059 callback
26060
Jeff Johnson295189b2012-06-20 16:38:30 -070026061 @return Result of the function call
26062*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026064WDI_SetPowerParamsReq
26065(
26066 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26067 WDI_SetPowerParamsCb wdiPowerParamsCb,
26068 void* pUserData
26069)
26070{
26071 WDI_EventInfoType wdiEventData;
26072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26073
26074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026076 ------------------------------------------------------------------------*/
26077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26078 {
26079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26080 "WDI API call before module is initialized - Fail request");
26081
Jeff Johnsone7245742012-09-05 17:12:55 -070026082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 }
26084
26085 /*------------------------------------------------------------------------
26086 Fill in Event data and post to the Main FSM
26087 ------------------------------------------------------------------------*/
26088 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026089 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 wdiEventData.pUserData = pUserData;
26093
26094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26095}/*WDI_SetPowerParamsReq*/
26096
26097/**
26098 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026099
26100 @param pWDICtx: pointer to the WLAN DAL context
26101 pEventData: pointer to the event information structure
26102
Jeff Johnson295189b2012-06-20 16:38:30 -070026103 @see
26104 @return Result of the function call
26105*/
26106WDI_Status
26107WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026108(
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 WDI_ControlBlockType* pWDICtx,
26110 WDI_EventInfoType* pEventData
26111)
26112{
26113 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26114 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 wpt_uint16 usDataOffset = 0;
26117 wpt_uint16 usSendSize = 0;
26118 tSetPowerParamsType powerParams;
26119
26120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026122 -------------------------------------------------------------------------*/
26123 if (( NULL == pEventData ) ||
26124 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26125 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26126 {
26127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026128 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026130 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026131 }
26132
26133 /*-----------------------------------------------------------------------
26134 Get message buffer
26135 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026136 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 sizeof(powerParams),
26138 &pSendBuffer, &usDataOffset, &usSendSize))||
26139 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26140 {
26141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26142 "Unable to get send buffer in Set PNO req %x %x %x",
26143 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026146 }
26147
26148 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26151
26152 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26155
26156 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026158 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26159
26160 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026161 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026162 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26163
26164 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026165 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26167
26168 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026169 powerParams.uBETInterval =
26170 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026171
Yue Ma0da19492013-05-13 17:01:29 -070026172 /* MAX LI for modulated DTIM */
26173 powerParams.uMaxLIModulatedDTIM =
26174 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026175
26176 wpalMemoryCopy( pSendBuffer+usDataOffset,
26177 &powerParams,
26178 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026179
26180 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026181 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026182
26183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026184 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26187 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026188}
26189
26190/**
26191 @brief Process Power Params Rsp function (called when a
26192 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026193
26194 @param pWDICtx: pointer to the WLAN DAL context
26195 pEventData: pointer to the event information structure
26196
Jeff Johnson295189b2012-06-20 16:38:30 -070026197 @see
26198 @return Result of the function call
26199*/
26200WDI_Status
26201WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026202(
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 WDI_ControlBlockType* pWDICtx,
26204 WDI_EventInfoType* pEventData
26205)
26206{
26207 WDI_Status wdiStatus;
26208 eHalStatus halStatus;
26209 WDI_SetPowerParamsCb wdiPowerParamsCb;
26210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26211
26212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 -------------------------------------------------------------------------*/
26215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26216 ( NULL == pEventData->pEventData ))
26217 {
26218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 }
26223
Jeff Johnsone7245742012-09-05 17:12:55 -070026224 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026225
26226 /*-------------------------------------------------------------------------
26227 Extract response and send it to UMAC
26228 -------------------------------------------------------------------------*/
26229 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026230 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026231
26232 /*Notify UMAC*/
26233 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26234
Jeff Johnsone7245742012-09-05 17:12:55 -070026235 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026236}/*WDI_ProcessSetPowerParamsRsp*/
26237
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026238/**
26239 @brief WDI_dhcpStartInd
26240 Host will send an event to the FW when DHCP is initiated
26241
26242 @param
26243 WDI_DHCPInd: DHCP Indication
26244 @see
26245 @return Result of the function call
26246*/
26247WDI_Status
26248WDI_dhcpStartInd
26249(
26250 WDI_DHCPInd *wdiDHCPInd
26251)
26252{
26253 WDI_EventInfoType wdiEventData;
26254
26255 /*------------------------------------------------------------------------
26256 Sanity Check
26257 ------------------------------------------------------------------------*/
26258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26259 {
26260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26261 "WDI API call before module is initialized - Fail request");
26262
26263 return WDI_STATUS_E_NOT_ALLOWED;
26264 }
26265
26266 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26267 wdiEventData.pEventData = wdiDHCPInd;
26268 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26269 wdiEventData.pCBfnc = NULL;
26270 wdiEventData.pUserData = NULL;
26271
26272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26273}
26274
26275
26276/**
26277 @brief WDI_dhcpStopInd
26278 Host will send an event to the FW when DHCP is completed
26279
26280 @param
26281 WDI_DHCPInd: DHCP Indication
26282 @see
26283 @return Result of the function call
26284*/
26285WDI_Status
26286WDI_dhcpStopInd
26287(
26288 WDI_DHCPInd *wdiDHCPInd
26289)
26290{
26291 WDI_EventInfoType wdiEventData;
26292
26293 /*------------------------------------------------------------------------
26294 Sanity Check
26295 ------------------------------------------------------------------------*/
26296 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26297 {
26298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26299 "WDI API call before module is initialized - Fail request");
26300
26301 return WDI_STATUS_E_NOT_ALLOWED;
26302 }
26303
26304 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26305 wdiEventData.pEventData = wdiDHCPInd;
26306 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26307 wdiEventData.pCBfnc = NULL;
26308 wdiEventData.pUserData = NULL;
26309
26310 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26311}
26312
26313
26314/**
26315 @brief Process DHCP Start Indication message and post it to HAL
26316
26317 @param pWDICtx: pointer to the WLAN DAL context
26318 pEventData: pointer to the event information structure
26319
26320 @see
26321 @return Result of the function call
26322*/
26323WDI_Status
26324WDI_ProcessDHCPStartInd
26325(
26326 WDI_ControlBlockType* pWDICtx,
26327 WDI_EventInfoType* pEventData
26328)
26329{
26330 wpt_uint8* pSendBuffer = NULL;
26331 wpt_uint16 usDataOffset = 0;
26332 wpt_uint16 usSendSize = 0;
26333 wpt_uint16 usLen = 0;
26334 WDI_DHCPInd* pwdiDHCPInd = NULL;
26335 tDHCPInfo* pDHCPInfo;
26336
26337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26338
26339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26340 "%s", __func__);
26341
26342 /*-------------------------------------------------------------------------
26343 Sanity check
26344 -------------------------------------------------------------------------*/
26345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26346 {
26347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26348 "%s: Invalid parameters", __func__);
26349 WDI_ASSERT(0);
26350 return WDI_STATUS_E_FAILURE;
26351 }
26352 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26353 /*-----------------------------------------------------------------------
26354 Get message buffer
26355 -----------------------------------------------------------------------*/
26356
26357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26358 WDI_DHCP_START_IND,
26359 sizeof(tDHCPInfo),
26360 &pSendBuffer, &usDataOffset, &usSendSize))||
26361 ( usSendSize < (usDataOffset + usLen )))
26362 {
26363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26364 "Unable to get send buffer in DHCP Start req %p ",
26365 pEventData);
26366 WDI_ASSERT(0);
26367 return WDI_STATUS_E_FAILURE;
26368 }
26369
26370 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26371 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26372 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26373 WDI_MAC_ADDR_LEN);
26374
26375 pWDICtx->pReqStatusUserData = NULL;
26376 pWDICtx->pfncRspCB = NULL;
26377
26378 /*-------------------------------------------------------------------------
26379 Send DHCP Start Indication to HAL
26380 -------------------------------------------------------------------------*/
26381 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26382
26383}/*WDI_ProcessDHCPStartInd*/
26384
26385/**
26386 @brief Process DHCP Stop indication message and post it to HAL
26387
26388 @param pWDICtx: pointer to the WLAN DAL context
26389 pEventData: pointer to the event information structure
26390
26391 @see
26392 @return Result of the function call
26393*/
26394WDI_Status
26395WDI_ProcessDHCPStopInd
26396(
26397 WDI_ControlBlockType* pWDICtx,
26398 WDI_EventInfoType* pEventData
26399)
26400{
26401 wpt_uint8* pSendBuffer = NULL;
26402 wpt_uint16 usDataOffset = 0;
26403 wpt_uint16 usSendSize = 0;
26404 wpt_uint16 usLen = 0;
26405 WDI_DHCPInd* pwdiDHCPInd = NULL;
26406 tDHCPInfo* pDHCPInfo;
26407
26408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26409
26410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26411 "%s", __func__);
26412
26413 /*-------------------------------------------------------------------------
26414 Sanity check
26415 -------------------------------------------------------------------------*/
26416
26417 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26418 {
26419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26420 "%s: Invalid parameters", __func__);
26421 WDI_ASSERT(0);
26422 return WDI_STATUS_E_FAILURE;
26423 }
26424 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26425 /*-----------------------------------------------------------------------
26426 Get message buffer
26427 -----------------------------------------------------------------------*/
26428
26429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26430 WDI_DHCP_STOP_IND,
26431 sizeof(tDHCPInfo),
26432 &pSendBuffer, &usDataOffset, &usSendSize))||
26433 ( usSendSize < (usDataOffset + usLen )))
26434 {
26435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26436 "Unable to get send buffer in DHCP Start req %p ",
26437 pEventData);
26438 WDI_ASSERT(0);
26439 return WDI_STATUS_E_FAILURE;
26440 }
26441
26442 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26443 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26444 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26445 WDI_MAC_ADDR_LEN);
26446
26447 pWDICtx->pReqStatusUserData = NULL;
26448 pWDICtx->pfncRspCB = NULL;
26449 /*-------------------------------------------------------------------------
26450 Send DHCP Stop indication to HAL
26451 -------------------------------------------------------------------------*/
26452 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26453
26454}/*WDI_ProcessDHCPStopInd*/
26455
26456
Jeff Johnson295189b2012-06-20 16:38:30 -070026457#ifdef WLAN_FEATURE_GTK_OFFLOAD
26458/**
26459 @brief WDI_GTKOffloadReq will be called when the upper MAC
26460 wants to set GTK Rekey Counter while in power save. Upon
26461 the call of this API the WLAN DAL will pack and send a
26462 HAL GTK offload request message to the lower RIVA
26463 sub-system if DAL is in state STARTED.
26464
26465 In state BUSY this request will be queued. Request won't
26466 be allowed in any other state.
26467
26468 WDI_PostAssocReq must have been called.
26469
26470 @param pwdiGtkOffloadParams: the GTK offload as specified
26471 by the Device Interface
26472
26473 wdiGtkOffloadCb: callback for passing back the response
26474 of the GTK offload operation received from the device
26475
26476 pUserData: user data will be passed back with the
26477 callback
26478
26479 @see WDI_PostAssocReq
26480 @return Result of the function call
26481*/
26482WDI_Status
26483WDI_GTKOffloadReq
26484(
26485 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26486 WDI_GtkOffloadCb wdiGtkOffloadCb,
26487 void* pUserData
26488)
26489{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026490 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26492
26493 /*------------------------------------------------------------------------
26494 Sanity Check
26495 ------------------------------------------------------------------------*/
26496 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26497 {
26498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26499 "WDI API call before module is initialized - Fail request");
26500
26501 return WDI_STATUS_E_NOT_ALLOWED;
26502 }
26503
26504 /*------------------------------------------------------------------------
26505 Fill in Event data and post to the Main FSM
26506 ------------------------------------------------------------------------*/
26507 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26508 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026509 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026510 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26511 wdiEventData.pUserData = pUserData;
26512
26513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26514}
26515
26516
26517/**
26518 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26519 MAC wants to get GTK Rekey Counter while in power save.
26520 Upon the call of this API the WLAN DAL will pack and
26521 send a HAL GTK offload request message to the lower RIVA
26522 sub-system if DAL is in state STARTED.
26523
26524 In state BUSY this request will be queued. Request won't
26525 be allowed in any other state.
26526
26527 WDI_PostAssocReq must have been called.
26528
26529 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26530 Information Message as specified by the
26531 Device Interface
26532
26533 wdiGtkOffloadGetInfoCb: callback for passing back the
26534 response of the GTK offload operation received from the
26535 device
26536
26537 pUserData: user data will be passed back with the
26538 callback
26539
26540 @see WDI_PostAssocReq
26541 @return Result of the function call
26542*/
26543WDI_Status
26544WDI_GTKOffloadGetInfoReq
26545(
26546 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26547 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26548 void* pUserData
26549)
26550{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026551 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26553
26554 /*------------------------------------------------------------------------
26555 Sanity Check
26556 ------------------------------------------------------------------------*/
26557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26558 {
26559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26560 "WDI API call before module is initialized - Fail request");
26561
26562 return WDI_STATUS_E_NOT_ALLOWED;
26563 }
26564
26565 /*------------------------------------------------------------------------
26566 Fill in Event data and post to the Main FSM
26567 ------------------------------------------------------------------------*/
26568 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26569 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26570 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26571 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26572 wdiEventData.pUserData = pUserData;
26573
26574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26575}
26576
26577
26578/**
26579 @brief Process set GTK Offload Request function
26580
26581 @param pWDICtx: pointer to the WLAN DAL context
26582 pEventData: pointer to the event information structure
26583
26584 @see
26585 @return Result of the function call
26586*/
26587WDI_Status
26588WDI_ProcessGTKOffloadReq
26589(
26590 WDI_ControlBlockType* pWDICtx,
26591 WDI_EventInfoType* pEventData
26592)
26593{
26594 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26595 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26596 wpt_uint8* pSendBuffer = NULL;
26597 wpt_uint16 usDataOffset = 0;
26598 wpt_uint16 usSendSize = 0;
26599 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026600 wpt_uint8 ucCurrentSessionId = 0;
26601 WDI_BSSSessionType* pBSSSes = NULL;
26602
Jeff Johnson295189b2012-06-20 16:38:30 -070026603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26604
26605 /*-------------------------------------------------------------------------
26606 Sanity check
26607 -------------------------------------------------------------------------*/
26608 if (( NULL == pEventData ) ||
26609 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26610 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26611 {
26612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026614 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026615 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 }
26617
26618 /*-----------------------------------------------------------------------
26619 Get message buffer
26620 -----------------------------------------------------------------------*/
26621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26622 sizeof(gtkOffloadReqParams),
26623 &pSendBuffer, &usDataOffset, &usSendSize))||
26624 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26625 {
26626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26627 "Unable to get send buffer in GTK offload req %x %x %x",
26628 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26629 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026630 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026631 }
26632
26633 //
26634 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26635 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026636 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26637 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26638 &pBSSSes);
26639 if ( NULL == pBSSSes )
26640 {
26641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026642 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026643 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026644 }
26645
26646 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26647
Jeff Johnson295189b2012-06-20 16:38:30 -070026648 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26649 // Copy KCK
26650 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26651 // Copy KEK
26652 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26653 // Copy KeyReplayCounter
26654 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26655
26656 wpalMemoryCopy( pSendBuffer+usDataOffset,
26657 &gtkOffloadReqParams,
26658 sizeof(gtkOffloadReqParams));
26659
26660 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26661 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26662
26663 /*-------------------------------------------------------------------------
26664 Send Get STA Request to HAL
26665 -------------------------------------------------------------------------*/
26666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26667 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026668
26669fail:
26670 // Release the message buffer so we don't leak
26671 wpalMemoryFree(pSendBuffer);
26672
26673failRequest:
26674 //WDA should have failure check to avoid the memory leak
26675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026676}
26677
26678
26679/**
26680 @brief Process GTK Offload Get Information Request function
26681
26682 @param pWDICtx: pointer to the WLAN DAL context
26683 pEventData: pointer to the event information structure
26684
26685 @see
26686 @return Result of the function call
26687*/
26688WDI_Status
26689WDI_ProcessGTKOffloadGetInfoReq
26690(
26691 WDI_ControlBlockType* pWDICtx,
26692 WDI_EventInfoType* pEventData
26693)
26694{
26695 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26696 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26697 wpt_uint8* pSendBuffer = NULL;
26698 wpt_uint16 usDataOffset = 0;
26699 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026700 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26701 wpt_uint8 ucCurrentSessionId = 0;
26702 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026703
26704 /*-------------------------------------------------------------------------
26705 Sanity check
26706 -------------------------------------------------------------------------*/
26707 if (( NULL == pEventData ) ||
26708 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26709 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26710 {
26711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026713 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026714 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026715 }
26716
26717 /*-----------------------------------------------------------------------
26718 Get message buffer
26719 -----------------------------------------------------------------------*/
26720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026721 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026722 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026723 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026724 {
26725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26726 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26727 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26728 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026729 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026730 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026731 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26732 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26733 &pBSSSes);
26734 if ( NULL == pBSSSes )
26735 {
26736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026737 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026738 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026739 }
26740 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026741
26742 //
26743 // Don't need to fill send buffer other than header
26744 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026745 wpalMemoryCopy( pSendBuffer+usDataOffset,
26746 &halGtkOffloadGetInfoReqParams,
26747 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026748
26749 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26750 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26751
26752 /*-------------------------------------------------------------------------
26753 Send Get STA Request to HAL
26754 -------------------------------------------------------------------------*/
26755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26756 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026757fail:
26758 // Release the message buffer so we don't leak
26759 wpalMemoryFree(pSendBuffer);
26760
26761failRequest:
26762 //WDA should have failure check to avoid the memory leak
26763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026764}
26765
26766/**
26767 @brief Process host offload Rsp function (called when a
26768 response is being received over the bus from HAL)
26769
26770 @param pWDICtx: pointer to the WLAN DAL context
26771 pEventData: pointer to the event information structure
26772
26773 @see
26774 @return Result of the function call
26775*/
26776WDI_Status
26777WDI_ProcessGtkOffloadRsp
26778(
26779 WDI_ControlBlockType* pWDICtx,
26780 WDI_EventInfoType* pEventData
26781)
26782{
Jeff Johnson295189b2012-06-20 16:38:30 -070026783 eHalStatus halStatus;
26784 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026785 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26786 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26788
26789 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26790
26791 /*-------------------------------------------------------------------------
26792 Sanity check
26793 -------------------------------------------------------------------------*/
26794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26795 ( NULL == pEventData->pEventData))
26796 {
26797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026799 WDI_ASSERT(0);
26800 return WDI_STATUS_E_FAILURE;
26801 }
26802
26803 /*-------------------------------------------------------------------------
26804 Extract response and send it to UMAC
26805 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026806 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26807 {
26808 wpalMemoryCopy( &halGtkOffloadRspParams,
26809 pEventData->pEventData,
26810 sizeof(halGtkOffloadRspParams));
26811
26812 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026813 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026814 wdiGtkOffloadRsparams.bssIdx =
26815 halGtkOffloadRspParams.bssIdx;
26816 }
26817 else
26818 {
26819 halStatus = *((eHalStatus*)pEventData->pEventData);
26820 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26821 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026822
26823 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026824 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026825
26826 return WDI_STATUS_SUCCESS;
26827}
26828
26829/**
26830 @brief Process GTK Offload Get Information Response function
26831
26832 @param pWDICtx: pointer to the WLAN DAL context
26833 pEventData: pointer to the event information structure
26834
26835 @see
26836 @return Result of the function call
26837*/
26838WDI_Status
26839WDI_ProcessGTKOffloadGetInfoRsp
26840(
26841 WDI_ControlBlockType* pWDICtx,
26842 WDI_EventInfoType* pEventData
26843)
26844{
Jeff Johnson295189b2012-06-20 16:38:30 -070026845 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026847 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26848 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026849 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026850
26851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26852
26853 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26854
26855 /*-------------------------------------------------------------------------
26856 Sanity check
26857 -------------------------------------------------------------------------*/
26858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26859 ( NULL == pEventData->pEventData ))
26860 {
26861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026863 WDI_ASSERT(0);
26864 return WDI_STATUS_E_FAILURE;
26865 }
26866
26867 /*-------------------------------------------------------------------------
26868 Extract response and send it to UMAC
26869 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026870 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26871 {
26872 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26873 pEventData->pEventData,
26874 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026875
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026876 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026877 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026878 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26879 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26880 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26881 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26882 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26883 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26884 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26885 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026886
26887 wpalMutexAcquire(&pWDICtx->wptMutex);
26888 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26889 &pBSSSes);
26890
26891 if ( NULL == pBSSSes )
26892 {
26893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26894 "Association sequence for this BSS does not exist or "
26895 "association no longer in progress - mysterious HAL response");
26896 wpalMutexRelease(&pWDICtx->wptMutex);
26897 return WDI_STATUS_E_NOT_ALLOWED;
26898 }
26899
26900 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26901 sizeof (wpt_macAddr));
26902 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026903 }
26904 else
26905 {
26906 halStatus = *((eHalStatus*)pEventData->pEventData);
26907 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26908 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026909 /*Notify UMAC*/
26910 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26911 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026912 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026913
26914 return WDI_STATUS_SUCCESS;
26915}
26916#endif // WLAN_FEATURE_GTK_OFFLOAD
26917
26918#ifdef WLAN_WAKEUP_EVENTS
26919WDI_Status
26920WDI_ProcessWakeReasonInd
26921(
26922 WDI_ControlBlockType* pWDICtx,
26923 WDI_EventInfoType* pEventData
26924)
26925{
26926 WDI_LowLevelIndType *pWdiInd;
26927 tpWakeReasonParams pWakeReasonParams;
26928 wpt_uint32 allocSize = 0;
26929
26930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026931 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026932
26933 /*-------------------------------------------------------------------------
26934 Sanity check
26935 -------------------------------------------------------------------------*/
26936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26937 ( NULL == pEventData->pEventData ))
26938 {
26939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026941 WDI_ASSERT( 0 );
26942 return WDI_STATUS_E_FAILURE;
26943 }
26944
26945 /*-------------------------------------------------------------------------
26946 Extract indication and send it to UMAC
26947 -------------------------------------------------------------------------*/
26948 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26949
26950 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26951
26952 //Allocate memory for WDI_WakeReasonIndType structure
26953 pWdiInd = wpalMemoryAllocate(allocSize) ;
26954
26955 if(NULL == pWdiInd)
26956 {
26957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26958 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026959 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026960 WDI_ASSERT(0);
26961 return WDI_STATUS_E_FAILURE;
26962 }
26963
26964 wpalMemoryZero(pWdiInd, allocSize);
26965
26966 /* Fill in the indication parameters*/
26967 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26968 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26969 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26970 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26971 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26972 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26973 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26974 &(pWakeReasonParams->aDataStart[0]),
26975 pWakeReasonParams->ulStoredDataLen);
26976
ltimariu034f7d62013-01-24 18:54:33 -080026977
26978 if ( pWDICtx->wdiLowLevelIndCB )
26979 {
26980 /*Notify UMAC*/
26981 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026983
26984 //Free memory allocated for WDI_WakeReasonIndType structure
26985 wpalMemoryFree(pWdiInd);
26986
26987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026988 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026989
26990 return WDI_STATUS_SUCCESS;
26991}
26992#endif // WLAN_WAKEUP_EVENTS
26993
26994void WDI_GetWcnssCompiledApiVersion
26995(
26996 WDI_WlanVersionType *pWcnssApiVersion
26997)
26998{
26999 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27000 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27001 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27002 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27003}
27004
27005/**
27006 @brief Process Set TM Level Rsp function (called when a
27007 response is being received over the bus from HAL)
27008
27009 @param pWDICtx: pointer to the WLAN DAL context
27010 pEventData: pointer to the event information structure
27011
27012 @see
27013 @return Result of the function call
27014*/
27015WDI_Status
27016WDI_ProcessSetTmLevelRsp
27017(
27018 WDI_ControlBlockType* pWDICtx,
27019 WDI_EventInfoType* pEventData
27020)
27021{
27022 WDI_Status wdiStatus;
27023 eHalStatus halStatus;
27024 WDI_SetTmLevelCb wdiSetTmLevelCb;
27025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27026
27027 /*-------------------------------------------------------------------------
27028 Sanity check
27029 -------------------------------------------------------------------------*/
27030 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27031 ( NULL == pEventData->pEventData ))
27032 {
27033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027035 WDI_ASSERT(0);
27036 return WDI_STATUS_E_FAILURE;
27037 }
27038
27039 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27040
27041 /*-------------------------------------------------------------------------
27042 Extract response and send it to UMAC
27043 -------------------------------------------------------------------------*/
27044 halStatus = *((eHalStatus*)pEventData->pEventData);
27045 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27046
27047 /*Notify UMAC*/
27048 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27049
27050 return WDI_STATUS_SUCCESS;
27051}/*WDI_ProcessSetTmLevelRsp*/
27052
27053/**
27054 @brief Process Set Thermal Mitigation level Changed request
27055
27056 @param pWDICtx: pointer to the WLAN DAL context
27057 pEventData: pointer to the event information structure
27058
27059 @see
27060 @return Result of the function call
27061*/
27062WDI_Status
27063WDI_ProcessSetTmLevelReq
27064(
27065 WDI_ControlBlockType* pWDICtx,
27066 WDI_EventInfoType* pEventData
27067)
27068{
27069 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27070 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27071 wpt_uint8* pSendBuffer = NULL;
27072 wpt_uint16 usDataOffset = 0;
27073 wpt_uint16 usSendSize = 0;
27074 tSetThermalMitgationType halTmMsg;
27075
27076 /*-------------------------------------------------------------------------
27077 Sanity check
27078 -------------------------------------------------------------------------*/
27079 if (( NULL == pEventData ) ||
27080 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27081 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27082 {
27083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027085 WDI_ASSERT(0);
27086 return WDI_STATUS_E_FAILURE;
27087 }
27088
27089 /*-----------------------------------------------------------------------
27090 Get message buffer
27091 -----------------------------------------------------------------------*/
27092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27093 sizeof(halTmMsg),
27094 &pSendBuffer, &usDataOffset, &usSendSize))||
27095 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27096 {
27097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27098 "Unable to get send buffer in Set PNO req %x %x %x",
27099 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27100 WDI_ASSERT(0);
27101 return WDI_STATUS_E_FAILURE;
27102 }
27103
27104 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27105 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27106
27107 wpalMemoryCopy( pSendBuffer+usDataOffset,
27108 &halTmMsg,
27109 sizeof(halTmMsg));
27110
27111 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27112 pWDICtx->pfncRspCB = NULL;
27113 /*-------------------------------------------------------------------------
27114 Send Get STA Request to HAL
27115 -------------------------------------------------------------------------*/
27116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27117 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27118}
27119
27120/* Fill the value from the global features enabled array to the global capabilities
27121 * bitmap struct
27122 */
27123static void
27124FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27125{
27126 wpt_int8 i;
27127 for (i=0; i<len; i++)
27128 {
27129 setFeatCaps(fCaps, enabledFeat[i]);
27130 }
27131}
27132
27133/**
27134 @brief WDI_featureCapsExchangeReq
27135 Post feature capability bitmap exchange event.
27136 Host will send its own capability to FW in this req and
27137 expect FW to send its capability back as a bitmap in Response
27138
27139 @param
27140
27141 wdiFeatureCapsExchangeCb: callback called on getting the response.
27142 It is kept to mantain similarity between WDI reqs and if needed, can
27143 be used in future. Currently, It is set to NULL
27144
27145 pUserData: user data will be passed back with the
27146 callback
27147
27148 @see
27149 @return Result of the function call
27150*/
27151WDI_Status
27152WDI_featureCapsExchangeReq
27153(
27154 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27155 void* pUserData
27156)
27157{
27158 WDI_EventInfoType wdiEventData;
27159 wpt_int32 fCapsStructSize;
27160
27161 /*------------------------------------------------------------------------
27162 Sanity Check
27163 ------------------------------------------------------------------------*/
27164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27165 {
27166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27167 "WDI API call before module is initialized - Fail request");
27168
27169 return WDI_STATUS_E_NOT_ALLOWED;
27170 }
27171
27172 /* Allocate memory separately for global variable carrying FW caps */
27173 fCapsStructSize = sizeof(tWlanFeatCaps);
27174 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27175 if ( NULL == gpHostWlanFeatCaps )
27176 {
27177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27178 "Cannot allocate memory for host capability info\n");
27179 WDI_ASSERT(0);
27180 return WDI_STATUS_MEM_FAILURE;
27181 }
27182
27183 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27184
27185 /*------------------------------------------------------------------------
27186 Fill in Event data and post to the Main FSM
27187 ------------------------------------------------------------------------*/
27188 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27189 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027191 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027192 gpHostWlanFeatCaps->featCaps[0],
27193 gpHostWlanFeatCaps->featCaps[1],
27194 gpHostWlanFeatCaps->featCaps[2],
27195 gpHostWlanFeatCaps->featCaps[3]
27196 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27198 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027199 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27200 wdiEventData.pEventData = gpHostWlanFeatCaps;
27201 wdiEventData.uEventDataSize = fCapsStructSize;
27202 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27203 wdiEventData.pUserData = pUserData;
27204
27205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27206}
27207
27208/**
Yathishd8713192012-12-10 14:21:35 -080027209 @brief Disable Active mode offload in Host
27210
27211 @param void
27212 @see
27213 @return void
27214*/
27215void
27216WDI_disableCapablityFeature(wpt_uint8 feature_index)
27217{
27218 supportEnabledFeatures[feature_index] = 0;
27219 return;
27220}
27221
27222/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 @brief Process Host-FW Capability Exchange Request function
27224
27225 @param pWDICtx: pointer to the WLAN DAL context
27226 pEventData: pointer to the event information structure
27227
27228 @see
27229 @return Result of the function call
27230*/
27231WDI_Status
27232WDI_ProcessFeatureCapsExchangeReq
27233(
27234 WDI_ControlBlockType* pWDICtx,
27235 WDI_EventInfoType* pEventData
27236)
27237{
27238 wpt_uint8* pSendBuffer = NULL;
27239 wpt_uint16 usDataOffset = 0;
27240 wpt_uint16 usSendSize = 0;
27241 wpt_uint16 usLen = 0;
27242
27243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 /* Call back function is NULL since not required for cap exchange req */
27252 if (( NULL == pEventData ) ||
27253 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27254 {
27255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027257 WDI_ASSERT(0);
27258 return WDI_STATUS_E_FAILURE;
27259 }
27260
27261 /*-----------------------------------------------------------------------
27262 Get message buffer
27263 -----------------------------------------------------------------------*/
27264 usLen = sizeof(tWlanFeatCaps);
27265
27266 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27267 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27268 usLen,
27269 &pSendBuffer, &usDataOffset, &usSendSize))||
27270 ( usSendSize < (usDataOffset + usLen )))
27271 {
27272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27273 "Unable to get send buffer in feat caps exchange req %x %x",
27274 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27275 WDI_ASSERT(0);
27276 return WDI_STATUS_E_FAILURE;
27277 }
27278
27279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027280 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027281 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27282 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27283 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27284 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27285 );
27286
27287 /* Copy host caps after the offset in the send buffer */
27288 wpalMemoryCopy( pSendBuffer+usDataOffset,
27289 (tWlanFeatCaps *)pEventData->pEventData,
27290 usLen);
27291
27292 /*-------------------------------------------------------------------------
27293 Send Start Request to HAL
27294 -------------------------------------------------------------------------*/
27295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27296 (WDI_StartRspCb)pEventData->pCBfnc,
27297 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27298
27299}/*WDI_ProcessFeatureCapsExchangeReq*/
27300
27301/**
27302 @brief Process Host-FW Capability Exchange Response function
27303
27304 @param pWDICtx: pointer to the WLAN DAL context
27305 pEventData: pointer to the event information structure
27306
27307 @see
27308 @return Result of the function call
27309*/
27310WDI_Status
27311WDI_ProcessFeatureCapsExchangeRsp
27312(
27313 WDI_ControlBlockType* pWDICtx,
27314 WDI_EventInfoType* pEventData
27315)
27316{
27317 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27318 wpt_int32 fCapsStructSize;
27319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27320
27321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027322 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027323
27324 /*-------------------------------------------------------------------------
27325 Sanity check
27326 -------------------------------------------------------------------------*/
27327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27328 ( NULL == pEventData->pEventData ))
27329 {
27330 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027332 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 WDI_ASSERT(0);
27334 return WDI_STATUS_E_FAILURE;
27335 }
27336
27337 /* Allocate memory separately for global variable carrying FW caps */
27338 fCapsStructSize = sizeof(tWlanFeatCaps);
27339 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27340 if ( NULL == gpFwWlanFeatCaps )
27341 {
27342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27343 "Cannot allocate memory for host capability info\n");
27344 WDI_ASSERT(0);
27345 return WDI_STATUS_MEM_FAILURE;
27346 }
27347
27348 /*-------------------------------------------------------------------------
27349 Unpack HAL Response Message - the header was already extracted by the
27350 main Response Handling procedure
27351 -------------------------------------------------------------------------*/
27352 /*-------------------------------------------------------------------------
27353 Extract response and send it to UMAC
27354 -------------------------------------------------------------------------*/
27355
27356 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27357 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027359 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 gpFwWlanFeatCaps->featCaps[0],
27361 gpFwWlanFeatCaps->featCaps[1],
27362 gpFwWlanFeatCaps->featCaps[2],
27363 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027364 );
27365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27366 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027367 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27368
27369 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27370 if (wdiFeatureCapsExchangeCb != NULL)
27371 wdiFeatureCapsExchangeCb(NULL, NULL);
27372
27373 return WDI_STATUS_SUCCESS;
27374}
27375
Mohit Khanna4a70d262012-09-11 16:30:12 -070027376#ifdef WLAN_FEATURE_11AC
27377WDI_Status
27378WDI_ProcessUpdateVHTOpModeRsp
27379(
27380 WDI_ControlBlockType* pWDICtx,
27381 WDI_EventInfoType* pEventData
27382)
27383{
27384 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27385 WDI_Status wdiStatus;
27386 eHalStatus halStatus;
27387
27388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27389
27390 /*-------------------------------------------------------------------------
27391 Sanity check
27392 -------------------------------------------------------------------------*/
27393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27394 ( NULL == pEventData->pEventData))
27395 {
27396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027397 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027398 WDI_ASSERT(0);
27399 return WDI_STATUS_E_FAILURE;
27400 }
27401 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27402
27403 /*-------------------------------------------------------------------------
27404 Extract response and send it to UMAC
27405 -------------------------------------------------------------------------*/
27406 halStatus = *((eHalStatus*)pEventData->pEventData);
27407 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27408
27409 /*Notify UMAC*/
27410 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27411
27412 return WDI_STATUS_SUCCESS;
27413}
27414#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027415/**
27416 @brief WDI_getHostWlanFeatCaps
27417 WDI API that returns whether the feature passed to it as enum value in
27418 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27419 variable storing host capability bitmap to find this. This can be used by
27420 other moduels to decide certain things like call different APIs based on
27421 whether a particular feature is supported.
27422
27423 @param
27424
27425 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27426
27427 @see
27428 @return
27429 0 - if the feature is NOT supported in host
27430 any non-zero value - if the feature is SUPPORTED in host.
27431*/
27432wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27433{
27434 wpt_uint8 featSupported = 0;
27435 if (gpHostWlanFeatCaps != NULL)
27436 {
27437 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27438 }
27439 else
27440 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027442 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027443 }
27444 return featSupported;
27445}
27446
27447/**
27448 @brief WDI_getFwWlanFeatCaps
27449 WDI API that returns whether the feature passed to it as enum value in
27450 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27451 variable storing host capability bitmap to find this. This can be used by
27452 other moduels to decide certain things like call different APIs based on
27453 whether a particular feature is supported.
27454
27455 @param
27456
27457 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27458 in wlan_hal_msg.h.
27459
27460 @see
27461 @return
27462 0 - if the feature is NOT supported in FW
27463 any non-zero value - if the feature is SUPPORTED in FW.
27464*/
27465wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27466{
27467 wpt_uint8 featSupported = 0;
27468 if (gpFwWlanFeatCaps != NULL)
27469 {
27470 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27471 }
27472 else
27473 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027475 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027476 }
27477 return featSupported;
27478}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027479
27480#ifdef WLAN_FEATURE_11AC
27481WDI_Status
27482WDI_ProcessUpdateVHTOpModeReq
27483(
27484 WDI_ControlBlockType* pWDICtx,
27485 WDI_EventInfoType* pEventData
27486)
27487{
27488 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27489 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27490 wpt_uint8* pSendBuffer = NULL;
27491 wpt_uint16 usDataOffset = 0;
27492 wpt_uint16 usSendSize = 0;
27493
27494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27495
27496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027497 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027498
27499 /*-------------------------------------------------------------------------
27500 Sanity check
27501 -------------------------------------------------------------------------*/
27502 if (( NULL == pEventData ) ||
27503 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27504 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27505 {
27506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027507 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027508 WDI_ASSERT(0);
27509 return WDI_STATUS_E_FAILURE;
27510 }
27511
27512 /*-----------------------------------------------------------------------
27513 Get message buffer
27514 -----------------------------------------------------------------------*/
27515 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27516 sizeof(WDI_UpdateVHTOpMode),
27517 &pSendBuffer, &usDataOffset, &usSendSize))||
27518 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27519 {
27520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27521 "Unable to get send buffer in update vht opMode req");
27522 WDI_ASSERT(0);
27523 return WDI_STATUS_E_FAILURE;
27524 }
27525
27526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27527 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27528
27529 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27530 sizeof(WDI_UpdateVHTOpMode));
27531
27532 /*-------------------------------------------------------------------------
27533 Send Start Request to HAL
27534 -------------------------------------------------------------------------*/
27535 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27536 wdiVHTOpModeCb,
27537 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27538
27539}
27540
27541WDI_Status
27542WDI_UpdateVHTOpModeReq
27543(
27544 WDI_UpdateVHTOpMode *pData,
27545 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27546 void* pUserData
27547)
27548{
27549 WDI_EventInfoType wdiEventData;
27550
27551 /*------------------------------------------------------------------------
27552 Sanity Check
27553 ------------------------------------------------------------------------*/
27554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27555 {
27556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27557 "WDI API call before module is initialized - Fail request");
27558
27559 return WDI_STATUS_E_NOT_ALLOWED;
27560 }
27561
27562 /*------------------------------------------------------------------------
27563 Fill in Event data and post to the Main FSM
27564 ------------------------------------------------------------------------*/
27565 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27566 wdiEventData.pEventData = pData;
27567 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27568 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27569 wdiEventData.pUserData = pUserData;
27570
27571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27572 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27573
27574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27575
27576}
27577#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027578
27579/**
27580 @brief WDI_TransportChannelDebug -
27581 Display DXE Channel debugging information
27582 User may request to display DXE channel snapshot
27583 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027584
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027585 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027586 @param enableStallDetect : Enable stall detect feature
27587 This feature will take effect to data performance
27588 Not integrate till fully verification
27589 @see
27590 @return none
27591*/
27592void WDI_TransportChannelDebug
27593(
27594 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027595 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027596)
27597{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027598 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027599 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027600}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027601/**
27602 @brief WDI_SsrTimerCB
27603 Callback function for SSR timer, if this is called then the graceful
27604 shutdown for Riva did not happen.
27605
27606 @param pUserData : user data to timer
27607
27608 @see
27609 @return none
27610*/
27611void
27612WDI_SsrTimerCB
27613(
27614 void *pUserData
27615)
27616{
27617 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27619
27620 if (NULL == pWDICtx )
27621 {
27622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027623 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027624 WDI_ASSERT(0);
27625 return;
27626 }
27627 wpalRivaSubystemRestart();
27628
27629 return;
27630
27631}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027632
27633/**
27634 @brief WDI_SetEnableSSR -
27635 This API is called to enable/disable SSR on WDI timeout.
27636
27637 @param enableSSR : enable/disable SSR
27638
27639 @see
27640 @return none
27641*/
27642void WDI_SetEnableSSR(wpt_boolean enableSSR)
27643{
27644 gWDICb.bEnableSSR = enableSSR;
27645}
Leo Chang00bc9132013-08-01 19:21:11 -070027646
27647
27648#ifdef FEATURE_WLAN_LPHB
27649/**
27650 @brief WDI_ProcessLphbWaitTimeoutInd -
27651 This function will be invoked when FW detects low power
27652 heart beat failure
27653
27654 @param pWDICtx : wdi context
27655 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070027656 @see
27657 @return Result of the function call
27658*/
27659WDI_Status
27660WDI_ProcessLphbWaitTimeoutInd
27661(
27662 WDI_ControlBlockType* pWDICtx,
27663 WDI_EventInfoType* pEventData
27664)
27665{
27666 WDI_LowLevelIndType wdiInd;
27667 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27669
27670 /*-------------------------------------------------------------------------
27671 Sanity check
27672 -------------------------------------------------------------------------*/
27673 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27674 (NULL == pEventData->pEventData))
27675 {
27676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27677 "%s: Invalid parameters", __func__);
27678 WDI_ASSERT(0);
27679 return WDI_STATUS_E_FAILURE;
27680 }
27681
27682 /*-------------------------------------------------------------------------
27683 Extract indication and send it to UMAC
27684 -------------------------------------------------------------------------*/
27685 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
27686
27687 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
27688 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
27689 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
27690 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
27691 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
27692 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
27693 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
27694 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
27695 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
27696 /*Notify UMAC*/
27697 if (pWDICtx->wdiLowLevelIndCB)
27698 {
27699 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
27700 }
27701
27702 return WDI_STATUS_SUCCESS;
27703}
27704
27705/**
27706 @brief WDI_ProcessLphbCfgRsp -
27707 LPHB configuration response from FW
27708
27709 @param pWDICtx : wdi context
27710 pEventData : indication data
27711
27712 @see
27713 @return Result of the function call
27714*/
27715WDI_Status WDI_ProcessLphbCfgRsp
27716(
27717 WDI_ControlBlockType* pWDICtx,
27718 WDI_EventInfoType* pEventData
27719)
27720{
27721 WDI_Status wdiStatus;
27722 eHalStatus halStatus;
27723 WDI_LphbCfgCb wdiLphbCfgCb;
27724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27725
27726 /*-------------------------------------------------------------------------
27727 Sanity check
27728 -------------------------------------------------------------------------*/
27729 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27730 (NULL == pEventData->pEventData))
27731 {
27732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27733 "%s: Invalid parameters", __func__);
27734 WDI_ASSERT(0);
27735 return WDI_STATUS_E_FAILURE;
27736 }
27737
27738 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
27739
27740 /*-------------------------------------------------------------------------
27741 Extract response and send it to UMAC
27742 -------------------------------------------------------------------------*/
27743 halStatus = *((eHalStatus*)pEventData->pEventData);
27744 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27745
27746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27747 "LPHB Cfg Rsp Return status %d", wdiStatus);
27748 /*Notify UMAC*/
27749 if (NULL != wdiLphbCfgCb)
27750 {
27751 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
27752 }
27753
27754 return WDI_STATUS_SUCCESS;
27755}
27756
27757/**
27758 @brief WDI_ProcessLPHBConfReq -
27759 LPHB configuration request to FW
27760
27761 @param pWDICtx : wdi context
27762 pEventData : indication data
27763
27764 @see
27765 @return none
27766*/
27767WDI_Status WDI_ProcessLPHBConfReq
27768(
27769 WDI_ControlBlockType* pWDICtx,
27770 WDI_EventInfoType* pEventData
27771)
27772{
27773 WDI_LPHBReq *pLphbReqParams;
27774 WDI_Status wdiStatus;
27775 wpt_uint8* pSendBuffer = NULL;
27776 wpt_uint16 usDataOffset = 0;
27777 wpt_uint16 usSendSize = 0;
27778 tHalLowPowerHeartBeatReq *halLphbReqRarams;
27779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27780
27781 /*-------------------------------------------------------------------------
27782 Sanity check
27783 -------------------------------------------------------------------------*/
27784 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
27785 {
27786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27787 "%s: Invalid parameters in Suspend ind",__func__);
27788 WDI_ASSERT(0);
27789 return WDI_STATUS_E_FAILURE;
27790 }
27791
27792 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
27793
27794 /*-----------------------------------------------------------------------
27795 Get message buffer
27796 -----------------------------------------------------------------------*/
27797 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27798 WDI_LPHB_CFG_REQ,
27799 sizeof(tHalLowPowerHeartBeatReqMsg),
27800 &pSendBuffer, &usDataOffset, &usSendSize))||
27801 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
27802 {
27803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27804 "Unable to get send buffer in LPHB Ind ");
27805 WDI_ASSERT(0);
27806 return WDI_STATUS_E_FAILURE;
27807 }
27808
27809 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
27810 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
27811
27812 halLphbReqRarams->lowPowerHeartBeatCmdType =
27813 (tANI_U16)(++pLphbReqParams->cmd);
27814 switch ((tANI_U16)pLphbReqParams->cmd)
27815 {
27816 case WDI_LPHB_SET_EN_PARAMS_INDID:
27817 halLphbReqRarams->sessionIdx =
27818 pLphbReqParams->params.lphbEnableReq.session;
27819 halLphbReqRarams->options.control.heartBeatEnable =
27820 pLphbReqParams->params.lphbEnableReq.enable;
27821 halLphbReqRarams->options.control.heartBeatType =
27822 pLphbReqParams->params.lphbEnableReq.item;
27823 break;
27824
27825 case WDI_LPHB_SET_TCP_PARAMS_INDID:
27826 halLphbReqRarams->sessionIdx =
27827 pLphbReqParams->params.lphbTcpParamReq.session;
27828 halLphbReqRarams->options.tcpParams.timeOutSec =
27829 pLphbReqParams->params.lphbTcpParamReq.timeout;
27830 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
27831 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
27832 sizeof(v_U32_t));
27833 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
27834 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
27835 sizeof(v_U32_t));
27836
27837 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
27838 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
27839 WDI_MAC_ADDR_LEN);
27840
27841 halLphbReqRarams->options.tcpParams.hostPort =
27842 pLphbReqParams->params.lphbTcpParamReq.src_port;
27843 halLphbReqRarams->options.tcpParams.destPort =
27844 pLphbReqParams->params.lphbTcpParamReq.dst_port;
27845 break;
27846
27847 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
27848 halLphbReqRarams->sessionIdx =
27849 pLphbReqParams->params.lphbTcpFilterReq.session;
27850 halLphbReqRarams->options.tcpUdpFilter.offset =
27851 pLphbReqParams->params.lphbTcpFilterReq.offset;
27852 halLphbReqRarams->options.tcpUdpFilter.filterLength =
27853 pLphbReqParams->params.lphbTcpFilterReq.length;
27854 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
27855 pLphbReqParams->params.lphbTcpFilterReq.filter,
27856 WDI_LPHB_FILTER_LEN);
27857 break;
27858
27859 case WDI_LPHB_SET_UDP_PARAMS_INDID:
27860 halLphbReqRarams->sessionIdx =
27861 pLphbReqParams->params.lphbUdpParamReq.session;
27862 halLphbReqRarams->options.udpParams.timeOutSec =
27863 pLphbReqParams->params.lphbUdpParamReq.timeout;
27864 halLphbReqRarams->options.udpParams.timePeriodSec =
27865 pLphbReqParams->params.lphbUdpParamReq.interval;
27866 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
27867 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
27868 sizeof(v_U32_t));
27869 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
27870 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
27871 sizeof(v_U32_t));
27872
27873 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
27874 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
27875 WDI_MAC_ADDR_LEN);
27876
27877 halLphbReqRarams->options.udpParams.hostPort =
27878 pLphbReqParams->params.lphbUdpParamReq.src_port;
27879 halLphbReqRarams->options.udpParams.destPort =
27880 pLphbReqParams->params.lphbUdpParamReq.dst_port;
27881 break;
27882
27883 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
27884 halLphbReqRarams->sessionIdx =
27885 pLphbReqParams->params.lphbUdpFilterReq.session;
27886 halLphbReqRarams->options.tcpUdpFilter.offset =
27887 pLphbReqParams->params.lphbUdpFilterReq.offset;
27888 halLphbReqRarams->options.tcpUdpFilter.filterLength =
27889 pLphbReqParams->params.lphbUdpFilterReq.length;
27890 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
27891 pLphbReqParams->params.lphbUdpFilterReq.filter,
27892 WDI_LPHB_FILTER_LEN);
27893 break;
27894
27895 case WDI_LPHB_SET_NETWORK_INFO_INDID:
27896 /* NA */
27897 break;
27898
27899 default:
27900 break;
27901 }
27902
27903 /*-------------------------------------------------------------------------
27904 Send Suspend Request to HAL
27905 -------------------------------------------------------------------------*/
27906 pWDICtx->pfncRspCB = pEventData->pCBfnc;
27907 pWDICtx->pReqStatusUserData = pEventData->pUserData;
27908
27909 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
27910 usSendSize, pWDICtx->pfncRspCB,
27911 pWDICtx->pReqStatusUserData,
27912 WDI_LPHB_CFG_RESP);
27913
27914 return wdiStatus;
27915}
27916
27917/**
27918 @brief WDI_LPHBConfReq -
27919 LPHB configuration request API
27920
27921 @param lphbconfParam : configuration parameter
27922 usrData : client context
27923 lphbCfgCb : callback function pointer
27924
27925 @see
27926 @return Success or fail status code
27927*/
27928WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
27929 void *usrData, WDI_LphbCfgCb lphbCfgCb)
27930{
27931 WDI_EventInfoType wdiEventData;
27932
27933 /*------------------------------------------------------------------------
27934 Sanity Check
27935 ------------------------------------------------------------------------*/
27936 if (eWLAN_PAL_FALSE == gWDIInitialized)
27937 {
27938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27939 "WDI API call before module is initialized - Fail request");
27940
27941 return WDI_STATUS_E_NOT_ALLOWED;
27942 }
27943
27944 /*------------------------------------------------------------------------
27945 Fill in Event data and post to the Main FSM
27946 ------------------------------------------------------------------------*/
27947 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
27948 wdiEventData.pEventData = lphbconfParam;
27949 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
27950 wdiEventData.pCBfnc = lphbCfgCb;
27951 wdiEventData.pUserData = usrData;
27952
27953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27954}
27955#endif /* FEATURE_WLAN_LPHB */
27956
Ravi Joshi96d77342013-07-23 08:37:49 -070027957/**
27958 @brief WDI_ProcessIbssPeerInactivityInd
27959 Process peer inactivity indication coming from HAL
27960
27961 @param pWDICtx: pointer to the WLAN DAL context
27962 pEventData: pointer to the event information structure
27963 @see
27964 @return Result of the function call
27965*/
27966WDI_Status
27967WDI_ProcessIbssPeerInactivityInd
27968(
27969 WDI_ControlBlockType* pWDICtx,
27970 WDI_EventInfoType* pEventData
27971)
27972{
27973 WDI_LowLevelIndType wdiInd;
27974 tIbssPeerInactivityIndMsg halIbssIndMsg;
27975
27976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27977
27978 /*-------------------------------------------------------------------------
27979 Sanity check
27980 -------------------------------------------------------------------------*/
27981 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27982 ( NULL == pEventData->pEventData ))
27983 {
27984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27985 "%s: Invalid parameters", __func__);
27986 WDI_ASSERT( 0 );
27987 return WDI_STATUS_E_FAILURE;
27988 }
27989
27990 /*-------------------------------------------------------------------------
27991 Extract indication and send it to UMAC
27992 -------------------------------------------------------------------------*/
27993 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
27994 pEventData->pEventData,
27995 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
27996
27997 /*Fill in the indication parameters*/
27998 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
27999
28000 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28001 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28002
28003 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28004 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28005
28006 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28007 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28008 sizeof(tSirMacAddr));
28009
28010 /*Notify UMAC*/
28011 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28012
28013 return WDI_STATUS_SUCCESS;
28014
28015} /*WDI_ProcessIbssPeerInactivityInd*/