blob: ce2733b462228cc397fef81c91c68a3c64952774 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam1ed83fc2014-02-19 01:15:45 -08002 * Copyright (c) 2012-2014 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
22/*
23 * Copyright (c) 2012-2014 Qualcomm Atheros, Inc.
24 * All Rights Reserved.
25 * Qualcomm Atheros Confidential and Proprietary.
26 *
27 */
28
Jeff Johnson295189b2012-06-20 16:38:30 -070029
30/*===========================================================================
31
32 W L A N _ Q C T _ W D I. C
33
34 OVERVIEW:
35
Jeff Johnsone7245742012-09-05 17:12:55 -070036 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070037 Layer Interface.
38
Jeff Johnsone7245742012-09-05 17:12:55 -070039 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070040 MAC implementation that wishes to use the WLAN Device.
41
42 DEPENDENCIES:
43
44 Are listed for each API below.
45
46
Kiet Lamaa8e15a2014-02-11 23:30:06 -080047 Copyright (c) 2008 QUALCOMM Incorporated.
48 All Rights Reserved.
49 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070050===========================================================================*/
51
52/*===========================================================================
53
54 EDIT HISTORY FOR FILE
55
56
57 This section contains comments describing changes made to the module.
58 Notice that changes are listed in reverse chronological order.
59
60
61 $Header$$DateTime$$Author$
62
63
64 when who what, where, why
65---------- --- --------------------------------------------------------
6610/05/11 hap Adding support for Keep Alive
672010-08-09 lti Created module
68
69===========================================================================*/
70
71/*----------------------------------------------------------------------------
72 * Include Files
73 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070074#include "wlan_qct_wdi.h"
75#include "wlan_qct_wdi_i.h"
76#include "wlan_qct_wdi_sta.h"
77#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
Jeff Johnsone7245742012-09-05 17:12:55 -070079#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070080
81#include "wlan_qct_pal_api.h"
82#include "wlan_qct_pal_type.h"
83#include "wlan_qct_pal_status.h"
84#include "wlan_qct_pal_sync.h"
85#include "wlan_qct_pal_msg.h"
86#include "wlan_qct_pal_trace.h"
87#include "wlan_qct_pal_packet.h"
88
Jeff Johnsone7245742012-09-05 17:12:55 -070089#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
91#include "wlan_hal_msg.h"
92
Jeff Johnson295189b2012-06-20 16:38:30 -070093#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070094#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070095
96/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070097 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070098 ===========================================================================*/
99#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
102#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
103
Yue Mad8cac142013-03-28 11:33:46 -0700104#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700105
106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
179 ,LINK_LAYER_STATS_MEAS //40
180#else
181 ,FEATURE_NOT_SUPPORTED //40
182#endif
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800183
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530184};
Jeff Johnson295189b2012-06-20 16:38:30 -0700185
186/*--------------------------------------------------------------------------
187 WLAN DAL State Machine
188 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700189WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700190{
191 /*WDI_INIT_ST*/
192 {{
193 WDI_MainStart, /*WDI_START_EVENT*/
194 NULL, /*WDI_STOP_EVENT*/
195 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
196 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
197 WDI_MainClose, /*WDI_CLOSE_EVENT*/
198 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
199 }},
200
201 /*WDI_STARTED_ST*/
202 {{
203 WDI_MainStartStarted, /*WDI_START_EVENT*/
204 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
205 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
206 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
207 NULL, /*WDI_CLOSE_EVENT*/
208 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
209 }},
210
211 /*WDI_STOPPED_ST*/
212 {{
213 WDI_MainStart, /*WDI_START_EVENT*/
214 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
215 NULL, /*WDI_REQUEST_EVENT*/
216 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
217 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700218 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700219 }},
220
221 /*WDI_BUSY_ST*/
222 {{
223 WDI_MainStartBusy, /*WDI_START_EVENT*/
224 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
225 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
226 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
227 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
228 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
229 }}
230};
231
Jeff Johnsone7245742012-09-05 17:12:55 -0700232/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700233 DAL Request Processing Array - the functions in this table will only be
234 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700235 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700236 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700237WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700238{
239 /*INIT*/
240 WDI_ProcessStartReq, /* WDI_START_REQ */
241 WDI_ProcessStopReq, /* WDI_STOP_REQ */
242 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
243
244 /*SCAN*/
245 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
246 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
247 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
248 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
249
250 /*ASSOCIATION*/
251 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
252 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
253 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
254 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
255 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
256
257 /* Security */
258 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
259 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
260 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
261 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
262
263 /* QoS and BA APIs */
264 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
265 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
266 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
267 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
268 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
269
270 /* Miscellaneous Control APIs */
271 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
272 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
273 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
274 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
275 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
276
277 /*BA APIs*/
278 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
279 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
280
281 /*Beacon processing APIs*/
282 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
283 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
284
285 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
286 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
287 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
288 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700289 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700290 /* PowerSave APIs */
291 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
292 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
293 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
294 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
295 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
296 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
297 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
298 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
299 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
300 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
301 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
302 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
303 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
304 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
305 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
306 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
307 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
308 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
309 /*NV Download APIs*/
310 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
311 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
312 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
313#ifdef WLAN_FEATURE_VOWIFI_11R
314 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
315#else
316 NULL,
317#endif /* WLAN_FEATURE_VOWIFI_11R */
318 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
319 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700320 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700321
322#ifdef FEATURE_OEM_DATA_SUPPORT
323 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
324#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700325 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700326#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700327 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700328
329 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700330
331#ifdef FEATURE_WLAN_SCAN_PNO
332 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
333 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
334 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
335#else
336 NULL,
337 NULL,
338 NULL,
339#endif /* FEATURE_WLAN_SCAN_PNO */
340
341 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700342
Jeff Johnson295189b2012-06-20 16:38:30 -0700343#ifdef WLAN_FEATURE_PACKET_FILTERING
344 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700345 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700346 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700347 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700349 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700351 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700352#else
353 NULL,
354 NULL,
355 NULL,
356 NULL,
357#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700358 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700359 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
360 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
361
362 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800363#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700364 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
365#else
366 NULL,
367#endif
368
369#ifdef WLAN_FEATURE_GTK_OFFLOAD
370 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
371 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
372#else
373 NULL,
374 NULL,
375#endif // WLAN_FEATURE_GTK_OFFLOAD
376
377 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
378 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700379#ifdef WLAN_FEATURE_11AC
380 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800381#else
382 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700383#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800384#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800385 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
386#else
schang86c22c42013-03-13 18:41:24 -0700387 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800388#endif
schang86c22c42013-03-13 18:41:24 -0700389 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700390#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700391 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700392#else
393 NULL,
394#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530395#ifdef FEATURE_WLAN_TDLS
396 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
397#else
398 NULL,
399#endif
Leo Chang9056f462013-08-01 19:21:11 -0700400#ifdef FEATURE_WLAN_LPHB
401 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
402#else
403 NULL,
404#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530405
406#ifdef FEATURE_WLAN_BATCH_SCAN
407 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
408#else
409 NULL,
410#endif /* FEATURE_WLAN_BATCH_SCAN */
411
Arif Hussaina5ebce02013-08-09 15:09:58 -0700412 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800413
414 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530415
416 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530417
418#ifdef WLAN_FEATURE_LINK_LAYER_STATS
419 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
420 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
421 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
422#else
423 NULL,
424 NULL,
425 NULL,
426#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530427#ifdef WLAN_FEATURE_EXTSCAN
428 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
429 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
430 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
431 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
432 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
433 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
434 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
435 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
436#else
437 NULL,
438 NULL,
439 NULL,
440 NULL,
441 NULL,
442 NULL,
443 NULL,
444 NULL,
445#endif /* WLAN_FEATURE_EXTSCAN */
schang86c22c42013-03-13 18:41:24 -0700446 /*-------------------------------------------------------------------------
447 Indications
448 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700449 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800450 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530451 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
452 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700453#ifdef WLAN_FEATURE_11W
454 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
455#else
456 NULL,
457#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700458 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
459 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530460#ifdef FEATURE_WLAN_BATCH_SCAN
461 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
462 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
463#else
464 NULL,
465 NULL,
466#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700467 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800468
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530469 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800470 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
471
472 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530473
Jeff Johnson295189b2012-06-20 16:38:30 -0700474};
475
476
Jeff Johnsone7245742012-09-05 17:12:55 -0700477/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 DAL Request Processing Array - the functions in this table will only be
479 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700480 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700481 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700482WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700483{
484 /*INIT*/
485 WDI_ProcessStartRsp, /* WDI_START_RESP */
486 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
487 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
488
489 /*SCAN*/
490 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
491 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
492 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
493 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
494
495 /* ASSOCIATION*/
496 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
497 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
498 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
499 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
500 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
501
502 /* Security */
503 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
504 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
505 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
506 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
507
508 /* QoS and BA APIs */
509 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
510 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
511 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
512 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
513 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
514
515 /* Miscellaneous Control APIs */
516 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
517 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
518 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
519 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
520 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
521
522 /* BA APIs*/
523 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
524 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700525
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 /* IBSS APIs*/
527 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
528 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
529
530 /*Soft AP APIs*/
531 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
532 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
533 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
534 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
535
536 /* PowerSave APIs */
537 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
538 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
539 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
540 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
541 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
542 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
543 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
544 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
545 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
546 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
547 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
548 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
549 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
550 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
551 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
552 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
553 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
554 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700555
Jeff Johnson295189b2012-06-20 16:38:30 -0700556
557 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
558
559 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
560 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
561#ifdef WLAN_FEATURE_VOWIFI_11R
562 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
563#else
564 NULL,
565#endif /* WLAN_FEATURE_VOWIFI_11R */
566 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
567 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700568#ifdef FEATURE_OEM_DATA_SUPPORT
569 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
570#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700571 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700572#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700573 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
574
Jeff Johnson295189b2012-06-20 16:38:30 -0700575 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700576
Jeff Johnson295189b2012-06-20 16:38:30 -0700577 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700578
Jeff Johnsone7245742012-09-05 17:12:55 -0700579 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
580
Jeff Johnson295189b2012-06-20 16:38:30 -0700581#ifdef FEATURE_WLAN_SCAN_PNO
582 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
583 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
584 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
585#else
586 NULL,
587 NULL,
588 NULL,
589#endif // FEATURE_WLAN_SCAN_PNO
590
591 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
592
593 /*---------------------------------------------------------------------
594 Indications
595 ---------------------------------------------------------------------*/
596#ifdef WLAN_FEATURE_PACKET_FILTERING
597 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700598 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700599 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700600 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700601 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700602 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700603 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700604 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700605#else
606 NULL,
607 NULL,
608 NULL,
609 NULL,
610#endif // WLAN_FEATURE_PACKET_FILTERING
611
612 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
613 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
614
615 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800616#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
618#else
619 NULL,
620#endif
621
622#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700623 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
624 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700625#else
626 NULL,
627 NULL,
628#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700629 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
630 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700631#ifdef WLAN_FEATURE_11AC
632 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700633#else
634 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700635#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800636#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800637 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
638#else
639 NULL,
640#endif
schang86c22c42013-03-13 18:41:24 -0700641 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700642#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700643 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700644#else
645 NULL,
646#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530647#ifdef FEATURE_WLAN_TDLS
648 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
649#else
650 NULL,
651#endif
Leo Chang9056f462013-08-01 19:21:11 -0700652#ifdef FEATURE_WLAN_LPHB
653 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
654#else
655 NULL,
656#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530657
658#ifdef FEATURE_WLAN_BATCH_SCAN
659 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
660#else
661 NULL,
662#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800663 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530664
c_hpothu92367912014-05-01 15:18:17 +0530665 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800666
c_hpothu92367912014-05-01 15:18:17 +0530667 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
668
669 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800670
Sunil Duttbd736ed2014-05-26 21:19:41 +0530671
672#ifdef WLAN_FEATURE_LINK_LAYER_STATS
673 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
674 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
675 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
676#else
677 NULL,
678 NULL,
679 NULL,
680#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530681#ifdef WLAN_FEATURE_EXTSCAN
682 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
683 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
684 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
685 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
686 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
687 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
688 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
689 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
690#else
691 NULL,
692 NULL,
693 NULL,
694 NULL,
695 NULL,
696 NULL,
697 NULL,
698 NULL,
699#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700700 /*---------------------------------------------------------------------
701 Indications
702 ---------------------------------------------------------------------*/
703 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
704 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
705 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
706 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
707 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
708 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
709
710 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
711
712 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
713
Jeff Johnson295189b2012-06-20 16:38:30 -0700714 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700715
716#ifdef FEATURE_WLAN_SCAN_PNO
717 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
718#else
719 NULL,
720#endif // FEATURE_WLAN_SCAN_PNO
721
722#ifdef WLAN_WAKEUP_EVENTS
723 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
724#else // WLAN_WAKEUP_EVENTS
725 NULL,
726#endif // WLAN_WAKEUP_EVENTS
727
728 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800729
Viral Modid86bde22012-12-10 13:09:21 -0800730 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530731#ifdef FEATURE_WLAN_TDLS
732 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
733#else
734 NULL,
735#endif
Leo Chang9056f462013-08-01 19:21:11 -0700736
737#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700738 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700739#else
740 NULL,
741#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700742
743 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700744
745 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530746
747#ifdef FEATURE_WLAN_BATCH_SCAN
748 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
749#else
750 NULL,
751#endif
752
Leo Chang0b0e45a2013-12-15 15:18:55 -0800753#ifdef FEATURE_WLAN_CH_AVOID
754 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
755#else
756 NULL,
757#endif /* FEATURE_WLAN_CH_AVOID */
758
Sunil Duttbd736ed2014-05-26 21:19:41 +0530759 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
760#ifdef WLAN_FEATURE_LINK_LAYER_STATS
761 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
762#else
763 NULL,
764#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530765#ifdef WLAN_FEATURE_EXTSCAN
766 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
767 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
768 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
769 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
770 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
771#else
772 NULL,
773 NULL,
774 NULL,
775 NULL,
776 NULL,
777#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700778};
779
780
Jeff Johnsone7245742012-09-05 17:12:55 -0700781/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 WLAN DAL Global Control Block
783 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700784WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700785static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
786
Jeff Johnsone7245742012-09-05 17:12:55 -0700787const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700788
789/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700790WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700791void* WDI_GET_PAL_CTX( void )
792{
Jeff Johnsone7245742012-09-05 17:12:55 -0700793 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700794}/*WDI_GET_PAL_CTX*/
795
Jeff Johnsone7245742012-09-05 17:12:55 -0700796/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700797 Helper inline converters
798 ============================================================================*/
799/*Convert WDI driver type into HAL driver type*/
800WPT_STATIC WPT_INLINE WDI_Status
801WDI_HAL_2_WDI_STATUS
802(
803 eHalStatus halStatus
804);
805
806/*Convert WDI request type into HAL request type*/
807WPT_STATIC WPT_INLINE tHalHostMsgType
808WDI_2_HAL_REQ_TYPE
809(
810 WDI_RequestEnumType wdiReqType
811);
812
813/*Convert WDI response type into HAL response type*/
814WPT_STATIC WPT_INLINE WDI_ResponseEnumType
815HAL_2_WDI_RSP_TYPE
816(
817 tHalHostMsgType halMsg
818);
819
820/*Convert WDI driver type into HAL driver type*/
821WPT_STATIC WPT_INLINE tDriverType
822WDI_2_HAL_DRV_TYPE
823(
824 WDI_DriverType wdiDriverType
825);
826
827/*Convert WDI stop reason into HAL stop reason*/
828WPT_STATIC WPT_INLINE tHalStopType
829WDI_2_HAL_STOP_REASON
830(
831 WDI_StopType wdiStopType
832);
833
834/*Convert WDI scan mode type into HAL scan mode type*/
835WPT_STATIC WPT_INLINE eHalSysMode
836WDI_2_HAL_SCAN_MODE
837(
838 WDI_ScanMode wdiScanMode
839);
840
841/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700842WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700843WDI_2_HAL_SEC_CH_OFFSET
844(
845 WDI_HTSecondaryChannelOffset wdiSecChOffset
846);
847
848/*Convert WDI BSS type into HAL BSS type*/
849WPT_STATIC WPT_INLINE tSirBssType
850WDI_2_HAL_BSS_TYPE
851(
852 WDI_BssType wdiBSSType
853);
854
855/*Convert WDI NW type into HAL NW type*/
856WPT_STATIC WPT_INLINE tSirNwType
857WDI_2_HAL_NW_TYPE
858(
859 WDI_NwType wdiNWType
860);
861
862/*Convert WDI chanel bonding type into HAL cb type*/
863WPT_STATIC WPT_INLINE ePhyChanBondState
864WDI_2_HAL_CB_STATE
865(
866 WDI_PhyChanBondState wdiCbState
867);
868
869/*Convert WDI chanel bonding type into HAL cb type*/
870WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
871WDI_2_HAL_HT_OPER_MODE
872(
873 WDI_HTOperatingMode wdiHTOperMode
874);
875
876/*Convert WDI mimo PS type into HAL mimo PS type*/
877WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
878WDI_2_HAL_MIMO_PS
879(
880 WDI_HTMIMOPowerSaveState wdiHTOperMode
881);
882
883/*Convert WDI ENC type into HAL ENC type*/
884WPT_STATIC WPT_INLINE tAniEdType
885WDI_2_HAL_ENC_TYPE
886(
887 WDI_EncryptType wdiEncType
888);
889
890/*Convert WDI WEP type into HAL WEP type*/
891WPT_STATIC WPT_INLINE tAniWepType
892WDI_2_HAL_WEP_TYPE
893(
894 WDI_WepType wdiWEPType
895);
896
897/*Convert WDI Link State into HAL Link State*/
898WPT_STATIC WPT_INLINE tSirLinkState
899WDI_2_HAL_LINK_STATE
900(
901 WDI_LinkStateType wdiLinkState
902);
903
Jeff Johnsone7245742012-09-05 17:12:55 -0700904/*Translate a STA Context from WDI into HAL*/
905WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700906void
907WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700908(
Jeff Johnson295189b2012-06-20 16:38:30 -0700909 tConfigStaParams* phalConfigSta,
910 WDI_ConfigStaReqInfoType* pwdiConfigSta
911);
Jeff Johnsone7245742012-09-05 17:12:55 -0700912
913/*Translate a Rate set info from WDI into HAL*/
914WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700915WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700916(
Jeff Johnson295189b2012-06-20 16:38:30 -0700917 tSirMacRateSet* pHalRateSet,
918 WDI_RateSet* pwdiRateSet
919);
920
921/*Translate an EDCA Parameter Record from WDI into HAL*/
922WPT_STATIC WPT_INLINE void
923WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700924(
Jeff Johnson295189b2012-06-20 16:38:30 -0700925 tSirMacEdcaParamRecord* phalEdcaParam,
926 WDI_EdcaParamRecord* pWDIEdcaParam
927);
928
929/*Copy a management frame header from WDI fmt into HAL fmt*/
930WPT_STATIC WPT_INLINE void
931WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
932(
933 tSirMacMgmtHdr* pmacMgmtHdr,
934 WDI_MacMgmtHdr* pwdiMacMgmtHdr
935);
936
937/*Copy config bss parameters from WDI fmt into HAL fmt*/
938WPT_STATIC WPT_INLINE void
939WDI_CopyWDIConfigBSSToHALConfigBSS
940(
941 tConfigBssParams* phalConfigBSS,
942 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
943);
944
Jeff Johnsone7245742012-09-05 17:12:55 -0700945/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700946 pointed to by user data */
947WPT_STATIC WPT_INLINE void
948WDI_ExtractRequestCBFromEvent
949(
950 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700951 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700952 void** ppUserData
953);
954
955wpt_uint8
956WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700957(
Jeff Johnson295189b2012-06-20 16:38:30 -0700958 WDI_ControlBlockType* pWDICtx,
959 WDI_BSSSessionType** ppSession
960);
961
962void
963WDI_AddBcastSTAtoSTATable
964(
965 WDI_ControlBlockType* pWDICtx,
966 WDI_AddStaParams * staParams,
967 wpt_uint16 usBcastStaIdx
968);
969
970WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700971(
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 WDI_ControlBlockType* pWDICtx,
973 WDI_EventInfoType* pEventData
974);
975
976void
977WDI_SetPowerStateCb
978(
979 wpt_status status,
980 unsigned int dxePhyAddr,
981 void *pContext
982);
983
Jeff Johnson295189b2012-06-20 16:38:30 -0700984/**
985 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700986
987 @param wdiReqMsgId: WDI Message request Id
988
989 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700990 @return Result of the function call
991*/
992static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
993{
994 switch (wdiReqMsgId)
995 {
996 CASE_RETURN_STRING( WDI_START_REQ );
997 CASE_RETURN_STRING( WDI_STOP_REQ );
998 CASE_RETURN_STRING( WDI_CLOSE_REQ );
999 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1000 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1001 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1002 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1003 CASE_RETURN_STRING( WDI_JOIN_REQ );
1004 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1005 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1006 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1007 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1008 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1009 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1010 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1011 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1012 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1013 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1014 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1015 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1016 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1017 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001018 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001019 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1020 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1021 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1022 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1023 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1024 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1025 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1026 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1027 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1028 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1029 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1030 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001031 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001032 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301033#ifdef FEATURE_WLAN_TDLS
1034 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
1035#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001036 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1037 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1038 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1039 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1040 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1041 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1042 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1043 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1044 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1045 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1046 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1047 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1048 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1049 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1050 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1051 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1052 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1053 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1054 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1055 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1056 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1057 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1058 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1059 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1060 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001061 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1063 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1064 #ifdef FEATURE_WLAN_SCAN_PNO
1065 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1066 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1067 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1068 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001069#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001070 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001071#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001072 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1073 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1074 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1075 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1076 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1077 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1078 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1079 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1080 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301081 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001082 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001083 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001084#ifdef WLAN_FEATURE_11W
1085 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1086#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301087#ifdef FEATURE_WLAN_BATCH_SCAN
1088 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1089 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1090 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1091#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301092 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1093 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001094 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301095#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1096 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1097 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1098 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1099#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301100#ifdef WLAN_FEATURE_EXTSCAN
1101 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1102 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1103 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1104 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1105 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1106 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1107 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1108 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1109#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001110 default:
1111 return "Unknown WDI MessageId";
1112 }
1113}
1114
1115
1116
1117/**
1118 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001119
1120 @param wdiRespMsgId: WDI Message response Id
1121
1122 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001123 @return Result of the function call
1124*/
1125static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1126{
1127 switch (wdiRespMsgId)
1128 {
1129 CASE_RETURN_STRING( WDI_START_RESP );
1130 CASE_RETURN_STRING( WDI_STOP_RESP );
1131 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1132 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1133 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1134 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1135 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1136 CASE_RETURN_STRING( WDI_JOIN_RESP );
1137 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1138 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1139 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1140 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1141 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1142 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1143 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1144 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1145 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1146 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1147 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1148 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1149 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1150 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1151 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1152 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1153 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1154 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1155 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1156 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1157 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1158 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1159 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1160 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1161 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1162 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1163 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301164#ifdef FEATURE_WLAN_TDLS
1165 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1166 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1167#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1169 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1170 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1171 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1172 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1173 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1174 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1175 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1176 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1177 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1178 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1179 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1180 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1181 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1182 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1183 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1184 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1185 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1186 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1187 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1188 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1189 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1190 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1191 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1192 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001193 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1195 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1196 #ifdef FEATURE_WLAN_SCAN_PNO
1197 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1198 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1199 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1200 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001201#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001202 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001203#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1205 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1206 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1207 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1208 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1209 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1210 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1211 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001212 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301213#ifdef FEATURE_WLAN_BATCH_SCAN
1214 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1215#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001216 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301217 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301218 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301219#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1220 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1221 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1222 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1223#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301224#ifdef WLAN_FEATURE_EXTSCAN
1225 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1226 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1227 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1228 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1229 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1230 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1231 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1232 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1233 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1234 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1235 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1236 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1237 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1238
1239#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001240 default:
1241 return "Unknown WDI MessageId";
1242 }
1243}
1244
1245/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301246 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1247 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301248 @param capabilityBitmap - Base address of a 4 element Bitmap array
1249 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301250 @see
1251 @returns None
1252 */
1253void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1254{
Abhishek Singh08b60122014-02-04 18:05:23 +05301255 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301256 char capStr[512];
1257 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301258 for (j = 0; j < 4; j++) {
1259 for (i = 0; i < 32; i++) {
1260 if ((*(capabilityBitmap + j) & (1 << i))) {
1261 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301262 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1263 pCapStr += strlen("MCC");
1264 break;
1265 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1266 pCapStr += strlen("P2P");
1267 break;
1268 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1269 pCapStr += strlen("DOT11AC");
1270 break;
1271 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1272 pCapStr += strlen("SLM_SESSIONIZATION");
1273 break;
1274 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1275 pCapStr += strlen("DOT11AC_OPMODE");
1276 break;
1277 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1278 pCapStr += strlen("SAP32STA");
1279 break;
1280 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1281 pCapStr += strlen("TDLS");
1282 break;
1283 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1284 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1285 break;
1286 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1287 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1288 break;
1289 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1290 pCapStr += strlen("BEACON_OFFLOAD");
1291 break;
1292 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1293 pCapStr += strlen("SCAN_OFFLOAD");
1294 break;
1295 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1296 pCapStr += strlen("ROAM_OFFLOAD");
1297 break;
1298 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1299 pCapStr += strlen("BCN_MISS_OFFLOAD");
1300 break;
1301 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1302 pCapStr += strlen("STA_POWERSAVE");
1303 break;
1304 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1305 pCapStr += strlen("AP_UAPSD");
1306 break;
1307 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1308 pCapStr += strlen("AP_DFS");
1309 break;
1310 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1311 pCapStr += strlen("BLOCKACK");
1312 break;
1313 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1314 pCapStr += strlen("PHY_ERR");
1315 break;
1316 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1317 pCapStr += strlen("BCN_FILTER");
1318 break;
1319 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1320 pCapStr += strlen("RTT");
1321 break;
1322 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1323 pCapStr += strlen("RATECTRL");
1324 break;
1325 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1326 pCapStr += strlen("WOW");
1327 break;
1328 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1329 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1330 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301331 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1332 pCapStr += strlen("FW_IN_TX_PATH");
1333 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301334 case HT40_OBSS_SCAN:
1335 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1336 "%s", "HT40_OBSS_SCAN");
1337 pCapStr += strlen("HT40_OBSS_SCAN");
1338 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301339 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1340 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1341 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1342 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1343 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301344 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1345 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1346 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301347 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1348 pCapStr += strlen("CH_SWITCH_V1");
1349 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301350#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1351 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1352 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1353 break;
1354#endif
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301355
Abhishek Singh08b60122014-02-04 18:05:23 +05301356 }
1357 *pCapStr++ = ',';
1358 *pCapStr++ = ' ';
1359 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301360 }
1361 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301362 pCapStr -= 2;
1363 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301364 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301366}
1367
1368/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001370
1371 @param halStatusId: HAL status Id
1372
1373 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001374 @return Result of the function call
1375*/
1376static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1377{
1378 switch (halStatusId)
1379 {
1380 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1381 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1382 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1383 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1384 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1385 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1386 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1387 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1388 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1389 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1390 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1391 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1392 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1393 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1394 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1395 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1396 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1397 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1398 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1399 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1400 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1401 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1402 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1403 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1404 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1405 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1406 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1407 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1408 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1409 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1410 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1411 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1412 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1413 default:
1414 return "Unknown HAL status";
1415 }
1416}
1417
Jeff Johnsone7245742012-09-05 17:12:55 -07001418/*========================================================================
1419
Jeff Johnson295189b2012-06-20 16:38:30 -07001420 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001421
Jeff Johnson295189b2012-06-20 16:38:30 -07001422==========================================================================*/
1423
1424/**
1425 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001426
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 DAL will allocate all the resources it needs. It will open PAL, it will also
1428 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001429 DXE/SMD or any other drivers that they need.
1430
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301431 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001432 ppWDIGlobalCtx: output pointer of Global Context
1433 pWdiDevCapability: output pointer of device capability
1434
1435 @return Result of the function call
1436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001438WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001439(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301440 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 void** ppWDIGlobalCtx,
1442 WDI_DeviceCapabilityType* pWdiDevCapability,
1443 unsigned int driverType
1444)
1445{
1446 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001447 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001449 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1451
1452 /*---------------------------------------------------------------------
1453 Sanity check
1454 ---------------------------------------------------------------------*/
1455 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1456 {
1457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1458 "Invalid input parameters in WDI_Init");
1459
Jeff Johnsone7245742012-09-05 17:12:55 -07001460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 }
1462
1463 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001464 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001465 ---------------------------------------------------------------------*/
1466 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1467 {
1468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1469 "WDI module already initialized - return");
1470
Jeff Johnsone7245742012-09-05 17:12:55 -07001471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 }
1473
1474 /*Module is now initialized - this flag is to ensure the fact that multiple
1475 init will not happen on WDI
1476 !! - potential race does exist because read and set are not atomic,
1477 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001479
1480 /*Setup the control block */
1481 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301482 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001483
1484 /*Setup the STA Table*/
1485 wdiStatus = WDI_STATableInit(&gWDICb);
1486 if ( WDI_STATUS_SUCCESS != wdiStatus )
1487 {
1488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1489 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001490 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001491 goto fail_STATableInit;
1492 }
1493
1494 /*------------------------------------------------------------------------
1495 Open the PAL
1496 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301497 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001498 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1499 {
1500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1501 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001502 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 goto fail_wpalOpen;
1504 }
1505
1506 /*Initialize main synchro mutex - it will be used to ensure integrity of
1507 the main WDI Control Block*/
1508 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1509 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1510 {
1511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1512 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 goto fail_mutex;
1515 }
1516
1517 /*Initialize the response timer - it will be used to time all messages
1518 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001519 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1520 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001521 &gWDICb);
1522 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1523 {
1524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1525 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001526 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001527 goto fail_timer;
1528 }
1529
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001530 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1531 WDI_SsrTimerCB,
1532 &gWDICb);
1533 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1534 {
1535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1536 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001537 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001538 goto fail_timer2;
1539 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 /* Initialize the WDI Pending Request Queue*/
1541 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1542 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1543 {
1544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1545 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001546 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001547 goto fail_pend_queue;
1548 }
1549
1550 /*Init WDI Pending Assoc Id Queue */
1551 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1552 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1553 {
1554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1555 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001556 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 goto fail_assoc_queue;
1558 }
1559
1560 /*Initialize the BSS sessions pending Queue */
1561 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1562 {
1563 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1564 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1565 {
1566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1567 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001568 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 goto fail_bss_queue;
1570 }
1571 }
1572
1573 /*Indicate the control block is sufficiently initialized for callbacks*/
1574 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1575
1576 /*------------------------------------------------------------------------
1577 Initialize the Data Path Utility Module
1578 ------------------------------------------------------------------------*/
1579 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1580 if ( WDI_STATUS_SUCCESS != wdiStatus )
1581 {
1582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1583 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001584 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 goto fail_dp_util_init;
1586 }
1587
1588 /* Init Set power state event */
1589 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 {
1592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1593 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001594 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 goto fail_power_event;
1596 }
1597
1598 /* Init WCTS action event */
1599 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001600 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 {
1602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1603 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001604 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 goto fail_wcts_event;
1606 }
1607
1608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001609 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 ------------------------------------------------------------------------*/
1611 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1612 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001613 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001614 wctsCBs.wctsRxMsgCBData = &gWDICb;
1615
Jeff Johnsone7245742012-09-05 17:12:55 -07001616 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001617 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001618 WDI_CT_CHANNEL_SIZE,
1619 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001620
1621 if ( NULL == gWDICb.wctsHandle )
1622 {
1623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001624 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001625 goto fail_wcts_open;
1626 }
1627
1628 gWDICb.driverMode = (tDriverType)driverType;
1629 /* FTM mode not need to open Transport Driver */
1630 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001631 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 /*------------------------------------------------------------------------
1633 Open the Data Transport
1634 ------------------------------------------------------------------------*/
1635 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001638 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001639 goto fail_wdts_open;
1640 }
1641 }
1642
1643 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001644 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001645
1646 /*Send the context as a ptr to the global WDI Control Block*/
1647 *ppWDIGlobalCtx = &gWDICb;
1648
1649 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001650 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1652 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1653 return WDI_STATUS_SUCCESS;
1654
1655 /* ERROR handlers
1656 Undo everything that completed successfully */
1657
1658 fail_wdts_open:
1659 {
1660 wpt_status eventStatus;
1661
1662 /* Closing WCTS in this scenario is tricky since it has to close
1663 the SMD channel and then we get notified asynchronously when
1664 the channel has been closed. So we take some of the logic from
1665 the "normal" close procedure in WDI_Close()
1666 */
1667
1668 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001669 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 {
1671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001672 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001673 }
1674
1675 WCTS_CloseTransport(gWDICb.wctsHandle);
1676
1677 /* Wait for WCTS to close the control transport. If we were able
1678 to reset the event flag, then we'll wait for the event,
1679 otherwise we'll wait for a maximum amount of time required for
1680 the channel to be closed */
1681 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1682 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001683 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 WDI_WCTS_ACTION_TIMEOUT);
1685 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1686 {
1687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001688 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 }
1690 }
1691 else
1692 {
1693 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1694 }
1695 }
1696 fail_wcts_open:
1697 wpalEventDelete(&gWDICb.wctsActionEvent);
1698 fail_wcts_event:
1699 wpalEventDelete(&gWDICb.setPowerStateEvent);
1700 fail_power_event:
1701 WDI_DP_UtilsExit(&gWDICb);
1702 fail_dp_util_init:
1703 gWDICb.magic = 0;
1704 fail_bss_queue:
1705 /* entries 0 thru i-1 were successfully initialized */
1706 while (0 < i)
1707 {
1708 i--;
1709 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1710 }
1711 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1712 fail_assoc_queue:
1713 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1714 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001715 wpalTimerDelete(&gWDICb.ssrTimer);
1716 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001717 wpalTimerDelete(&gWDICb.wptResponseTimer);
1718 fail_timer:
1719 wpalMutexDelete(&gWDICb.wptMutex);
1720 fail_mutex:
1721 wpalClose(gWDICb.pPALContext);
1722 fail_wpalOpen:
1723 WDI_STATableClose(&gWDICb);
1724 fail_STATableInit:
1725 gWDIInitialized = eWLAN_PAL_FALSE;
1726
1727 return WDI_STATUS_E_FAILURE;
1728
1729}/*WDI_Init*/;
1730
1731/**
1732 @brief WDI_Start will be called when the upper MAC is ready to
1733 commence operation with the WLAN Device. Upon the call
1734 of this API the WLAN DAL will pack and send a HAL Start
1735 message to the lower RIVA sub-system if the SMD channel
1736 has been fully opened and the RIVA subsystem is up.
1737
1738 If the RIVA sub-system is not yet up and running DAL
1739 will queue the request for Open and will wait for the
1740 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001741 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001742
1743 WDI_Init must have been called.
1744
Jeff Johnsone7245742012-09-05 17:12:55 -07001745 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001746 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001747
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 wdiStartRspCb: callback for passing back the response of
1749 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001750
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001752 callback
1753
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 @see WDI_Start
1755 @return Result of the function call
1756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001758WDI_Start
1759(
1760 WDI_StartReqParamsType* pwdiStartParams,
1761 WDI_StartRspCb wdiStartRspCb,
1762 void* pUserData
1763)
1764{
1765 WDI_EventInfoType wdiEventData;
1766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1767
1768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 ------------------------------------------------------------------------*/
1771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1772 {
1773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1774 "WDI API call before module is initialized - Fail request");
1775
Jeff Johnsone7245742012-09-05 17:12:55 -07001776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 }
1778
1779 /*------------------------------------------------------------------------
1780 Fill in Event data and post to the Main FSM
1781 ------------------------------------------------------------------------*/
1782 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 wdiEventData.pEventData = pwdiStartParams;
1784 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1785 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 wdiEventData.pUserData = pUserData;
1787
1788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1789
1790}/*WDI_Start*/
1791
1792/**
1793 @brief WDI_Stop will be called when the upper MAC is ready to
1794 stop any operation with the WLAN Device. Upon the call
1795 of this API the WLAN DAL will pack and send a HAL Stop
1796 message to the lower RIVA sub-system if the DAL Core is
1797 in started state.
1798
1799 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001800
1801 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001802
1803 WDI_Start must have been called.
1804
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001806 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001807
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 wdiStopRspCb: callback for passing back the response of
1809 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001810
Jeff Johnson295189b2012-06-20 16:38:30 -07001811 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001812 callback
1813
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 @see WDI_Start
1815 @return Result of the function call
1816*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001817WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001818WDI_Stop
1819(
1820 WDI_StopReqParamsType* pwdiStopParams,
1821 WDI_StopRspCb wdiStopRspCb,
1822 void* pUserData
1823)
1824{
1825 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001826 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1828
1829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 ------------------------------------------------------------------------*/
1832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1833 {
1834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1835 "WDI API call before module is initialized - Fail request");
1836
Jeff Johnsone7245742012-09-05 17:12:55 -07001837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 }
1839
Jeff Johnson43971f52012-07-17 12:26:56 -07001840 /*Access to the global state must be locked before cleaning */
1841 wpalMutexAcquire(&pWDICtx->wptMutex);
1842
1843 /*Clear all pending request*/
1844 WDI_ClearPendingRequests(pWDICtx);
1845
1846 /*We have completed cleaning unlock now*/
1847 wpalMutexRelease(&pWDICtx->wptMutex);
1848
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 /* Free the global variables */
1850 wpalMemoryFree(gpHostWlanFeatCaps);
1851 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001852 gpHostWlanFeatCaps = NULL;
1853 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001854
1855 /*------------------------------------------------------------------------
1856 Fill in Event data and post to the Main FSM
1857 ------------------------------------------------------------------------*/
1858 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001859 wdiEventData.pEventData = pwdiStopParams;
1860 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1861 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001862 wdiEventData.pUserData = pUserData;
1863
1864 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1865
1866}/*WDI_Stop*/
1867
1868
1869
1870/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001871 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001872 needs to interact with DAL. DAL will free its control
1873 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001874
1875 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001876
1877 WDI_Stop must have been called.
1878
1879 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001880
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 @see WDI_Stop
1882 @return Result of the function call
1883*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001884WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001885WDI_Close
1886(
1887 void
1888)
1889{
1890 wpt_uint8 i;
1891 WDI_EventInfoType wdiEventData;
1892 wpt_status wptStatus;
1893 wpt_status eventStatus;
1894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1895
1896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001897 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 ------------------------------------------------------------------------*/
1899 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1900 {
1901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1902 "WDI API call before module is initialized - Fail request");
1903
Jeff Johnsone7245742012-09-05 17:12:55 -07001904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 }
1906
1907 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1908 (the control transport will be closed by the FSM and we'll want
1909 to wait until that completes)*/
1910 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 {
1913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001914 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 /* fall through and try to finish closing via the FSM */
1916 }
1917
1918 /*------------------------------------------------------------------------
1919 Fill in Event data and post to the Main FSM
1920 ------------------------------------------------------------------------*/
1921 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001922 wdiEventData.pEventData = NULL;
1923 wdiEventData.uEventDataSize = 0;
1924 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 wdiEventData.pUserData = NULL;
1926
1927 gWDIInitialized = eWLAN_PAL_FALSE;
1928
1929 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1930
1931 /*Wait for WCTS to close the control transport
1932 (but only if we were able to reset the event flag*/
1933 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1934 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 WDI_WCTS_ACTION_TIMEOUT);
1937 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1938 {
1939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001940 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 }
1942 }
1943
1944 /* Destroy the WCTS action event */
1945 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1946 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1947 {
1948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1949 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001950 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001951 }
1952
1953 /* Destroy the Set Power State event */
1954 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1955 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1956 {
1957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1958 "WDI Close failed to destroy an event");
1959
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 }
1962
1963 /*------------------------------------------------------------------------
1964 Closes the Data Path Utility Module
1965 ------------------------------------------------------------------------*/
1966 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1967 {
1968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1969 "WDI Init failed to close the DP Util Module");
1970
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 }
1973
1974 /*destroy the BSS sessions pending Queue */
1975 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1976 {
1977 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1978 }
1979
1980 /* destroy the WDI Pending Assoc Id Request Queue*/
1981 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1982
1983 /* destroy the WDI Pending Request Queue*/
1984 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 /*destroy the response timer */
1987 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1988
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001989 /*destroy the SSR timer */
1990 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1991
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 /*invalidate the main synchro mutex */
1993 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1994 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1995 {
1996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1997 "Failed to delete mutex %d", wptStatus);
1998 WDI_ASSERT(0);
1999 }
2000
2001 /*Clear control block. note that this will clear the "magic"
2002 which will inhibit all asynchronous callbacks*/
2003 WDI_CleanCB(&gWDICb);
2004
2005 return wptStatus;
2006
2007}/*WDI_Close*/
2008
2009/**
2010 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2011 This will do most of the WDI stop & close
2012 operations without doing any handshake with Riva
2013
2014 This will also make sure that the control transport
2015 will NOT be closed.
2016
2017 This request will not be queued.
2018
2019
2020 WDI_Start must have been called.
2021
2022 @param closeTransport: Close control channel if this is set
2023
2024 @return Result of the function call
2025*/
2026WDI_Status
2027WDI_Shutdown
2028(
2029 wpt_boolean closeTransport
2030)
2031{
2032 WDI_EventInfoType wdiEventData;
2033 wpt_status wptStatus;
2034 int i = 0;
2035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2036
2037 /*------------------------------------------------------------------------
2038 Sanity Check
2039 ------------------------------------------------------------------------*/
2040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2041 {
2042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2043 "WDI API call before module is initialized - Fail request");
2044
2045 return WDI_STATUS_E_NOT_ALLOWED;
2046 }
2047
2048 /*------------------------------------------------------------------------
2049 Fill in Event data and post to the Main FSM
2050 ------------------------------------------------------------------------*/
2051 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2052 wdiEventData.pEventData = NULL;
2053 wdiEventData.uEventDataSize = 0;
2054
2055 /* Shutdown will not be queued, if the state is busy timer will be
2056 * stopped & this message will be processed.*/
2057 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2058 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2059 {
2060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002061 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 }
2063 /* Destroy the Set Power State event */
2064 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2065 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2066 {
2067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2068 "WDI Close failed to destroy an event");
2069
2070 WDI_ASSERT(0);
2071 }
2072 /*------------------------------------------------------------------------
2073 Closes the Data Path Utility Module
2074 ------------------------------------------------------------------------*/
2075 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2076 {
2077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2078 "WDI Init failed to close the DP Util Module");
2079
2080 WDI_ASSERT(0);
2081 }
2082 if ( closeTransport )
2083 {
2084 /* Close control transport, called from module unload */
2085 WCTS_CloseTransport(gWDICb.wctsHandle);
2086 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002087 else
2088 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002089 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002090 the pending messages in the transport queue */
2091 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2092 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 /*destroy the BSS sessions pending Queue */
2094 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2095 {
2096 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2097 }
2098
2099 /* destroy the WDI Pending Assoc Id Request Queue*/
2100 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2101 /* destroy the WDI Pending Request Queue*/
2102 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2103 /*destroy the response timer */
2104 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002105 /*destroy the SSR timer */
2106 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002107
2108 /*invalidate the main synchro mutex */
2109 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2110 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2111 {
2112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002113 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 WDI_ASSERT(0);
2115 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002116 /* Free the global variables */
2117 wpalMemoryFree(gpHostWlanFeatCaps);
2118 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002119 gpHostWlanFeatCaps = NULL;
2120 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 /*Clear control block. note that this will clear the "magic"
2122 which will inhibit all asynchronous callbacks*/
2123 WDI_CleanCB(&gWDICb);
2124 return wptStatus;
2125
2126}/*WDI_Shutdown*/
2127
2128
Jeff Johnsone7245742012-09-05 17:12:55 -07002129/*========================================================================
2130
Jeff Johnson295189b2012-06-20 16:38:30 -07002131 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002132
Jeff Johnson295189b2012-06-20 16:38:30 -07002133==========================================================================*/
2134
2135/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002136 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 the WLAN Device to get ready for a scan procedure. Upon
2138 the call of this API the WLAN DAL will pack and send a
2139 HAL Init Scan request message to the lower RIVA
2140 sub-system if DAL is in state STARTED.
2141
2142 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002143 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002144
2145 WDI_Start must have been called.
2146
2147 @param wdiInitScanParams: the init scan parameters as specified
2148 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002149
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 wdiInitScanRspCb: callback for passing back the response
2151 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002152
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 callback
2155
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 @see WDI_Start
2157 @return Result of the function call
2158*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002159WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002160WDI_InitScanReq
2161(
2162 WDI_InitScanReqParamsType* pwdiInitScanParams,
2163 WDI_InitScanRspCb wdiInitScanRspCb,
2164 void* pUserData
2165)
2166{
2167 WDI_EventInfoType wdiEventData;
2168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2169
2170 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002172 ------------------------------------------------------------------------*/
2173 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2174 {
2175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2176 "WDI API call before module is initialized - Fail request");
2177
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 }
2180
2181 /*------------------------------------------------------------------------
2182 Fill in Event data and post to the Main FSM
2183 ------------------------------------------------------------------------*/
2184 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 wdiEventData.pEventData = pwdiInitScanParams;
2186 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2187 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 wdiEventData.pUserData = pUserData;
2189
2190 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2191
2192}/*WDI_InitScanReq*/
2193
2194/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002195 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 wishes to change the Scan channel on the WLAN Device.
2197 Upon the call of this API the WLAN DAL will pack and
2198 send a HAL Start Scan request message to the lower RIVA
2199 sub-system if DAL is in state STARTED.
2200
2201 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002203
2204 WDI_InitScanReq must have been called.
2205
Jeff Johnsone7245742012-09-05 17:12:55 -07002206 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002207 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002208
Jeff Johnson295189b2012-06-20 16:38:30 -07002209 wdiStartScanRspCb: callback for passing back the
2210 response of the start scan operation received from the
2211 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002212
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002214 callback
2215
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 @see WDI_InitScanReq
2217 @return Result of the function call
2218*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002219WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002220WDI_StartScanReq
2221(
2222 WDI_StartScanReqParamsType* pwdiStartScanParams,
2223 WDI_StartScanRspCb wdiStartScanRspCb,
2224 void* pUserData
2225)
2226{
2227 WDI_EventInfoType wdiEventData;
2228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2229
2230 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 ------------------------------------------------------------------------*/
2233 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2234 {
2235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2236 "WDI API call before module is initialized - Fail request");
2237
Jeff Johnsone7245742012-09-05 17:12:55 -07002238 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 }
2240
2241 /*------------------------------------------------------------------------
2242 Fill in Event data and post to the Main FSM
2243 ------------------------------------------------------------------------*/
2244 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002245 wdiEventData.pEventData = pwdiStartScanParams;
2246 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2247 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 wdiEventData.pUserData = pUserData;
2249
2250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2251
2252}/*WDI_StartScanReq*/
2253
2254
2255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 wants to end scanning for a particular channel that it
2258 had set before by calling Scan Start on the WLAN Device.
2259 Upon the call of this API the WLAN DAL will pack and
2260 send a HAL End Scan request message to the lower RIVA
2261 sub-system if DAL is in state STARTED.
2262
2263 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002265
2266 WDI_StartScanReq must have been called.
2267
Jeff Johnsone7245742012-09-05 17:12:55 -07002268 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002269 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002270
Jeff Johnson295189b2012-06-20 16:38:30 -07002271 wdiEndScanRspCb: callback for passing back the response
2272 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002273
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 callback
2276
Jeff Johnson295189b2012-06-20 16:38:30 -07002277 @see WDI_StartScanReq
2278 @return Result of the function call
2279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002281WDI_EndScanReq
2282(
2283 WDI_EndScanReqParamsType* pwdiEndScanParams,
2284 WDI_EndScanRspCb wdiEndScanRspCb,
2285 void* pUserData
2286)
2287{
2288 WDI_EventInfoType wdiEventData;
2289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2290
2291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 ------------------------------------------------------------------------*/
2294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2295 {
2296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2297 "WDI API call before module is initialized - Fail request");
2298
Jeff Johnsone7245742012-09-05 17:12:55 -07002299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 }
2301
2302 /*------------------------------------------------------------------------
2303 Fill in Event data and post to the Main FSM
2304 ------------------------------------------------------------------------*/
2305 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 wdiEventData.pEventData = pwdiEndScanParams;
2307 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2308 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 wdiEventData.pUserData = pUserData;
2310
2311 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2312
2313}/*WDI_EndScanReq*/
2314
2315
2316/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002317 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 completed the scan process on the WLAN Device. Upon the
2319 call of this API the WLAN DAL will pack and send a HAL
2320 Finish Scan Request request message to the lower RIVA
2321 sub-system if DAL is in state STARTED.
2322
2323 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002324 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002325
2326 WDI_InitScanReq must have been called.
2327
Jeff Johnsone7245742012-09-05 17:12:55 -07002328 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002329 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002330
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 wdiFinishScanRspCb: callback for passing back the
2332 response of the finish scan operation received from the
2333 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002334
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 callback
2337
Jeff Johnson295189b2012-06-20 16:38:30 -07002338 @see WDI_InitScanReq
2339 @return Result of the function call
2340*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002341WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002342WDI_FinishScanReq
2343(
2344 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2345 WDI_FinishScanRspCb wdiFinishScanRspCb,
2346 void* pUserData
2347)
2348{
2349 WDI_EventInfoType wdiEventData;
2350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2351
2352 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 ------------------------------------------------------------------------*/
2355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2356 {
2357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2358 "WDI API call before module is initialized - Fail request");
2359
Jeff Johnsone7245742012-09-05 17:12:55 -07002360 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 }
2362
2363 /*------------------------------------------------------------------------
2364 Fill in Event data and post to the Main FSM
2365 ------------------------------------------------------------------------*/
2366 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 wdiEventData.pEventData = pwdiFinishScanParams;
2368 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2369 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 wdiEventData.pUserData = pUserData;
2371
2372 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2373
2374}/*WDI_FinishScanReq*/
2375
Jeff Johnsone7245742012-09-05 17:12:55 -07002376/*========================================================================
2377
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002379
Jeff Johnson295189b2012-06-20 16:38:30 -07002380==========================================================================*/
2381
2382/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 to start an association procedure to a BSS. Upon the
2385 call of this API the WLAN DAL will pack and send a HAL
2386 Join request message to the lower RIVA sub-system if
2387 DAL is in state STARTED.
2388
2389 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002391
2392 WDI_Start must have been called.
2393
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002396
Jeff Johnson295189b2012-06-20 16:38:30 -07002397 wdiJoinRspCb: callback for passing back the response of
2398 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002399
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 callback
2402
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 @see WDI_Start
2404 @return Result of the function call
2405*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002406WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002407WDI_JoinReq
2408(
2409 WDI_JoinReqParamsType* pwdiJoinParams,
2410 WDI_JoinRspCb wdiJoinRspCb,
2411 void* pUserData
2412)
2413{
2414 WDI_EventInfoType wdiEventData;
2415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2416
2417 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 ------------------------------------------------------------------------*/
2420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2421 {
2422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2423 "WDI API call before module is initialized - Fail request");
2424
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 }
2427
2428 /*------------------------------------------------------------------------
2429 Fill in Event data and post to the Main FSM
2430 ------------------------------------------------------------------------*/
2431 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 wdiEventData.pEventData = pwdiJoinParams;
2433 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2434 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 wdiEventData.pUserData = pUserData;
2436
2437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2438
2439}/*WDI_JoinReq*/
2440
2441/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002442 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002443 wishes to configure the newly acquired or in process of
2444 being acquired BSS to the HW . Upon the call of this API
2445 the WLAN DAL will pack and send a HAL Config BSS request
2446 message to the lower RIVA sub-system if DAL is in state
2447 STARTED.
2448
2449 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002451
2452 WDI_JoinReq must have been called.
2453
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002456
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 wdiConfigBSSRspCb: callback for passing back the
2458 response of the config BSS operation received from the
2459 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 callback
2463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 @see WDI_JoinReq
2465 @return Result of the function call
2466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002468WDI_ConfigBSSReq
2469(
2470 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2471 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2472 void* pUserData
2473)
2474{
2475 WDI_EventInfoType wdiEventData;
2476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2477
2478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 ------------------------------------------------------------------------*/
2481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2482 {
2483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2484 "WDI API call before module is initialized - Fail request");
2485
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 }
2488
2489 /*------------------------------------------------------------------------
2490 Fill in Event data and post to the Main FSM
2491 ------------------------------------------------------------------------*/
2492 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 wdiEventData.pEventData = pwdiConfigBSSParams;
2494 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2495 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 wdiEventData.pUserData = pUserData;
2497
2498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2499
2500}/*WDI_ConfigBSSReq*/
2501
2502/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002503 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 disassociating from the BSS and wishes to notify HW.
2505 Upon the call of this API the WLAN DAL will pack and
2506 send a HAL Del BSS request message to the lower RIVA
2507 sub-system if DAL is in state STARTED.
2508
2509 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002510 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002511
2512 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2513
Jeff Johnsone7245742012-09-05 17:12:55 -07002514 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002516
Jeff Johnson295189b2012-06-20 16:38:30 -07002517 wdiDelBSSRspCb: callback for passing back the response
2518 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002519
Jeff Johnson295189b2012-06-20 16:38:30 -07002520 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 callback
2522
2523 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 @return Result of the function call
2525*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002526WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002527WDI_DelBSSReq
2528(
2529 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2530 WDI_DelBSSRspCb wdiDelBSSRspCb,
2531 void* pUserData
2532)
2533{
2534 WDI_EventInfoType wdiEventData;
2535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2536
2537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002538 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 ------------------------------------------------------------------------*/
2540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2541 {
2542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2543 "WDI API call before module is initialized - Fail request");
2544
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 }
2547
2548 /*------------------------------------------------------------------------
2549 Fill in Event data and post to the Main FSM
2550 ------------------------------------------------------------------------*/
2551 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 wdiEventData.pEventData = pwdiDelBSSParams;
2553 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2554 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002555 wdiEventData.pUserData = pUserData;
2556
2557 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2558
2559}/*WDI_DelBSSReq*/
2560
2561/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 associated to a BSS and wishes to configure HW for
2564 associated state. Upon the call of this API the WLAN DAL
2565 will pack and send a HAL Post Assoc request message to
2566 the lower RIVA sub-system if DAL is in state STARTED.
2567
2568 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002570
2571 WDI_JoinReq must have been called.
2572
2573 @param wdiPostAssocReqParams: the assoc parameters as specified
2574 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002575
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 wdiPostAssocRspCb: callback for passing back the
2577 response of the post assoc operation received from the
2578 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002579
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 callback
2582
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 @see WDI_JoinReq
2584 @return Result of the function call
2585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002587WDI_PostAssocReq
2588(
2589 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2590 WDI_PostAssocRspCb wdiPostAssocRspCb,
2591 void* pUserData
2592)
2593{
2594 WDI_EventInfoType wdiEventData;
2595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2596
2597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 ------------------------------------------------------------------------*/
2600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2601 {
2602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2603 "WDI API call before module is initialized - Fail request");
2604
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 }
2607
2608 /*------------------------------------------------------------------------
2609 Fill in Event data and post to the Main FSM
2610 ------------------------------------------------------------------------*/
2611 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 wdiEventData.pEventData = pwdiPostAssocReqParams;
2613 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2614 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002615 wdiEventData.pUserData = pUserData;
2616
2617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2618
2619}/*WDI_PostAssocReq*/
2620
2621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 association with another STA has ended and the station
2624 must be deleted from HW. Upon the call of this API the
2625 WLAN DAL will pack and send a HAL Del STA request
2626 message to the lower RIVA sub-system if DAL is in state
2627 STARTED.
2628
2629 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002631
2632 WDI_PostAssocReq must have been called.
2633
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002636
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 wdiDelSTARspCb: callback for passing back the response
2638 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002639
Jeff Johnson295189b2012-06-20 16:38:30 -07002640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 callback
2642
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 @see WDI_PostAssocReq
2644 @return Result of the function call
2645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002647WDI_DelSTAReq
2648(
2649 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2650 WDI_DelSTARspCb wdiDelSTARspCb,
2651 void* pUserData
2652)
2653{
2654 WDI_EventInfoType wdiEventData;
2655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2656
2657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 ------------------------------------------------------------------------*/
2660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2661 {
2662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2663 "WDI API call before module is initialized - Fail request");
2664
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 }
2667
2668 /*------------------------------------------------------------------------
2669 Fill in Event data and post to the Main FSM
2670 ------------------------------------------------------------------------*/
2671 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 wdiEventData.pEventData = pwdiDelSTAParams;
2673 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2674 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 wdiEventData.pUserData = pUserData;
2676
2677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2678
2679}/*WDI_DelSTAReq*/
2680
Jeff Johnsone7245742012-09-05 17:12:55 -07002681/*========================================================================
2682
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002684
Jeff Johnson295189b2012-06-20 16:38:30 -07002685==========================================================================*/
2686
2687/**
2688 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2689 install a BSS encryption key on the HW. Upon the call of this
2690 API the WLAN DAL will pack and send a Set BSS Key request
2691 message to the lower RIVA sub-system if DAL is in state
2692 STARTED.
2693
2694 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002696
2697 WDI_PostAssocReq must have been called.
2698
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002701
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 wdiSetBSSKeyRspCb: callback for passing back the
2703 response of the set BSS Key operation received from the
2704 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002707 callback
2708
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 @see WDI_PostAssocReq
2710 @return Result of the function call
2711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002713WDI_SetBSSKeyReq
2714(
2715 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2716 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2717 void* pUserData
2718)
2719{
2720 WDI_EventInfoType wdiEventData;
2721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2722
2723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 ------------------------------------------------------------------------*/
2726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2727 {
2728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2729 "WDI API call before module is initialized - Fail request");
2730
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 }
2733
2734 /*------------------------------------------------------------------------
2735 Fill in Event data and post to the Main FSM
2736 ------------------------------------------------------------------------*/
2737 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2739 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2740 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 wdiEventData.pUserData = pUserData;
2742
2743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2744
2745}/*WDI_SetBSSKeyReq*/
2746
2747/**
2748 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2749 uninstall a BSS key from HW. Upon the call of this API the
2750 WLAN DAL will pack and send a HAL Remove BSS Key request
2751 message to the lower RIVA sub-system if DAL is in state
2752 STARTED.
2753
2754 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002756
2757 WDI_SetBSSKeyReq must have been called.
2758
Jeff Johnsone7245742012-09-05 17:12:55 -07002759 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002760 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002761
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 wdiRemoveBSSKeyRspCb: callback for passing back the
2763 response of the remove BSS key operation received from
2764 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002765
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002767 callback
2768
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 @see WDI_SetBSSKeyReq
2770 @return Result of the function call
2771*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002772WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002773WDI_RemoveBSSKeyReq
2774(
2775 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2776 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2777 void* pUserData
2778)
2779{
2780 WDI_EventInfoType wdiEventData;
2781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2782
2783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002784 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002785 ------------------------------------------------------------------------*/
2786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2787 {
2788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2789 "WDI API call before module is initialized - Fail request");
2790
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 }
2793
2794 /*------------------------------------------------------------------------
2795 Fill in Event data and post to the Main FSM
2796 ------------------------------------------------------------------------*/
2797 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2799 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2800 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 wdiEventData.pUserData = pUserData;
2802
2803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2804
2805}/*WDI_RemoveBSSKeyReq*/
2806
2807
2808/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 ready to install a STA(ast) encryption key in HW. Upon
2811 the call of this API the WLAN DAL will pack and send a
2812 HAL Set STA Key request message to the lower RIVA
2813 sub-system if DAL is in state STARTED.
2814
2815 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002817
2818 WDI_PostAssocReq must have been called.
2819
Jeff Johnsone7245742012-09-05 17:12:55 -07002820 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002821 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002822
Jeff Johnson295189b2012-06-20 16:38:30 -07002823 wdiSetSTAKeyRspCb: callback for passing back the
2824 response of the set STA key operation received from the
2825 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002826
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002828 callback
2829
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 @see WDI_PostAssocReq
2831 @return Result of the function call
2832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002834WDI_SetSTAKeyReq
2835(
2836 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2837 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2838 void* pUserData
2839)
2840{
2841 WDI_EventInfoType wdiEventData;
2842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2843
2844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 ------------------------------------------------------------------------*/
2847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2848 {
2849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2850 "WDI API call before module is initialized - Fail request");
2851
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 }
2854
2855 /*------------------------------------------------------------------------
2856 Fill in Event data and post to the Main FSM
2857 ------------------------------------------------------------------------*/
2858 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2860 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2861 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 wdiEventData.pUserData = pUserData;
2863
2864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2865
2866}/*WDI_SetSTAKeyReq*/
2867
2868
2869/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 wants to uninstall a previously set STA key in HW. Upon
2872 the call of this API the WLAN DAL will pack and send a
2873 HAL Remove STA Key request message to the lower RIVA
2874 sub-system if DAL is in state STARTED.
2875
2876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002878
2879 WDI_SetSTAKeyReq must have been called.
2880
Jeff Johnsone7245742012-09-05 17:12:55 -07002881 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002883
Jeff Johnson295189b2012-06-20 16:38:30 -07002884 wdiRemoveSTAKeyRspCb: callback for passing back the
2885 response of the remove STA key operation received from
2886 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002887
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 callback
2890
Jeff Johnson295189b2012-06-20 16:38:30 -07002891 @see WDI_SetSTAKeyReq
2892 @return Result of the function call
2893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002895WDI_RemoveSTAKeyReq
2896(
2897 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2898 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2899 void* pUserData
2900)
2901{
2902 WDI_EventInfoType wdiEventData;
2903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2904
2905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 ------------------------------------------------------------------------*/
2908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2909 {
2910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2911 "WDI API call before module is initialized - Fail request");
2912
Jeff Johnsone7245742012-09-05 17:12:55 -07002913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002914 }
2915
2916 /*------------------------------------------------------------------------
2917 Fill in Event data and post to the Main FSM
2918 ------------------------------------------------------------------------*/
2919 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002920 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2921 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2922 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 wdiEventData.pUserData = pUserData;
2924
2925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2926
2927}/*WDI_RemoveSTAKeyReq*/
2928
2929
2930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 wants to install a STA Bcast encryption key on the HW.
2933 Upon the call of this API the WLAN DAL will pack and
2934 send a HAL Start request message to the lower RIVA
2935 sub-system if DAL is in state STARTED.
2936
2937 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002938 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002939
2940 WDI_PostAssocReq must have been called.
2941
Jeff Johnsone7245742012-09-05 17:12:55 -07002942 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002944
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 wdiSetSTABcastKeyRspCb: callback for passing back the
2946 response of the set BSS Key operation received from the
2947 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002948
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 callback
2951
Jeff Johnson295189b2012-06-20 16:38:30 -07002952 @see WDI_PostAssocReq
2953 @return Result of the function call
2954*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002955WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002956WDI_SetSTABcastKeyReq
2957(
2958 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2959 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2960 void* pUserData
2961)
2962
2963{
2964 WDI_EventInfoType wdiEventData;
2965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2966
2967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002969 ------------------------------------------------------------------------*/
2970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2971 {
2972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2973 "WDI API call before module is initialized - Fail request");
2974
Jeff Johnsone7245742012-09-05 17:12:55 -07002975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002976 }
2977
2978 /*------------------------------------------------------------------------
2979 Fill in Event data and post to the Main FSM
2980 ------------------------------------------------------------------------*/
2981 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2983 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2984 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 wdiEventData.pUserData = pUserData;
2986
2987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2988
2989}/*WDI_SetSTABcastKeyReq*/
2990
2991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002992 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 MAC wants to uninstall a STA Bcast key from HW. Upon the
2994 call of this API the WLAN DAL will pack and send a HAL
2995 Remove STA Bcast Key request message to the lower RIVA
2996 sub-system if DAL is in state STARTED.
2997
2998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003000
3001 WDI_SetSTABcastKeyReq must have been called.
3002
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 parameters as specified by the Device
3005 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003006
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3008 response of the remove STA Bcast key operation received
3009 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003010
Jeff Johnson295189b2012-06-20 16:38:30 -07003011 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003012 callback
3013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 @see WDI_SetSTABcastKeyReq
3015 @return Result of the function call
3016*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003018WDI_RemoveSTABcastKeyReq
3019(
3020 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3021 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3022 void* pUserData
3023)
3024{
3025 WDI_EventInfoType wdiEventData;
3026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3027
3028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003030 ------------------------------------------------------------------------*/
3031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3032 {
3033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3034 "WDI API call before module is initialized - Fail request");
3035
Jeff Johnsone7245742012-09-05 17:12:55 -07003036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 }
3038
3039 /*------------------------------------------------------------------------
3040 Fill in Event data and post to the Main FSM
3041 ------------------------------------------------------------------------*/
3042 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3044 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3045 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003046 wdiEventData.pUserData = pUserData;
3047
3048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3049
3050}/*WDI_RemoveSTABcastKeyReq*/
3051
3052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003053 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003054 MAC wants to set Max Tx Power to HW. Upon the
3055 call of this API the WLAN DAL will pack and send a HAL
3056 Remove STA Bcast Key request message to the lower RIVA
3057 sub-system if DAL is in state STARTED.
3058
3059 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003060 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003061
3062 WDI_SetSTABcastKeyReq must have been called.
3063
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 parameters as specified by the Device
3066 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003067
Jeff Johnson295189b2012-06-20 16:38:30 -07003068 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3069 response of the remove STA Bcast key operation received
3070 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003071
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003073 callback
3074
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 @see WDI_SetMaxTxPowerReq
3076 @return Result of the function call
3077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003079WDI_SetMaxTxPowerReq
3080(
3081 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3082 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3083 void* pUserData
3084)
3085{
3086 WDI_EventInfoType wdiEventData;
3087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3088
3089 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003090 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 ------------------------------------------------------------------------*/
3092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3093 {
3094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3095 "WDI API call before module is initialized - Fail request");
3096
Jeff Johnsone7245742012-09-05 17:12:55 -07003097 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003098 }
3099
3100 /*------------------------------------------------------------------------
3101 Fill in Event data and post to the Main FSM
3102 ------------------------------------------------------------------------*/
3103 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003104 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3105 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3106 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 wdiEventData.pUserData = pUserData;
3108
3109 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3110}
3111
schang86c22c42013-03-13 18:41:24 -07003112/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003113 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3114 MAC wants to set Max Tx Power to HW for specific band.
3115
3116 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3117
3118 wdiReqStatusCb: callback for passing back the
3119 response msg from the device
3120
3121 pUserData: user data will be passed back with the
3122 callback
3123
3124 @see WDI_SetMaxTxPowerPerBandReq
3125 @return Result of the function call
3126*/
3127WDI_Status
3128WDI_SetMaxTxPowerPerBandReq
3129(
3130 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3131 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3132 void* pUserData
3133)
3134{
3135 WDI_EventInfoType wdiEventData;
3136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3137
3138 /*------------------------------------------------------------------------
3139 Sanity Check
3140 ------------------------------------------------------------------------*/
3141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3142 {
3143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3144 "WDI API call before module is initialized - Fail request");
3145
3146 return WDI_STATUS_E_NOT_ALLOWED;
3147 }
3148
3149 /*------------------------------------------------------------------------
3150 Fill in Event data and post to the Main FSM
3151 ------------------------------------------------------------------------*/
3152 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3153 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3154 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3155 wdiEventData.pCBfnc = wdiReqStatusCb;
3156 wdiEventData.pUserData = pUserData;
3157
3158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3159}
3160
3161/**
schang86c22c42013-03-13 18:41:24 -07003162 @brief WDI_SetTxPowerReq will be called when the upper
3163 MAC wants to set Tx Power to HW.
3164 In state BUSY this request will be queued. Request won't
3165 be allowed in any other state.
3166
3167
3168 @param pwdiSetTxPowerParams: set TS Power parameters
3169 BSSID and target TX Power with dbm included
3170
3171 wdiReqStatusCb: callback for passing back the response
3172
3173 pUserData: user data will be passed back with the
3174 callback
3175
3176 @return Result of the function call
3177*/
3178WDI_Status
3179WDI_SetTxPowerReq
3180(
3181 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3182 WDA_SetTxPowerRspCb wdiReqStatusCb,
3183 void* pUserData
3184)
3185{
3186 WDI_EventInfoType wdiEventData;
3187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3188
3189 /*------------------------------------------------------------------------
3190 Sanity Check
3191 ------------------------------------------------------------------------*/
3192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3193 {
3194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3195 "WDI API call before module is initialized - Fail request");
3196
3197 return WDI_STATUS_E_NOT_ALLOWED;
3198 }
3199
3200 /*------------------------------------------------------------------------
3201 Fill in Event data and post to the Main FSM
3202 ------------------------------------------------------------------------*/
3203 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3204 wdiEventData.pEventData = pwdiSetTxPowerParams;
3205 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3206 wdiEventData.pCBfnc = wdiReqStatusCb;
3207 wdiEventData.pUserData = pUserData;
3208
3209 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3210}
3211
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003212#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003213WDI_Status
3214WDI_TSMStatsReq
3215(
3216 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3217 WDI_TsmRspCb wdiReqStatusCb,
3218 void* pUserData
3219)
3220{
3221 WDI_EventInfoType wdiEventData;
3222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003223 /*------------------------------------------------------------------------
3224 Sanity Check
3225 ------------------------------------------------------------------------*/
3226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3227 {
3228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3229 "WDI API call before module is initialized - Fail request");
3230
3231 return WDI_STATUS_E_NOT_ALLOWED;
3232 }
3233
3234 /*------------------------------------------------------------------------
3235 Fill in Event data and post to the Main FSM
3236 ------------------------------------------------------------------------*/
3237 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3238 wdiEventData.pEventData = pwdiTsmReqParams;
3239 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3240 wdiEventData.pCBfnc = wdiReqStatusCb;
3241 wdiEventData.pUserData = pUserData;
3242
3243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3244
3245}
3246#endif
3247
3248/*========================================================================
3249
3250 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003251
Jeff Johnson295189b2012-06-20 16:38:30 -07003252==========================================================================*/
3253
3254/**
3255 @brief WDI_AddTSReq will be called when the upper MAC to inform
3256 the device of a successful add TSpec negotiation. HW
3257 needs to receive the TSpec Info from the UMAC in order
3258 to configure properly the QoS data traffic. Upon the
3259 call of this API the WLAN DAL will pack and send a HAL
3260 Add TS request message to the lower RIVA sub-system if
3261 DAL is in state STARTED.
3262
3263 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003265
3266 WDI_PostAssocReq must have been called.
3267
3268 @param wdiAddTsReqParams: the add TS parameters as specified by
3269 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003270
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 wdiAddTsRspCb: callback for passing back the response of
3272 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003273
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003275 callback
3276
Jeff Johnson295189b2012-06-20 16:38:30 -07003277 @see WDI_PostAssocReq
3278 @return Result of the function call
3279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003281WDI_AddTSReq
3282(
3283 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3284 WDI_AddTsRspCb wdiAddTsRspCb,
3285 void* pUserData
3286)
3287{
3288 WDI_EventInfoType wdiEventData;
3289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3290
3291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003292 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003293 ------------------------------------------------------------------------*/
3294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3295 {
3296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3297 "WDI API call before module is initialized - Fail request");
3298
Jeff Johnsone7245742012-09-05 17:12:55 -07003299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 }
3301
3302 /*------------------------------------------------------------------------
3303 Fill in Event data and post to the Main FSM
3304 ------------------------------------------------------------------------*/
3305 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 wdiEventData.pEventData = pwdiAddTsReqParams;
3307 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3308 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 wdiEventData.pUserData = pUserData;
3310
3311 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3312
3313}/*WDI_AddTSReq*/
3314
3315
3316
3317/**
3318 @brief WDI_DelTSReq will be called when the upper MAC has ended
3319 admission on a specific AC. This is to inform HW that
3320 QoS traffic parameters must be rest. Upon the call of
3321 this API the WLAN DAL will pack and send a HAL Del TS
3322 request message to the lower RIVA sub-system if DAL is
3323 in state STARTED.
3324
3325 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003326 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003327
3328 WDI_AddTSReq must have been called.
3329
3330 @param wdiDelTsReqParams: the del TS parameters as specified by
3331 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003332
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 wdiDelTsRspCb: callback for passing back the response of
3334 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003335
Jeff Johnson295189b2012-06-20 16:38:30 -07003336 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 callback
3338
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 @see WDI_AddTSReq
3340 @return Result of the function call
3341*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003342WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003343WDI_DelTSReq
3344(
3345 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3346 WDI_DelTsRspCb wdiDelTsRspCb,
3347 void* pUserData
3348)
3349{
3350 WDI_EventInfoType wdiEventData;
3351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3352
3353 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003354 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 ------------------------------------------------------------------------*/
3356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3357 {
3358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3359 "WDI API call before module is initialized - Fail request");
3360
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003362 }
3363
3364 /*------------------------------------------------------------------------
3365 Fill in Event data and post to the Main FSM
3366 ------------------------------------------------------------------------*/
3367 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 wdiEventData.pEventData = pwdiDelTsReqParams;
3369 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3370 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 wdiEventData.pUserData = pUserData;
3372
3373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3374
3375}/*WDI_DelTSReq*/
3376
3377
3378
3379/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 wishes to update the EDCA parameters used by HW for QoS
3382 data traffic. Upon the call of this API the WLAN DAL
3383 will pack and send a HAL Update EDCA Params request
3384 message to the lower RIVA sub-system if DAL is in state
3385 STARTED.
3386
3387 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003389
3390 WDI_PostAssocReq must have been called.
3391
Jeff Johnsone7245742012-09-05 17:12:55 -07003392 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003394
Jeff Johnson295189b2012-06-20 16:38:30 -07003395 wdiUpdateEDCAParamsRspCb: callback for passing back the
3396 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003397
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 callback
3400
Jeff Johnson295189b2012-06-20 16:38:30 -07003401 @see WDI_PostAssocReq
3402 @return Result of the function call
3403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003405WDI_UpdateEDCAParams
3406(
3407 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3408 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3409 void* pUserData
3410)
3411{
3412 WDI_EventInfoType wdiEventData;
3413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3414
3415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 ------------------------------------------------------------------------*/
3418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3419 {
3420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3421 "WDI API call before module is initialized - Fail request");
3422
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 }
3425
3426 /*------------------------------------------------------------------------
3427 Fill in Event data and post to the Main FSM
3428 ------------------------------------------------------------------------*/
3429 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3431 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3432 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003433 wdiEventData.pUserData = pUserData;
3434
3435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3436
3437}/*WDI_UpdateEDCAParams*/
3438
3439
3440/**
3441 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3442 successfully a BA session and needs to notify the HW for
3443 the appropriate settings to take place. Upon the call of
3444 this API the WLAN DAL will pack and send a HAL Add BA
3445 request message to the lower RIVA sub-system if DAL is
3446 in state STARTED.
3447
3448 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003450
3451 WDI_PostAssocReq must have been called.
3452
3453 @param wdiAddBAReqParams: the add BA parameters as specified by
3454 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003455
Jeff Johnson295189b2012-06-20 16:38:30 -07003456 wdiAddBARspCb: callback for passing back the response of
3457 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003458
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 callback
3461
Jeff Johnson295189b2012-06-20 16:38:30 -07003462 @see WDI_PostAssocReq
3463 @return Result of the function call
3464*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003465WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003466WDI_AddBASessionReq
3467(
3468 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3469 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3470 void* pUserData
3471)
3472{
3473 WDI_EventInfoType wdiEventData;
3474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3475
3476 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003477 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 ------------------------------------------------------------------------*/
3479 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3480 {
3481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3482 "WDI API call before module is initialized - Fail request");
3483
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 }
3486
3487 /*------------------------------------------------------------------------
3488 Fill in Event data and post to the Main FSM
3489 ------------------------------------------------------------------------*/
3490 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3492 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3493 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 wdiEventData.pUserData = pUserData;
3495
3496 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3497
3498}/*WDI_AddBASessionReq*/
3499
3500/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003501 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003502 inform HW that it has deleted a previously created BA
3503 session. Upon the call of this API the WLAN DAL will
3504 pack and send a HAL Del BA request message to the lower
3505 RIVA sub-system if DAL is in state STARTED.
3506
3507 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003509
3510 WDI_AddBAReq must have been called.
3511
3512 @param wdiDelBAReqParams: the del BA parameters as specified by
3513 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003514
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 wdiDelBARspCb: callback for passing back the response of
3516 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003517
Jeff Johnson295189b2012-06-20 16:38:30 -07003518 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 callback
3520
Jeff Johnson295189b2012-06-20 16:38:30 -07003521 @see WDI_AddBAReq
3522 @return Result of the function call
3523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003525WDI_DelBAReq
3526(
3527 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3528 WDI_DelBARspCb wdiDelBARspCb,
3529 void* pUserData
3530)
3531{
3532 WDI_EventInfoType wdiEventData;
3533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3534
3535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 ------------------------------------------------------------------------*/
3538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3539 {
3540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3541 "WDI API call before module is initialized - Fail request");
3542
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 }
3545
3546 /*------------------------------------------------------------------------
3547 Fill in Event data and post to the Main FSM
3548 ------------------------------------------------------------------------*/
3549 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 wdiEventData.pEventData = pwdiDelBAReqParams;
3551 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3552 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 wdiEventData.pUserData = pUserData;
3554
3555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3556
3557}/*WDI_DelBAReq*/
3558
Jeff Johnsone7245742012-09-05 17:12:55 -07003559/*========================================================================
3560
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003562
Jeff Johnson295189b2012-06-20 16:38:30 -07003563==========================================================================*/
3564
3565/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003566 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003567 wants to set the power save related configurations of
3568 the WLAN Device. Upon the call of this API the WLAN DAL
3569 will pack and send a HAL Update CFG request message to
3570 the lower RIVA sub-system if DAL is in state STARTED.
3571
3572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003574
3575 WDI_Start must have been called.
3576
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003579
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 wdiSetPwrSaveCfgCb: callback for passing back the
3581 response of the set power save cfg operation received
3582 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003583
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003585 callback
3586
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003588 @return Result of the function call
3589*/
3590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003591WDI_SetPwrSaveCfgReq
3592(
3593 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3594 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3595 void* pUserData
3596)
3597{
3598 WDI_EventInfoType wdiEventData;
3599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3600
3601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 ------------------------------------------------------------------------*/
3604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3605 {
3606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3607 "WDI API call before module is initialized - Fail request");
3608
Jeff Johnsone7245742012-09-05 17:12:55 -07003609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003610 }
3611
3612 /*------------------------------------------------------------------------
3613 Fill in Event data and post to the Main FSM
3614 ------------------------------------------------------------------------*/
3615 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003616 wdiEventData.pEventData = pwdiPowerSaveCfg;
3617 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3618 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 wdiEventData.pUserData = pUserData;
3620
3621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3622
3623}/*WDI_SetPwrSaveCfgReq*/
3624
3625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 request the device to get into IMPS power state. Upon
3628 the call of this API the WLAN DAL will send a HAL Enter
3629 IMPS request message to the lower RIVA sub-system if DAL
3630 is in state STARTED.
3631
3632 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003633 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003634
Jeff Johnsone7245742012-09-05 17:12:55 -07003635
3636 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 response of the Enter IMPS operation received from the
3638 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 callback
3642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 @see WDI_Start
3644 @return Result of the function call
3645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003647WDI_EnterImpsReq
3648(
Mihir Shetea4306052014-03-25 00:02:54 +05303649 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3651 void* pUserData
3652)
3653{
3654 WDI_EventInfoType wdiEventData;
3655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3656
3657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003659 ------------------------------------------------------------------------*/
3660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3661 {
3662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3663 "WDI API call before module is initialized - Fail request");
3664
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 }
3667
3668 /*------------------------------------------------------------------------
3669 Fill in Event data and post to the Main FSM
3670 ------------------------------------------------------------------------*/
3671 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303672 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3673 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003674 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003675 wdiEventData.pUserData = pUserData;
3676
3677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3678
3679}/*WDI_EnterImpsReq*/
3680
3681/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003682 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 request the device to get out of IMPS power state. Upon
3684 the call of this API the WLAN DAL will send a HAL Exit
3685 IMPS request message to the lower RIVA sub-system if DAL
3686 is in state STARTED.
3687
3688 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003690
Jeff Johnson295189b2012-06-20 16:38:30 -07003691
Jeff Johnsone7245742012-09-05 17:12:55 -07003692
3693 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003695
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003697 callback
3698
Jeff Johnson295189b2012-06-20 16:38:30 -07003699 @see WDI_Start
3700 @return Result of the function call
3701*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003702WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003703WDI_ExitImpsReq
3704(
3705 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3706 void* pUserData
3707)
3708{
3709 WDI_EventInfoType wdiEventData;
3710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3711
3712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 ------------------------------------------------------------------------*/
3715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3716 {
3717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3718 "WDI API call before module is initialized - Fail request");
3719
Jeff Johnsone7245742012-09-05 17:12:55 -07003720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 }
3722
3723 /*------------------------------------------------------------------------
3724 Fill in Event data and post to the Main FSM
3725 ------------------------------------------------------------------------*/
3726 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003727 wdiEventData.pEventData = NULL;
3728 wdiEventData.uEventDataSize = 0;
3729 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 wdiEventData.pUserData = pUserData;
3731
3732 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3733
3734}/*WDI_ExitImpsReq*/
3735
3736/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 request the device to get into BMPS power state. Upon
3739 the call of this API the WLAN DAL will pack and send a
3740 HAL Enter BMPS request message to the lower RIVA
3741 sub-system if DAL is in state STARTED.
3742
3743 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003745
3746 WDI_PostAssocReq must have been called.
3747
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003750
Jeff Johnson295189b2012-06-20 16:38:30 -07003751 wdiEnterBmpsRspCb: callback for passing back the
3752 response of the Enter BMPS operation received from the
3753 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003754
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 callback
3757
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 @see WDI_PostAssocReq
3759 @return Result of the function call
3760*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003761WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003762WDI_EnterBmpsReq
3763(
3764 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3765 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3766 void* pUserData
3767)
3768{
3769 WDI_EventInfoType wdiEventData;
3770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3771
3772 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 ------------------------------------------------------------------------*/
3775 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3776 {
3777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3778 "WDI API call before module is initialized - Fail request");
3779
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 }
3782
3783 /*------------------------------------------------------------------------
3784 Fill in Event data and post to the Main FSM
3785 ------------------------------------------------------------------------*/
3786 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3788 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3789 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 wdiEventData.pUserData = pUserData;
3791
3792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3793
3794}/*WDI_EnterBmpsReq*/
3795
3796/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003798 request the device to get out of BMPS power state. Upon
3799 the call of this API the WLAN DAL will pack and send a
3800 HAL Exit BMPS request message to the lower RIVA
3801 sub-system if DAL is in state STARTED.
3802
3803 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003805
3806 WDI_PostAssocReq must have been called.
3807
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003810
Jeff Johnson295189b2012-06-20 16:38:30 -07003811 wdiExitBmpsRspCb: callback for passing back the response
3812 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003813
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 callback
3816
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 @see WDI_PostAssocReq
3818 @return Result of the function call
3819*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003820WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003821WDI_ExitBmpsReq
3822(
3823 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3824 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3825 void* pUserData
3826)
3827{
3828 WDI_EventInfoType wdiEventData;
3829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3830
3831 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 ------------------------------------------------------------------------*/
3834 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3835 {
3836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3837 "WDI API call before module is initialized - Fail request");
3838
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 }
3841
3842 /*------------------------------------------------------------------------
3843 Fill in Event data and post to the Main FSM
3844 ------------------------------------------------------------------------*/
3845 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3847 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3848 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 wdiEventData.pUserData = pUserData;
3850
3851 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3852
3853}/*WDI_ExitBmpsReq*/
3854
3855/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003857 request the device to get into UAPSD power state. Upon
3858 the call of this API the WLAN DAL will pack and send a
3859 HAL Enter UAPSD request message to the lower RIVA
3860 sub-system if DAL is in state STARTED.
3861
3862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003864
3865 WDI_PostAssocReq must have been called.
3866 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003867
3868 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003870
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 wdiEnterUapsdRspCb: callback for passing back the
3872 response of the Enter UAPSD operation received from the
3873 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003874
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 callback
3877
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3879 @return Result of the function call
3880*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003881WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003882WDI_EnterUapsdReq
3883(
3884 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3885 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3886 void* pUserData
3887)
3888{
3889 WDI_EventInfoType wdiEventData;
3890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3891
3892 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003893 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 ------------------------------------------------------------------------*/
3895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3896 {
3897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3898 "WDI API call before module is initialized - Fail request");
3899
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 }
3902
3903 /*------------------------------------------------------------------------
3904 Fill in Event data and post to the Main FSM
3905 ------------------------------------------------------------------------*/
3906 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3908 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3909 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 wdiEventData.pUserData = pUserData;
3911
3912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3913
3914}/*WDI_EnterUapsdReq*/
3915
3916/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 request the device to get out of UAPSD power state. Upon
3919 the call of this API the WLAN DAL will send a HAL Exit
3920 UAPSD request message to the lower RIVA sub-system if
3921 DAL is in state STARTED.
3922
3923 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003925
3926 WDI_PostAssocReq must have been called.
3927
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 response of the Exit UAPSD operation received from the
3930 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003931
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 callback
3934
Jeff Johnson295189b2012-06-20 16:38:30 -07003935 @see WDI_PostAssocReq
3936 @return Result of the function call
3937*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003938WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003939WDI_ExitUapsdReq
3940(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003941 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3943 void* pUserData
3944)
3945{
3946 WDI_EventInfoType wdiEventData;
3947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3948
3949 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003951 ------------------------------------------------------------------------*/
3952 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3953 {
3954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3955 "WDI API call before module is initialized - Fail request");
3956
Jeff Johnsone7245742012-09-05 17:12:55 -07003957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003958 }
3959
3960 /*------------------------------------------------------------------------
3961 Fill in Event data and post to the Main FSM
3962 ------------------------------------------------------------------------*/
3963 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003964 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3965 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003966 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003967 wdiEventData.pUserData = pUserData;
3968
3969 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3970
3971}/*WDI_ExitUapsdReq*/
3972
3973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 MAC wants to set the UAPSD related configurations
3976 of an associated STA (while acting as an AP) to the WLAN
3977 Device. Upon the call of this API the WLAN DAL will pack
3978 and send a HAL Update UAPSD params request message to
3979 the lower RIVA sub-system if DAL is in state STARTED.
3980
3981 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003983
3984 WDI_ConfigBSSReq must have been called.
3985
Jeff Johnsone7245742012-09-05 17:12:55 -07003986 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003988
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 wdiUpdateUapsdParamsCb: callback for passing back the
3990 response of the update UAPSD params operation received
3991 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003992
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 callback
3995
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 @see WDI_ConfigBSSReq
3997 @return Result of the function call
3998*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003999WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004000WDI_UpdateUapsdParamsReq
4001(
4002 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4003 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4004 void* pUserData
4005)
4006{
4007 WDI_EventInfoType wdiEventData;
4008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4009
4010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 ------------------------------------------------------------------------*/
4013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4014 {
4015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4016 "WDI API call before module is initialized - Fail request");
4017
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 }
4020
4021 /*------------------------------------------------------------------------
4022 Fill in Event data and post to the Main FSM
4023 ------------------------------------------------------------------------*/
4024 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004026 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 wdiEventData.pUserData = pUserData;
4029
4030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4031
4032}/*WDI_UpdateUapsdParamsReq*/
4033
4034/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 MAC wants to set the UAPSD related configurations before
4037 requesting for enter UAPSD power state to the WLAN
4038 Device. Upon the call of this API the WLAN DAL will pack
4039 and send a HAL Set UAPSD params request message to
4040 the lower RIVA sub-system if DAL is in state STARTED.
4041
4042 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004043 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004044
4045 WDI_PostAssocReq must have been called.
4046
4047 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4048 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004049
Jeff Johnson295189b2012-06-20 16:38:30 -07004050 wdiSetUapsdAcParamsCb: callback for passing back the
4051 response of the set UAPSD params operation received from
4052 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004053
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004055 callback
4056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 @see WDI_PostAssocReq
4058 @return Result of the function call
4059*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004060WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004061WDI_SetUapsdAcParamsReq
4062(
4063 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4064 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4065 void* pUserData
4066)
4067{
4068 WDI_EventInfoType wdiEventData;
4069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4070
4071 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 ------------------------------------------------------------------------*/
4074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4075 {
4076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4077 "WDI API call before module is initialized - Fail request");
4078
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 }
4081
4082 /*------------------------------------------------------------------------
4083 Fill in Event data and post to the Main FSM
4084 ------------------------------------------------------------------------*/
4085 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 wdiEventData.pEventData = pwdiUapsdInfo;
4087 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4088 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 wdiEventData.pUserData = pUserData;
4090
4091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4092
4093}/*WDI_SetUapsdAcParamsReq*/
4094
4095/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 MAC wants to set/reset the RXP filters for received pkts
4098 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4099 and send a HAL configure RXP filter request message to
4100 the lower RIVA sub-system.
4101
4102 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004104
Jeff Johnsone7245742012-09-05 17:12:55 -07004105
4106 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 filter as specified by the Device
4108 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004109
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 wdiConfigureRxpFilterCb: callback for passing back the
4111 response of the configure RXP filter operation received
4112 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004113
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004115 callback
4116
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 @return Result of the function call
4118*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004119WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004120WDI_ConfigureRxpFilterReq
4121(
4122 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4123 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4124 void* pUserData
4125)
4126{
4127 WDI_EventInfoType wdiEventData;
4128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4129
4130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 ------------------------------------------------------------------------*/
4133 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4134 {
4135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4136 "WDI API call before module is initialized - Fail request");
4137
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 }
4140
4141 /*------------------------------------------------------------------------
4142 Fill in Event data and post to the Main FSM
4143 ------------------------------------------------------------------------*/
4144 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4146 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4147 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 wdiEventData.pUserData = pUserData;
4149
4150 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4151}/*WDI_ConfigureRxpFilterReq*/
4152
4153/**
4154 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4155 wants to set the beacon filters while in power save.
4156 Upon the call of this API the WLAN DAL will pack and
4157 send a Beacon filter request message to the
4158 lower RIVA sub-system.
4159
4160 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004162
Jeff Johnsone7245742012-09-05 17:12:55 -07004163
4164 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 filter as specified by the Device
4166 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004167
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 wdiBeaconFilterCb: callback for passing back the
4169 response of the set beacon filter operation received
4170 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004171
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 callback
4174
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 @return Result of the function call
4176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004178WDI_SetBeaconFilterReq
4179(
4180 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4181 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4182 void* pUserData
4183)
4184{
4185 WDI_EventInfoType wdiEventData;
4186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4187
4188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004190 ------------------------------------------------------------------------*/
4191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4192 {
4193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4194 "WDI API call before module is initialized - Fail request");
4195
Jeff Johnsone7245742012-09-05 17:12:55 -07004196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004197 }
4198
4199 /*------------------------------------------------------------------------
4200 Fill in Event data and post to the Main FSM
4201 ------------------------------------------------------------------------*/
4202 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004204 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 wdiEventData.pUserData = pUserData;
4207
4208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4209}/*WDI_SetBeaconFilterReq*/
4210
4211/**
4212 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4213 wants to remove the beacon filter for particular IE
4214 while in power save. Upon the call of this API the WLAN
4215 DAL will pack and send a remove Beacon filter request
4216 message to the lower RIVA sub-system.
4217
4218 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004219 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004220
Jeff Johnsone7245742012-09-05 17:12:55 -07004221
4222 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 filter as specified by the Device
4224 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004225
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 wdiBeaconFilterCb: callback for passing back the
4227 response of the remove beacon filter operation received
4228 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004229
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 callback
4232
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 @return Result of the function call
4234*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004235WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004236WDI_RemBeaconFilterReq
4237(
4238 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4239 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4240 void* pUserData
4241)
4242{
4243 WDI_EventInfoType wdiEventData;
4244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4245
4246 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 ------------------------------------------------------------------------*/
4249 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4250 {
4251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4252 "WDI API call before module is initialized - Fail request");
4253
Jeff Johnsone7245742012-09-05 17:12:55 -07004254 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 }
4256
4257 /*------------------------------------------------------------------------
4258 Fill in Event data and post to the Main FSM
4259 ------------------------------------------------------------------------*/
4260 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004262 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 wdiEventData.pUserData = pUserData;
4265
4266 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4267}/*WDI_RemBeaconFilterReq*/
4268
4269/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004270 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 MAC wants to set the RSSI thresholds related
4272 configurations while in power save. Upon the call of
4273 this API the WLAN DAL will pack and send a HAL Set RSSI
4274 thresholds request message to the lower RIVA
4275 sub-system if DAL is in state STARTED.
4276
4277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004279
4280 WDI_PostAssocReq must have been called.
4281
4282 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4283 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004284
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 wdiSetUapsdAcParamsCb: callback for passing back the
4286 response of the set UAPSD params operation received from
4287 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004288
Jeff Johnson295189b2012-06-20 16:38:30 -07004289 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 callback
4291
Jeff Johnson295189b2012-06-20 16:38:30 -07004292 @see WDI_PostAssocReq
4293 @return Result of the function call
4294*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004296WDI_SetRSSIThresholdsReq
4297(
4298 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4299 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4300 void* pUserData
4301)
4302{
4303 WDI_EventInfoType wdiEventData;
4304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4305
4306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004308 ------------------------------------------------------------------------*/
4309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4310 {
4311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4312 "WDI API call before module is initialized - Fail request");
4313
Jeff Johnsone7245742012-09-05 17:12:55 -07004314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 }
4316
4317 /*------------------------------------------------------------------------
4318 Fill in Event data and post to the Main FSM
4319 ------------------------------------------------------------------------*/
4320 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004321 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004322 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004323 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004324 wdiEventData.pUserData = pUserData;
4325
4326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4327}/* WDI_SetRSSIThresholdsReq*/
4328
4329/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004330 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004331 wants to set the filter to minimize unnecessary host
4332 wakeup due to broadcast traffic while in power save.
4333 Upon the call of this API the WLAN DAL will pack and
4334 send a HAL host offload request message to the
4335 lower RIVA sub-system if DAL is in state STARTED.
4336
4337 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004338 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004339
4340 WDI_PostAssocReq must have been called.
4341
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004344
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 wdiHostOffloadCb: callback for passing back the response
4346 of the host offload operation received from the
4347 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004348
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 callback
4351
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 @see WDI_PostAssocReq
4353 @return Result of the function call
4354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004356WDI_HostOffloadReq
4357(
4358 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4359 WDI_HostOffloadCb wdiHostOffloadCb,
4360 void* pUserData
4361)
4362{
4363 WDI_EventInfoType wdiEventData;
4364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4365
4366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 ------------------------------------------------------------------------*/
4369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4370 {
4371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4372 "WDI API call before module is initialized - Fail request");
4373
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 }
4376
4377 /*------------------------------------------------------------------------
4378 Fill in Event data and post to the Main FSM
4379 ------------------------------------------------------------------------*/
4380 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004382 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004383 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004384 wdiEventData.pUserData = pUserData;
4385
4386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4387}/*WDI_HostOffloadReq*/
4388
4389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004390 @brief WDI_KeepAliveReq will be called when the upper MAC
4391 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 and minimize unnecessary host wakeups due to while in power save.
4393 Upon the call of this API the WLAN DAL will pack and
4394 send a HAL Keep Alive request message to the
4395 lower RIVA sub-system if DAL is in state STARTED.
4396
4397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004399
4400 WDI_PostAssocReq must have been called.
4401
Jeff Johnsone7245742012-09-05 17:12:55 -07004402 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004404
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 wdiKeepAliveCb: callback for passing back the response
4406 of the Keep Alive operation received from the
4407 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004408
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 callback
4411
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 @see WDI_PostAssocReq
4413 @return Result of the function call
4414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004416WDI_KeepAliveReq
4417(
4418 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4419 WDI_KeepAliveCb wdiKeepAliveCb,
4420 void* pUserData
4421)
4422{
4423 WDI_EventInfoType wdiEventData;
4424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4425
4426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 ------------------------------------------------------------------------*/
4429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4430 {
4431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4432 "WDI_KeepAliveReq: WDI API call before module "
4433 "is initialized - Fail request");
4434
Jeff Johnsone7245742012-09-05 17:12:55 -07004435 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004436 }
4437
4438 /*------------------------------------------------------------------------
4439 Fill in Event data and post to the Main FSM
4440 ------------------------------------------------------------------------*/
4441 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004442 wdiEventData.pEventData = pwdiKeepAliveParams;
4443 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4444 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 wdiEventData.pUserData = pUserData;
4446
4447 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4448}/*WDI_KeepAliveReq*/
4449
4450/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004451 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004452 wants to set the Wowl Bcast ptrn to minimize unnecessary
4453 host wakeup due to broadcast traffic while in power
4454 save. Upon the call of this API the WLAN DAL will pack
4455 and send a HAL Wowl Bcast ptrn request message to the
4456 lower RIVA sub-system if DAL is in state STARTED.
4457
4458 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004460
4461 WDI_PostAssocReq must have been called.
4462
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004465
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 wdiWowlAddBcPtrnCb: callback for passing back the
4467 response of the add Wowl bcast ptrn operation received
4468 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004471 callback
4472
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 @see WDI_PostAssocReq
4474 @return Result of the function call
4475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004477WDI_WowlAddBcPtrnReq
4478(
4479 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4480 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4481 void* pUserData
4482)
4483{
4484 WDI_EventInfoType wdiEventData;
4485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4486
4487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004489 ------------------------------------------------------------------------*/
4490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4491 {
4492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4493 "WDI API call before module is initialized - Fail request");
4494
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 }
4497
4498 /*------------------------------------------------------------------------
4499 Fill in Event data and post to the Main FSM
4500 ------------------------------------------------------------------------*/
4501 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004503 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004504 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 wdiEventData.pUserData = pUserData;
4506
4507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4508}/*WDI_WowlAddBcPtrnReq*/
4509
4510/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004511 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 wants to clear the Wowl Bcast ptrn. Upon the call of
4513 this API the WLAN DAL will pack and send a HAL delete
4514 Wowl Bcast ptrn request message to the lower RIVA
4515 sub-system if DAL is in state STARTED.
4516
4517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004519
4520 WDI_WowlAddBcPtrnReq must have been called.
4521
Jeff Johnsone7245742012-09-05 17:12:55 -07004522 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004524
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 wdiWowlDelBcPtrnCb: callback for passing back the
4526 response of the del Wowl bcast ptrn operation received
4527 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004528
Jeff Johnson295189b2012-06-20 16:38:30 -07004529 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 callback
4531
Jeff Johnson295189b2012-06-20 16:38:30 -07004532 @see WDI_WowlAddBcPtrnReq
4533 @return Result of the function call
4534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004536WDI_WowlDelBcPtrnReq
4537(
4538 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4539 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4540 void* pUserData
4541)
4542{
4543 WDI_EventInfoType wdiEventData;
4544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4545
4546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004548 ------------------------------------------------------------------------*/
4549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4550 {
4551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4552 "WDI API call before module is initialized - Fail request");
4553
Jeff Johnsone7245742012-09-05 17:12:55 -07004554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 }
4556
4557 /*------------------------------------------------------------------------
4558 Fill in Event data and post to the Main FSM
4559 ------------------------------------------------------------------------*/
4560 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004562 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004563 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 wdiEventData.pUserData = pUserData;
4565
4566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4567}/*WDI_WowlDelBcPtrnReq*/
4568
4569/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 wants to enter the Wowl state to minimize unnecessary
4572 host wakeup while in power save. Upon the call of this
4573 API the WLAN DAL will pack and send a HAL Wowl enter
4574 request message to the lower RIVA sub-system if DAL is
4575 in state STARTED.
4576
4577 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004579
4580 WDI_PostAssocReq must have been called.
4581
Jeff Johnsone7245742012-09-05 17:12:55 -07004582 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004584
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 wdiWowlEnterReqCb: callback for passing back the
4586 response of the enter Wowl operation received from the
4587 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004588
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004590 callback
4591
Jeff Johnson295189b2012-06-20 16:38:30 -07004592 @see WDI_PostAssocReq
4593 @return Result of the function call
4594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004596WDI_WowlEnterReq
4597(
4598 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4599 WDI_WowlEnterReqCb wdiWowlEnterCb,
4600 void* pUserData
4601)
4602{
4603 WDI_EventInfoType wdiEventData;
4604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4605
4606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 ------------------------------------------------------------------------*/
4609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4610 {
4611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4612 "WDI API call before module is initialized - Fail request");
4613
Jeff Johnsone7245742012-09-05 17:12:55 -07004614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 }
4616
4617 /*------------------------------------------------------------------------
4618 Fill in Event data and post to the Main FSM
4619 ------------------------------------------------------------------------*/
4620 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004622 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004623 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 wdiEventData.pUserData = pUserData;
4625
4626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4627}/*WDI_WowlEnterReq*/
4628
4629/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 wants to exit the Wowl state. Upon the call of this API
4632 the WLAN DAL will pack and send a HAL Wowl exit request
4633 message to the lower RIVA sub-system if DAL is in state
4634 STARTED.
4635
4636 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004638
4639 WDI_WowlEnterReq must have been called.
4640
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004643
Jeff Johnson295189b2012-06-20 16:38:30 -07004644 wdiWowlExitReqCb: callback for passing back the response
4645 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004646
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004648 callback
4649
Jeff Johnson295189b2012-06-20 16:38:30 -07004650 @see WDI_WowlEnterReq
4651 @return Result of the function call
4652*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004653WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004654WDI_WowlExitReq
4655(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004656 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 WDI_WowlExitReqCb wdiWowlExitCb,
4658 void* pUserData
4659)
4660{
4661 WDI_EventInfoType wdiEventData;
4662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4663
4664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 ------------------------------------------------------------------------*/
4667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4668 {
4669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4670 "WDI API call before module is initialized - Fail request");
4671
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 }
4674
4675 /*------------------------------------------------------------------------
4676 Fill in Event data and post to the Main FSM
4677 ------------------------------------------------------------------------*/
4678 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004679 wdiEventData.pEventData = pwdiWowlExitParams;
4680 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004681 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 wdiEventData.pUserData = pUserData;
4683
4684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4685}/*WDI_WowlExitReq*/
4686
4687/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004688 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004689 the upper MAC wants to dynamically adjusts the listen
4690 interval based on the WLAN/MSM activity. Upon the call
4691 of this API the WLAN DAL will pack and send a HAL
4692 configure Apps Cpu Wakeup State request message to the
4693 lower RIVA sub-system.
4694
4695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004697
Jeff Johnsone7245742012-09-05 17:12:55 -07004698
4699 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 Apps Cpu Wakeup State as specified by the
4701 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4704 back the response of the configure Apps Cpu Wakeup State
4705 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004706
Jeff Johnson295189b2012-06-20 16:38:30 -07004707 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004708 callback
4709
Jeff Johnson295189b2012-06-20 16:38:30 -07004710 @return Result of the function call
4711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004713WDI_ConfigureAppsCpuWakeupStateReq
4714(
4715 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4716 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4717 void* pUserData
4718)
4719{
4720 WDI_EventInfoType wdiEventData;
4721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4722
4723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 ------------------------------------------------------------------------*/
4726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4727 {
4728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4729 "WDI API call before module is initialized - Fail request");
4730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 }
4733
4734 /*------------------------------------------------------------------------
4735 Fill in Event data and post to the Main FSM
4736 ------------------------------------------------------------------------*/
4737 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4739 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4740 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 wdiEventData.pUserData = pUserData;
4742
4743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4744}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004747 to to perform a flush operation on a given AC. Upon the
4748 call of this API the WLAN DAL will pack and send a HAL
4749 Flush AC request message to the lower RIVA sub-system if
4750 DAL is in state STARTED.
4751
4752 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004754
4755 WDI_AddBAReq must have been called.
4756
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004759
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 wdiFlushAcRspCb: callback for passing back the response
4761 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004762
Jeff Johnson295189b2012-06-20 16:38:30 -07004763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 callback
4765
Jeff Johnson295189b2012-06-20 16:38:30 -07004766 @see WDI_AddBAReq
4767 @return Result of the function call
4768*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004769WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004770WDI_FlushAcReq
4771(
4772 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4773 WDI_FlushAcRspCb wdiFlushAcRspCb,
4774 void* pUserData
4775)
4776{
4777 WDI_EventInfoType wdiEventData;
4778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4779
4780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004781 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004782 ------------------------------------------------------------------------*/
4783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4784 {
4785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4786 "WDI API call before module is initialized - Fail request");
4787
Jeff Johnsone7245742012-09-05 17:12:55 -07004788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 }
4790
4791 /*------------------------------------------------------------------------
4792 Fill in Event data and post to the Main FSM
4793 ------------------------------------------------------------------------*/
4794 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 wdiEventData.pEventData = pwdiFlushAcReqParams;
4796 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4797 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 wdiEventData.pUserData = pUserData;
4799
4800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4801
4802}/*WDI_FlushAcReq*/
4803
4804/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004805 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 wants to notify the lower mac on a BT AMP event. This is
4807 to inform BTC-SLM that some BT AMP event occurred. Upon
4808 the call of this API the WLAN DAL will pack and send a
4809 HAL BT AMP event request message to the lower RIVA
4810 sub-system if DAL is in state STARTED.
4811
4812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004814
Jeff Johnsone7245742012-09-05 17:12:55 -07004815
4816 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004818
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 wdiBtAmpEventRspCb: callback for passing back the
4820 response of the BT AMP event operation received from the
4821 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004822
Jeff Johnson295189b2012-06-20 16:38:30 -07004823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 callback
4825
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 @return Result of the function call
4827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004829WDI_BtAmpEventReq
4830(
4831 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4832 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4833 void* pUserData
4834)
4835{
4836 WDI_EventInfoType wdiEventData;
4837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4838
4839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 ------------------------------------------------------------------------*/
4842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4843 {
4844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4845 "WDI API call before module is initialized - Fail request");
4846
Jeff Johnsone7245742012-09-05 17:12:55 -07004847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 }
4849
4850 /*------------------------------------------------------------------------
4851 Fill in Event data and post to the Main FSM
4852 ------------------------------------------------------------------------*/
4853 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004854 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4855 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4856 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004857 wdiEventData.pUserData = pUserData;
4858
4859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4860
4861}/*WDI_BtAmpEventReq*/
4862
Jeff Johnsone7245742012-09-05 17:12:55 -07004863#ifdef FEATURE_OEM_DATA_SUPPORT
4864/**
4865 @brief WDI_Start Oem Data Req will be called when the upper MAC
4866 wants to notify the lower mac on a oem data Req event.Upon
4867 the call of this API the WLAN DAL will pack and send a
4868 HAL OEM Data Req event request message to the lower RIVA
4869 sub-system if DAL is in state STARTED.
4870
4871 In state BUSY this request will be queued. Request won't
4872 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004873
4874
Jeff Johnsone7245742012-09-05 17:12:55 -07004875
4876 @param pwdiOemDataReqParams: the Oem Data Req as
4877 specified by the Device Interface
4878
4879 wdiStartOemDataRspCb: callback for passing back the
4880 response of the Oem Data Req received from the
4881 device
4882
4883 pUserData: user data will be passed back with the
4884 callback
4885
4886 @return Result of the function call
4887*/
4888WDI_Status
4889WDI_StartOemDataReq
4890(
4891 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4892 WDI_oemDataRspCb wdiOemDataRspCb,
4893 void* pUserData
4894)
4895{
4896 WDI_EventInfoType wdiEventData;
4897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4898
4899 /*------------------------------------------------------------------------
4900 Sanity Check
4901 ------------------------------------------------------------------------*/
4902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4903 {
4904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4905 "WDI API call before module is initialized - Fail request");
4906
4907 return WDI_STATUS_E_NOT_ALLOWED;
4908 }
4909
4910 /*------------------------------------------------------------------------
4911 Fill in Event data and post to the Main FSM
4912 ------------------------------------------------------------------------*/
4913 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4914 wdiEventData.pEventData = pwdiOemDataReqParams;
4915 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4916 wdiEventData.pCBfnc = wdiOemDataRspCb;
4917 wdiEventData.pUserData = pUserData;
4918
4919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4920
4921
4922}
4923
4924#endif
4925
4926
4927/*========================================================================
4928
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004930
Jeff Johnson295189b2012-06-20 16:38:30 -07004931==========================================================================*/
4932/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004933 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004934 the WLAN HW to change the current channel of operation.
4935 Upon the call of this API the WLAN DAL will pack and
4936 send a HAL Start request message to the lower RIVA
4937 sub-system if DAL is in state STARTED.
4938
4939 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004940 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004941
4942 WDI_Start must have been called.
4943
Jeff Johnsone7245742012-09-05 17:12:55 -07004944 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004946
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 wdiSwitchChRspCb: callback for passing back the response
4948 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004949
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004951 callback
4952
Jeff Johnson295189b2012-06-20 16:38:30 -07004953 @see WDI_Start
4954 @return Result of the function call
4955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004957WDI_SwitchChReq
4958(
4959 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4960 WDI_SwitchChRspCb wdiSwitchChRspCb,
4961 void* pUserData
4962)
4963{
4964 WDI_EventInfoType wdiEventData;
4965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4966
4967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 ------------------------------------------------------------------------*/
4970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4971 {
4972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4973 "WDI API call before module is initialized - Fail request");
4974
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 }
4977
4978 /*------------------------------------------------------------------------
4979 Fill in Event data and post to the Main FSM
4980 ------------------------------------------------------------------------*/
4981 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 wdiEventData.pEventData = pwdiSwitchChReqParams;
4983 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4984 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 wdiEventData.pUserData = pUserData;
4986
4987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4988
4989}/*WDI_SwitchChReq*/
4990
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08004991/**
4992 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
4993 the WLAN HW to change the current channel of operation.
4994 Upon the call of this API the WLAN DAL will pack and
4995 send a HAL Start request message to the lower RIVA
4996 sub-system if DAL is in state STARTED.
4997 This request message also includes source of channel switch,
4998 like CSA,
4999
5000 In state BUSY this request will be queued. Request won't
5001 be allowed in any other state.
5002
5003 WDI_Start must have been called.
5004
5005 @param wdiSwitchChReqParams: the switch ch parameters as
5006 specified by the Device Interface
5007
5008 wdiSwitchChRspCb: callback for passing back the response
5009 of the switch ch operation received from the device
5010
5011 pUserData: user data will be passed back with the
5012 callback
5013
5014 @see WDI_Start
5015 @return Result of the function call
5016*/
5017WDI_Status
5018WDI_SwitchChReq_V1
5019(
5020 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5021 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5022 void* pUserData
5023)
5024{
5025 WDI_EventInfoType wdiEventData;
5026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5028 "WDI API call WDI_SwitchChReq_V1");
5029 /*------------------------------------------------------------------------
5030 Sanity Check
5031 ------------------------------------------------------------------------*/
5032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5033 {
5034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5035 "WDI API call before module is initialized - Fail request");
5036
5037 return WDI_STATUS_E_NOT_ALLOWED;
5038 }
5039
5040 /*------------------------------------------------------------------------
5041 Fill in Event data and post to the Main FSM
5042 ------------------------------------------------------------------------*/
5043 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5044 wdiEventData.pEventData = pwdiSwitchChReqParams;
5045 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5046 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5047 wdiEventData.pUserData = pUserData;
5048
5049 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5050
5051}/*WDI_SwitchChReq_V1*/
5052
Jeff Johnson295189b2012-06-20 16:38:30 -07005053
5054/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005055 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 wishes to add or update a STA in HW. Upon the call of
5057 this API the WLAN DAL will pack and send a HAL Start
5058 message request message to the lower RIVA sub-system if
5059 DAL is in state STARTED.
5060
5061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005063
5064 WDI_Start must have been called.
5065
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005067 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005068
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 wdiConfigSTARspCb: callback for passing back the
5070 response of the config STA operation received from the
5071 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005072
Jeff Johnson295189b2012-06-20 16:38:30 -07005073 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 callback
5075
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 @see WDI_Start
5077 @return Result of the function call
5078*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005079WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005080WDI_ConfigSTAReq
5081(
5082 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5083 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5084 void* pUserData
5085)
5086{
5087 WDI_EventInfoType wdiEventData;
5088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5089
5090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 ------------------------------------------------------------------------*/
5093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5094 {
5095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5096 "WDI API call before module is initialized - Fail request");
5097
Jeff Johnsone7245742012-09-05 17:12:55 -07005098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 }
5100
5101 /*------------------------------------------------------------------------
5102 Fill in Event data and post to the Main FSM
5103 ------------------------------------------------------------------------*/
5104 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005105 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5106 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5107 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 wdiEventData.pUserData = pUserData;
5109
5110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5111
5112}/*WDI_ConfigSTAReq*/
5113
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005114 /**
5115 @brief WDI_UpdateChannelReq will be called when the upper MAC
5116 wants to update the channel list on change in country code.
5117
5118 In state BUSY this request will be queued. Request won't
5119 be allowed in any other state.
5120
5121 WDI_UpdateChannelReq must have been called.
5122
5123 @param wdiUpdateChannelReqParams: the updated channel parameters
5124 as specified by the Device Interface
5125
5126 wdiUpdateChannelRspCb: callback for passing back the
5127 response of the update channel operation received from
5128 the device
5129
5130 pUserData: user data will be passed back with the
5131 callback
5132
5133 @return Result of the function call
5134*/
5135WDI_Status
5136WDI_UpdateChannelReq
5137(
5138 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5139 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5140 void* pUserData
5141)
5142{
5143 WDI_EventInfoType wdiEventData = {{0}};
5144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5145
5146 /*------------------------------------------------------------------------
5147 Sanity Check
5148 ------------------------------------------------------------------------*/
5149 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5150 {
5151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5152 "WDI API call before module is initialized - Fail request");
5153
5154 return WDI_STATUS_E_NOT_ALLOWED;
5155 }
5156
5157 /*------------------------------------------------------------------------
5158 Fill in Event data and post to the Main FSM
5159 ------------------------------------------------------------------------*/
5160 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5161 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5162 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5163 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5164 wdiEventData.pUserData = pUserData;
5165
5166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5167
5168}/*WDI_UpdateChannelReq*/
5169
Jeff Johnson295189b2012-06-20 16:38:30 -07005170/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005171 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wants to change the state of an ongoing link. Upon the
5173 call of this API the WLAN DAL will pack and send a HAL
5174 Start message request message to the lower RIVA
5175 sub-system if DAL is in state STARTED.
5176
5177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005179
5180 WDI_JoinStartReq must have been called.
5181
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005184
Jeff Johnson295189b2012-06-20 16:38:30 -07005185 wdiSetLinkStateRspCb: callback for passing back the
5186 response of the set link state operation received from
5187 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005188
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005190 callback
5191
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 @see WDI_JoinStartReq
5193 @return Result of the function call
5194*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005196WDI_SetLinkStateReq
5197(
5198 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5199 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5200 void* pUserData
5201)
5202{
5203 WDI_EventInfoType wdiEventData;
5204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5205
5206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 ------------------------------------------------------------------------*/
5209 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5210 {
5211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5212 "WDI API call before module is initialized - Fail request");
5213
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 }
5216
5217 /*------------------------------------------------------------------------
5218 Fill in Event data and post to the Main FSM
5219 ------------------------------------------------------------------------*/
5220 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5222 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5223 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 wdiEventData.pUserData = pUserData;
5225
5226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5227
5228}/*WDI_SetLinkStateReq*/
5229
5230
5231/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 to get statistics (MIB counters) from the device. Upon
5234 the call of this API the WLAN DAL will pack and send a
5235 HAL Start request message to the lower RIVA sub-system
5236 if DAL is in state STARTED.
5237
5238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005240
5241 WDI_Start must have been called.
5242
Jeff Johnsone7245742012-09-05 17:12:55 -07005243 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005244 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005245
Jeff Johnson295189b2012-06-20 16:38:30 -07005246 wdiGetStatsRspCb: callback for passing back the response
5247 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005248
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 callback
5251
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 @see WDI_Start
5253 @return Result of the function call
5254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005256WDI_GetStatsReq
5257(
5258 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5259 WDI_GetStatsRspCb wdiGetStatsRspCb,
5260 void* pUserData
5261)
5262{
5263 WDI_EventInfoType wdiEventData;
5264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5265
5266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 ------------------------------------------------------------------------*/
5269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5270 {
5271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5272 "WDI API call before module is initialized - Fail request");
5273
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 }
5276
5277 /*------------------------------------------------------------------------
5278 Fill in Event data and post to the Main FSM
5279 ------------------------------------------------------------------------*/
5280 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 wdiEventData.pEventData = pwdiGetStatsReqParams;
5282 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5283 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 wdiEventData.pUserData = pUserData;
5285
5286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5287
5288}/*WDI_GetStatsReq*/
5289
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005290#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005291/**
5292 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5293 to get roam rssi from the device. Upon
5294 the call of this API the WLAN DAL will pack and send a
5295 HAL Start request message to the lower RIVA sub-system
5296 if DAL is in state STARTED.
5297
5298 In state BUSY this request will be queued. Request won't
5299 be allowed in any other state.
5300
5301 WDI_Start must have been called.
5302
5303 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5304 specified by the Device Interface
5305
5306 wdiGetRoamRssiRspCb: callback for passing back the response
5307 of the get stats operation received from the device
5308
5309 pUserData: user data will be passed back with the
5310 callback
5311
5312 @see WDI_Start
5313 @return Result of the function call
5314*/
5315WDI_Status
5316WDI_GetRoamRssiReq
5317(
5318 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5319 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5320 void* pUserData
5321)
5322{
5323 WDI_EventInfoType wdiEventData;
5324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5325
5326 /*------------------------------------------------------------------------
5327 Sanity Check
5328 ------------------------------------------------------------------------*/
5329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5330 {
5331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5332 "WDI API call before module is initialized - Fail request");
5333
5334 return WDI_STATUS_E_NOT_ALLOWED;
5335 }
5336 /*------------------------------------------------------------------------
5337 Fill in Event data and post to the Main FSM
5338 ------------------------------------------------------------------------*/
5339 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5340 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5341 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5342 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5343 wdiEventData.pUserData = pUserData;
5344
5345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5346
5347}/*WDI_GetRoamRssiReq*/
5348#endif
5349
Jeff Johnson295189b2012-06-20 16:38:30 -07005350
5351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 it wishes to change the configuration of the WLAN
5354 Device. Upon the call of this API the WLAN DAL will pack
5355 and send a HAL Update CFG request message to the lower
5356 RIVA sub-system if DAL is in state STARTED.
5357
5358 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005360
5361 WDI_Start must have been called.
5362
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005364 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005365
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 wdiUpdateCfgsRspCb: callback for passing back the
5367 response of the update cfg operation received from the
5368 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005369
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 callback
5372
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 @see WDI_Start
5374 @return Result of the function call
5375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005377WDI_UpdateCfgReq
5378(
5379 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5380 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5381 void* pUserData
5382)
5383{
5384 WDI_EventInfoType wdiEventData;
5385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5386
5387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005389 ------------------------------------------------------------------------*/
5390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5391 {
5392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5393 "WDI API call before module is initialized - Fail request");
5394
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 }
5397
5398 /*------------------------------------------------------------------------
5399 Fill in Event data and post to the Main FSM
5400 ------------------------------------------------------------------------*/
5401 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5403 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5404 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 wdiEventData.pUserData = pUserData;
5406
5407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5408
5409}/*WDI_UpdateCfgReq*/
5410
5411
5412
5413/**
5414 @brief WDI_AddBAReq will be called when the upper MAC has setup
5415 successfully a BA session and needs to notify the HW for
5416 the appropriate settings to take place. Upon the call of
5417 this API the WLAN DAL will pack and send a HAL Add BA
5418 request message to the lower RIVA sub-system if DAL is
5419 in state STARTED.
5420
5421 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005422 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005423
5424 WDI_PostAssocReq must have been called.
5425
5426 @param wdiAddBAReqParams: the add BA parameters as specified by
5427 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 wdiAddBARspCb: callback for passing back the response of
5430 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 callback
5434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 @see WDI_PostAssocReq
5436 @return Result of the function call
5437*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005438WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005439WDI_AddBAReq
5440(
5441 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5442 WDI_AddBARspCb wdiAddBARspCb,
5443 void* pUserData
5444)
5445{
5446 WDI_EventInfoType wdiEventData;
5447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5448
5449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 ------------------------------------------------------------------------*/
5452 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5453 {
5454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5455 "WDI API call before module is initialized - Fail request");
5456
Jeff Johnsone7245742012-09-05 17:12:55 -07005457 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 }
5459
5460 /*------------------------------------------------------------------------
5461 Fill in Event data and post to the Main FSM
5462 ------------------------------------------------------------------------*/
5463 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 wdiEventData.pEventData = pwdiAddBAReqParams;
5465 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5466 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005467 wdiEventData.pUserData = pUserData;
5468
5469 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5470
5471}/*WDI_AddBAReq*/
5472
5473
5474/**
5475 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5476 successfully a BA session and needs to notify the HW for
5477 the appropriate settings to take place. Upon the call of
5478 this API the WLAN DAL will pack and send a HAL Add BA
5479 request message to the lower RIVA sub-system if DAL is
5480 in state STARTED.
5481
5482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005484
5485 WDI_PostAssocReq must have been called.
5486
5487 @param wdiAddBAReqParams: the add BA parameters as specified by
5488 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005489
Jeff Johnson295189b2012-06-20 16:38:30 -07005490 wdiAddBARspCb: callback for passing back the response of
5491 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005492
Jeff Johnson295189b2012-06-20 16:38:30 -07005493 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 callback
5495
Jeff Johnson295189b2012-06-20 16:38:30 -07005496 @see WDI_PostAssocReq
5497 @return Result of the function call
5498*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005500WDI_TriggerBAReq
5501(
5502 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5503 WDI_TriggerBARspCb wdiTriggerBARspCb,
5504 void* pUserData
5505)
5506{
5507 WDI_EventInfoType wdiEventData;
5508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5509
5510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005512 ------------------------------------------------------------------------*/
5513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5514 {
5515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5516 "WDI API call before module is initialized - Fail request");
5517
Jeff Johnsone7245742012-09-05 17:12:55 -07005518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005519 }
5520
5521 /*------------------------------------------------------------------------
5522 Fill in Event data and post to the Main FSM
5523 ------------------------------------------------------------------------*/
5524 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5526 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5527 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 wdiEventData.pUserData = pUserData;
5529
5530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5531
5532}/*WDI_AddBAReq*/
5533
5534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 wishes to update any of the Beacon parameters used by HW.
5537 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5538 message to the lower RIVA sub-system if DAL is in state
5539 STARTED.
5540
5541 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005543
5544 WDI_PostAssocReq must have been called.
5545
Jeff Johnsone7245742012-09-05 17:12:55 -07005546 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005548
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 wdiUpdateBeaconParamsRspCb: callback for passing back the
5550 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005551
Jeff Johnson295189b2012-06-20 16:38:30 -07005552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005553 callback
5554
Jeff Johnson295189b2012-06-20 16:38:30 -07005555 @see WDI_PostAssocReq
5556 @return Result of the function call
5557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005559WDI_UpdateBeaconParamsReq
5560(
5561 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5562 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5563 void* pUserData
5564)
5565{
5566 WDI_EventInfoType wdiEventData;
5567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5568
5569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 ------------------------------------------------------------------------*/
5572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5573 {
5574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5575 "WDI API call before module is initialized - Fail request");
5576
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005578 }
5579
5580 /*------------------------------------------------------------------------
5581 Fill in Event data and post to the Main FSM
5582 ------------------------------------------------------------------------*/
5583 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5585 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5586 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 wdiEventData.pUserData = pUserData;
5588
5589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5590
5591}/*WDI_UpdateBeaconParamsReq*/
5592
5593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 wishes to update the Beacon template used by HW.
5596 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5597 message to the lower RIVA sub-system if DAL is in state
5598 STARTED.
5599
5600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005602
5603 WDI_PostAssocReq must have been called.
5604
Jeff Johnsone7245742012-09-05 17:12:55 -07005605 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005607
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 wdiSendBeaconParamsRspCb: callback for passing back the
5609 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005610
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 callback
5613
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 @see WDI_PostAssocReq
5615 @return Result of the function call
5616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005618WDI_SendBeaconParamsReq
5619(
5620 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5621 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5622 void* pUserData
5623)
5624{
5625 WDI_EventInfoType wdiEventData;
5626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5627
5628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 ------------------------------------------------------------------------*/
5631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5632 {
5633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5634 "WDI API call before module is initialized - Fail request");
5635
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 }
5638
5639 /*------------------------------------------------------------------------
5640 Fill in Event data and post to the Main FSM
5641 ------------------------------------------------------------------------*/
5642 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 wdiEventData.pEventData = pwdiSendBeaconParams;
5644 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5645 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005646 wdiEventData.pUserData = pUserData;
5647
5648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5649
5650}/*WDI_SendBeaconParamsReq*/
5651
5652/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005653 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005654 upper MAC wants to update the probe response template to
5655 be transmitted as Soft AP
5656 Upon the call of this API the WLAN DAL will
5657 pack and send the probe rsp template message to the
5658 lower RIVA sub-system if DAL is in state STARTED.
5659
5660 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005662
5663
Jeff Johnsone7245742012-09-05 17:12:55 -07005664 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005665 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005666
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 wdiSendBeaconParamsRspCb: callback for passing back the
5668 response of the Send Beacon Params operation received
5669 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005670
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005672 callback
5673
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 @see WDI_AddBAReq
5675 @return Result of the function call
5676*/
5677
Jeff Johnsone7245742012-09-05 17:12:55 -07005678WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005679WDI_UpdateProbeRspTemplateReq
5680(
5681 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5682 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5683 void* pUserData
5684)
5685{
5686 WDI_EventInfoType wdiEventData;
5687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5688
5689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 ------------------------------------------------------------------------*/
5692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5693 {
5694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5695 "WDI API call before module is initialized - Fail request");
5696
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 }
5699
5700 /*------------------------------------------------------------------------
5701 Fill in Event data and post to the Main FSM
5702 ------------------------------------------------------------------------*/
5703 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005704 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5705 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5706 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 wdiEventData.pUserData = pUserData;
5708
5709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5710
5711}/*WDI_UpdateProbeRspTemplateReq*/
5712
5713/**
5714 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5715 to the NV memory.
5716
5717
5718 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5719 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 wdiNvDownloadRspCb: callback for passing back the response of
5722 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005725 callback
5726
Jeff Johnson295189b2012-06-20 16:38:30 -07005727 @see WDI_PostAssocReq
5728 @return Result of the function call
5729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005731WDI_NvDownloadReq
5732(
5733 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5734 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5735 void* pUserData
5736)
5737{
5738 WDI_EventInfoType wdiEventData;
5739
5740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 ------------------------------------------------------------------------*/
5743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5744 {
5745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5746 "WDI API call before module is initialized - Fail request");
5747
Jeff Johnsone7245742012-09-05 17:12:55 -07005748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 }
5750
5751 /*------------------------------------------------------------------------
5752 Fill in Event data and post to the Main FSM
5753 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005754 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5755 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5756 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5757 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 wdiEventData.pUserData = pUserData;
5759
5760 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5761
5762}/*WDI_NVDownloadReq*/
5763
Jeff Johnson295189b2012-06-20 16:38:30 -07005764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005766 upper MAC wants to send Notice of Absence
5767 Upon the call of this API the WLAN DAL will
5768 pack and send the probe rsp template message to the
5769 lower RIVA sub-system if DAL is in state STARTED.
5770
5771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005773
5774
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005776 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005777
Jeff Johnson295189b2012-06-20 16:38:30 -07005778 wdiSendBeaconParamsRspCb: callback for passing back the
5779 response of the Send Beacon Params operation received
5780 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 callback
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see WDI_AddBAReq
5786 @return Result of the function call
5787*/
5788WDI_Status
5789WDI_SetP2PGONOAReq
5790(
5791 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5792 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5793 void* pUserData
5794)
5795{
5796 WDI_EventInfoType wdiEventData;
5797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5798
5799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005801 ------------------------------------------------------------------------*/
5802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5803 {
5804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5805 "WDI API call before module is initialized - Fail request");
5806
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 }
5809
5810 /*------------------------------------------------------------------------
5811 Fill in Event data and post to the Main FSM
5812 ------------------------------------------------------------------------*/
5813 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5815 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5816 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 wdiEventData.pUserData = pUserData;
5818
5819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5820
5821}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005822
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305823#ifdef FEATURE_WLAN_TDLS
5824/**
5825 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5826 upper MAC wants to send TDLS Link Establish Request Parameters
5827 Upon the call of this API the WLAN DAL will
5828 pack and send the TDLS Link Establish Request message to the
5829 lower RIVA sub-system if DAL is in state STARTED.
5830
5831 In state BUSY this request will be queued. Request won't
5832 be allowed in any other state.
5833
5834
5835 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5836 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5837
5838 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5839 response of the TDLS Link Establish request received
5840 from the device
5841
5842 pUserData: user data will be passed back with the
5843 callback
5844
5845 @see
5846 @return Result of the function call
5847*/
5848WDI_Status
5849WDI_SetTDLSLinkEstablishReq
5850(
5851 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5852 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5853 void* pUserData
5854)
5855{
5856 WDI_EventInfoType wdiEventData;
5857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5858
5859 /*------------------------------------------------------------------------
5860 Sanity Check
5861 ------------------------------------------------------------------------*/
5862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5863 {
5864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5865 "WDI API call before module is initialized - Fail request");
5866
5867 return WDI_STATUS_E_NOT_ALLOWED;
5868 }
5869
5870 /*------------------------------------------------------------------------
5871 Fill in Event data and post to the Main FSM
5872 ------------------------------------------------------------------------*/
5873 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5874 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5875 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5876 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5877 wdiEventData.pUserData = pUserData;
5878
5879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5880
5881}/*WDI_SetTDLSLinkEstablishReq*/
5882#endif
5883
Jeff Johnson295189b2012-06-20 16:38:30 -07005884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 UMAC wanted to add STA self while opening any new session
5887 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005889
5890
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005893
Jeff Johnson295189b2012-06-20 16:38:30 -07005894 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 callback
5896
5897 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 @return Result of the function call
5899*/
5900WDI_Status
5901WDI_AddSTASelfReq
5902(
5903 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5904 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5905 void* pUserData
5906)
5907{
5908 WDI_EventInfoType wdiEventData;
5909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5910
5911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 ------------------------------------------------------------------------*/
5914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5915 {
5916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5917 "WDI API call before module is initialized - Fail request");
5918
Jeff Johnsone7245742012-09-05 17:12:55 -07005919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005920 }
5921
5922 /*------------------------------------------------------------------------
5923 Fill in Event data and post to the Main FSM
5924 ------------------------------------------------------------------------*/
5925 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005926 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5927 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5928 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005929 wdiEventData.pUserData = pUserData;
5930
5931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5932
5933}/*WDI_AddSTASelfReq*/
5934
5935
Jeff Johnsone7245742012-09-05 17:12:55 -07005936#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005937/**
5938 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5939 the device of a successful add TSpec negotiation. HW
5940 needs to receive the TSpec Info from the UMAC in order
5941 to configure properly the QoS data traffic. Upon the
5942 call of this API the WLAN DAL will pack and send a HAL
5943 Add TS request message to the lower RIVA sub-system if
5944 DAL is in state STARTED.
5945
5946 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005947 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005948
5949 WDI_PostAssocReq must have been called.
5950
5951 @param wdiAddTsReqParams: the add TS parameters as specified by
5952 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005953
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 wdiAddTsRspCb: callback for passing back the response of
5955 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005956
Jeff Johnson295189b2012-06-20 16:38:30 -07005957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 callback
5959
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 @see WDI_PostAssocReq
5961 @return Result of the function call
5962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005964WDI_AggrAddTSReq
5965(
5966 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5967 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5968 void* pUserData
5969)
5970{
5971 WDI_EventInfoType wdiEventData;
5972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5973
5974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 ------------------------------------------------------------------------*/
5977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5978 {
5979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5980 "WDI API call before module is initialized - Fail request");
5981
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 }
5984
5985 /*------------------------------------------------------------------------
5986 Fill in Event data and post to the Main FSM
5987 ------------------------------------------------------------------------*/
5988 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5990 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5991 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 wdiEventData.pUserData = pUserData;
5993
5994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5995
5996}/*WDI_AggrAddTSReq*/
5997
5998#endif /* WLAN_FEATURE_VOWIFI_11R */
5999
Jeff Johnson295189b2012-06-20 16:38:30 -07006000/**
6001 @brief WDI_FTMCommandReq
6002 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006003
6004 @param ftmCommandReq: FTM Command Body
6005 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006006 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006007
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 @see
6009 @return Result of the function call
6010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006012WDI_FTMCommandReq
6013(
6014 WDI_FTMCommandReqType *ftmCommandReq,
6015 WDI_FTMCommandRspCb ftmCommandRspCb,
6016 void *pUserData
6017)
6018{
6019 WDI_EventInfoType wdiEventData;
6020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6021
6022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 ------------------------------------------------------------------------*/
6025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6026 {
6027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6028 "WDI API call before module is initialized - Fail request");
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 }
6032
6033 /*------------------------------------------------------------------------
6034 Fill in Event data and post to the Main FSM
6035 ------------------------------------------------------------------------*/
6036 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6037 wdiEventData.pEventData = (void *)ftmCommandReq;
6038 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6039 wdiEventData.pCBfnc = ftmCommandRspCb;
6040 wdiEventData.pUserData = pUserData;
6041
6042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6043}
Jeff Johnson295189b2012-06-20 16:38:30 -07006044/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006045 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006046
6047 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006048 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006049
6050
6051 @param pwdiResumeReqParams: as specified by
6052 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006053
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 wdiResumeReqRspCb: callback for passing back the response of
6055 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006056
Jeff Johnson295189b2012-06-20 16:38:30 -07006057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 callback
6059
6060 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006061 @return Result of the function call
6062*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006064WDI_HostResumeReq
6065(
6066 WDI_ResumeParamsType* pwdiResumeReqParams,
6067 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6068 void* pUserData
6069)
6070{
6071 WDI_EventInfoType wdiEventData;
6072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6073
6074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 ------------------------------------------------------------------------*/
6077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6078 {
6079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6080 "WDI API call before module is initialized - Fail request");
6081
Jeff Johnsone7245742012-09-05 17:12:55 -07006082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006083 }
6084
6085 /*------------------------------------------------------------------------
6086 Fill in Event data and post to the Main FSM
6087 ------------------------------------------------------------------------*/
6088 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 wdiEventData.pEventData = pwdiResumeReqParams;
6090 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6091 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 wdiEventData.pUserData = pUserData;
6093
6094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6095
6096}/*WDI_HostResumeReq*/
6097
6098/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006099 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006100
6101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006103
6104
6105 @param pwdiDelStaSelfReqParams: as specified by
6106 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006107
Jeff Johnson295189b2012-06-20 16:38:30 -07006108 wdiDelStaSelfRspCb: callback for passing back the response of
6109 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006110
Jeff Johnson295189b2012-06-20 16:38:30 -07006111 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006112 callback
6113
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 @see WDI_PostAssocReq
6115 @return Result of the function call
6116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006118WDI_DelSTASelfReq
6119(
6120 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6121 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6122 void* pUserData
6123)
6124{
6125 WDI_EventInfoType wdiEventData;
6126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6127
6128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006130 ------------------------------------------------------------------------*/
6131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6132 {
6133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6134 "WDI API call before module is initialized - Fail request");
6135
Jeff Johnsone7245742012-09-05 17:12:55 -07006136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006137 }
6138
6139 /*------------------------------------------------------------------------
6140 Fill in Event data and post to the Main FSM
6141 ------------------------------------------------------------------------*/
6142 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6144 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6145 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006146 wdiEventData.pUserData = pUserData;
6147
6148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6149
6150}/*WDI_AggrAddTSReq*/
6151
6152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006153 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6154 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006155 Upon the call of this API the WLAN DAL will pack
6156 and send a HAL Set Tx Per Tracking request message to the
6157 lower RIVA sub-system if DAL is in state STARTED.
6158
6159 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006160 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006161
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006163 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006164
Jeff Johnson295189b2012-06-20 16:38:30 -07006165 pwdiSetTxPerTrackingRspCb: callback for passing back the
6166 response of the set Tx PER Tracking configurations operation received
6167 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006168
Jeff Johnson295189b2012-06-20 16:38:30 -07006169 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 callback
6171
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 @return Result of the function call
6173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006175WDI_SetTxPerTrackingReq
6176(
6177 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6178 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6179 void* pUserData
6180)
6181{
6182 WDI_EventInfoType wdiEventData;
6183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6184
6185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 ------------------------------------------------------------------------*/
6188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6189 {
6190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6191 "WDI API call before module is initialized - Fail request");
6192
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 }
6195
6196 /*------------------------------------------------------------------------
6197 Fill in Event data and post to the Main FSM
6198 ------------------------------------------------------------------------*/
6199 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006202 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006203 wdiEventData.pUserData = pUserData;
6204
6205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6206
6207}/*WDI_SetTxPerTrackingReq*/
6208
6209/**
6210 @brief WDI_SetTmLevelReq
6211 If HW Thermal condition changed, driver should react based on new
6212 HW thermal condition.
6213
6214 @param pwdiSetTmLevelReq: New thermal condition information
6215
6216 pwdiSetTmLevelRspCb: callback
6217
6218 usrData: user data will be passed back with the
6219 callback
6220
6221 @return Result of the function call
6222*/
6223WDI_Status
6224WDI_SetTmLevelReq
6225(
6226 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6227 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6228 void *usrData
6229)
6230{
6231 WDI_EventInfoType wdiEventData;
6232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6233
6234 /*------------------------------------------------------------------------
6235 Sanity Check
6236 ------------------------------------------------------------------------*/
6237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6238 {
6239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6240 "WDI API call before module is initialized - Fail request");
6241
6242 return WDI_STATUS_E_NOT_ALLOWED;
6243 }
6244
6245 /*------------------------------------------------------------------------
6246 Fill in Event data and post to the Main FSM
6247 ------------------------------------------------------------------------*/
6248 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6249 wdiEventData.pEventData = pwdiSetTmLevelReq;
6250 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6251 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6252 wdiEventData.pUserData = usrData;
6253
6254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6255}
6256
6257/**
6258 @brief WDI_HostSuspendInd
6259
6260 Suspend Indication from the upper layer will be sent
6261 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006262
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006264
6265 @see
6266
Jeff Johnson295189b2012-06-20 16:38:30 -07006267 @return Status of the request
6268*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006269WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006270WDI_HostSuspendInd
6271(
6272 WDI_SuspendParamsType* pwdiSuspendIndParams
6273)
6274{
6275
6276 WDI_EventInfoType wdiEventData;
6277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6278
6279 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 ------------------------------------------------------------------------*/
6282 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6283 {
6284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6285 "WDI API call before module is initialized - Fail request");
6286
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 }
6289
6290 /*------------------------------------------------------------------------
6291 Fill in Event data and post to the Main FSM
6292 ------------------------------------------------------------------------*/
6293 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006294 wdiEventData.pEventData = pwdiSuspendIndParams;
6295 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6296 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006297 wdiEventData.pUserData = NULL;
6298
6299 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6300
6301}/*WDI_HostSuspendInd*/
6302
6303/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006304 @brief WDI_TrafficStatsInd
6305 Traffic Stats from the upper layer will be sent
6306 down to HAL
6307
6308 @param WDI_TrafficStatsIndType
6309
6310 @see
6311
6312 @return Status of the request
6313*/
6314WDI_Status
6315WDI_TrafficStatsInd
6316(
6317 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6318)
6319{
6320
6321 WDI_EventInfoType wdiEventData;
6322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6323
6324 /*------------------------------------------------------------------------
6325 Sanity Check
6326 ------------------------------------------------------------------------*/
6327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request");
6331
6332 return WDI_STATUS_E_NOT_ALLOWED;
6333 }
6334
6335 /*------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6339 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6340 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6341 wdiEventData.pCBfnc = NULL;
6342 wdiEventData.pUserData = NULL;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345
6346}/*WDI_TrafficStatsInd*/
6347
Chet Lanctot186b5732013-03-18 10:26:30 -07006348#ifdef WLAN_FEATURE_11W
6349/**
6350 @brief WDI_ExcludeUnencryptedInd
6351 Register with HAL to receive/drop unencrypted frames
6352
6353 @param WDI_ExcludeUnencryptIndType
6354
6355 @see
6356
6357 @return Status of the request
6358*/
6359WDI_Status
6360WDI_ExcludeUnencryptedInd
6361(
6362 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6363)
6364{
6365
6366 WDI_EventInfoType wdiEventData;
6367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6368
6369 /*------------------------------------------------------------------------
6370 Sanity Check
6371 ------------------------------------------------------------------------*/
6372 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6373 {
6374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6375 "WDI API call before module is initialized - Fail request");
6376
6377 return WDI_STATUS_E_NOT_ALLOWED;
6378 }
6379
6380 /*------------------------------------------------------------------------
6381 Fill in Event data and post to the Main FSM
6382 ------------------------------------------------------------------------*/
6383 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6384 wdiEventData.pEventData = pWdiExcUnencParams;
6385 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6386 wdiEventData.pCBfnc = NULL;
6387 wdiEventData.pUserData = NULL;
6388
6389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6390
6391}/*WDI_TrafficStatsInd*/
6392#endif
6393
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006394/**
Yue Mab9c86f42013-08-14 15:59:08 -07006395 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6396
6397 @param addPeriodicTxPtrnParams: Add Pattern parameters
6398
6399 @see
6400
6401 @return Status of the request
6402*/
6403WDI_Status
6404WDI_AddPeriodicTxPtrnInd
6405(
6406 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6407)
6408{
6409 WDI_EventInfoType wdiEventData;
6410
6411 /*-------------------------------------------------------------------------
6412 Sanity Check
6413 ------------------------------------------------------------------------*/
6414 if (eWLAN_PAL_FALSE == gWDIInitialized)
6415 {
6416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6417 "WDI API call before module is initialized - Fail request!");
6418
6419 return WDI_STATUS_E_NOT_ALLOWED;
6420 }
6421
6422 /*-------------------------------------------------------------------------
6423 Fill in Event data and post to the Main FSM
6424 ------------------------------------------------------------------------*/
6425 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6426 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6427 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6428 wdiEventData.pCBfnc = NULL;
6429 wdiEventData.pUserData = NULL;
6430
6431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6432}
6433
6434/**
6435 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6436
6437 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6438
6439 @see
6440
6441 @return Status of the request
6442*/
6443WDI_Status
6444WDI_DelPeriodicTxPtrnInd
6445(
6446 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6447)
6448{
6449 WDI_EventInfoType wdiEventData;
6450
6451 /*-------------------------------------------------------------------------
6452 Sanity Check
6453 ------------------------------------------------------------------------*/
6454 if (eWLAN_PAL_FALSE == gWDIInitialized)
6455 {
6456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6457 "WDI API call before module is initialized - Fail request!");
6458
6459 return WDI_STATUS_E_NOT_ALLOWED;
6460 }
6461
6462 /*-------------------------------------------------------------------------
6463 Fill in Event data and post to the Main FSM
6464 ------------------------------------------------------------------------*/
6465 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6466 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6467 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6468 wdiEventData.pCBfnc = NULL;
6469 wdiEventData.pUserData = NULL;
6470
6471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6472}
6473
6474/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 @brief WDI_HALDumpCmdReq
6476 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006477
6478 @param halDumpCmdReqParams: Hal Dump Command Body
6479 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006481
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 @see
6483 @return Result of the function call
6484*/
6485WDI_Status WDI_HALDumpCmdReq
6486(
6487 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6488 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6489 void *pUserData
6490)
6491{
6492 WDI_EventInfoType wdiEventData;
6493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6494
6495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006497 ------------------------------------------------------------------------*/
6498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6499 {
6500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6501 "WDI API call before module is initialized - Fail request");
6502
Jeff Johnsone7245742012-09-05 17:12:55 -07006503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006504 }
6505
6506 /*------------------------------------------------------------------------
6507 Fill in Event data and post to the Main FSM
6508 ------------------------------------------------------------------------*/
6509 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6510 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6511 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6512 wdiEventData.pCBfnc = halDumpCmdRspCb;
6513 wdiEventData.pUserData = pUserData;
6514
6515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6516}
6517
Jeff Johnsone7245742012-09-05 17:12:55 -07006518/*============================================================================
6519
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006521
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 ============================================================================*/
6523
6524/**
6525 @brief Main FSM Start function for all states except BUSY
6526
Jeff Johnsone7245742012-09-05 17:12:55 -07006527
6528 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 wdiEV: event posted to the main DAL FSM
6530 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006531 structure
6532
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 @see
6534 @return Result of the function call
6535*/
6536WDI_Status
6537WDI_PostMainEvent
6538(
Jeff Johnsone7245742012-09-05 17:12:55 -07006539 WDI_ControlBlockType* pWDICtx,
6540 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006542)
6543{
Jeff Johnsone7245742012-09-05 17:12:55 -07006544 WDI_Status wdiStatus;
6545 WDI_MainFuncType pfnWDIMainEvHdlr;
6546 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6548
6549 /*-------------------------------------------------------------------------
6550 Sanity check
6551 -------------------------------------------------------------------------*/
6552 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6553 ( wdiEV >= WDI_MAX_EVENT ))
6554 {
6555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6556 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6557 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006559 }
6560
6561 /*Access to the global state must be locked */
6562 wpalMutexAcquire(&pWDICtx->wptMutex);
6563
6564 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006565 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006566
6567 wdiOldState = pWDICtx->uGlobalState;
6568
6569 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006570 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6571 response comes from CCPU for the request sent by host:
6572 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 -07006573 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 -07006574 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 CCPU:
6576 don't change the state */
6577 if ( WDI_RESPONSE_EVENT != wdiEV)
6578 {
6579 /*Transition to BUSY State - the request is now being processed by the FSM,
6580 if the request fails we shall transition back to the old state, if not
6581 the request will manage its own state transition*/
6582 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6583 }
6584 /* If the state function associated with the EV is NULL it means that this
6585 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006586 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 {
6588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006589 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006590 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006591 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006592 }
6593 else
6594 {
6595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006598 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 }
6600
6601 /* If a request handles itself well it will end up in a success or in a
6602 pending
6603 Success - means that the request was processed and the proper state
6604 transition already occurred or will occur when the resp is received
6605 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006606
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 Pending - means the request could not be processed at this moment in time
6608 because the FSM was already busy so no state transition or dequeueing
6609 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006610
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 Success for synchronous case means that the transition may occur and
6612 processing of pending requests may continue - so it should go through
6613 and restores the state and continue processing queued requests*/
6614 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6615 ( WDI_STATUS_PENDING != wdiStatus ))
6616 {
6617 if ( WDI_RESPONSE_EVENT != wdiEV)
6618 {
6619 /*The request has failed or could not be processed - transition back to
6620 the old state - check to see if anything was queued and try to execute
6621 The dequeue logic should post a message to a thread and return - no
6622 actual processing can occur */
6623 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6624 }
6625 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006626
Jeff Johnson295189b2012-06-20 16:38:30 -07006627 }
6628
6629 /* we have completed processing the event */
6630 wpalMutexRelease(&pWDICtx->wptMutex);
6631
Jeff Johnsone7245742012-09-05 17:12:55 -07006632 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006633
6634}/*WDI_PostMainEvent*/
6635
6636
6637/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006638 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006639--------------------------------------------------------------------------*/
6640/**
6641 @brief Main FSM Start function for all states except BUSY
6642
Jeff Johnsone7245742012-09-05 17:12:55 -07006643
6644 @param pWDICtx: pointer to the WLAN DAL context
6645 pEventData: pointer to the event information structure
6646
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 @see
6648 @return Result of the function call
6649*/
6650WDI_Status
6651WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006652(
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 WDI_ControlBlockType* pWDICtx,
6654 WDI_EventInfoType* pEventData
6655)
6656{
6657
6658 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 ----------------------------------------------------------------------*/
6661 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6662 {
6663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006664 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 pWDICtx, pEventData);
6666 return WDI_STATUS_E_FAILURE;
6667 }
6668
6669 wpalMutexAcquire(&pWDICtx->wptMutex);
6670
6671 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006672 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 ----------------------------------------------------------------------*/
6674 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6675 {
6676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6677 "Control Transport not yet Open - queueing the request");
6678
6679 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006680 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006681
6682 wpalMutexRelease(&pWDICtx->wptMutex);
6683 return WDI_STATUS_PENDING;
6684 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006685
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 wpalMutexRelease(&pWDICtx->wptMutex);
6687
6688 /*Return Success*/
6689 return WDI_ProcessRequest( pWDICtx, pEventData );
6690
6691}/*WDI_MainStart*/
6692
6693/**
6694 @brief Main FSM Response function for state INIT
6695
Jeff Johnsone7245742012-09-05 17:12:55 -07006696
6697 @param pWDICtx: pointer to the WLAN DAL context
6698 pEventData: pointer to the event information structure
6699
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 @see
6701 @return Result of the function call
6702*/
6703WDI_Status
6704WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006705(
Jeff Johnson295189b2012-06-20 16:38:30 -07006706 WDI_ControlBlockType* pWDICtx,
6707 WDI_EventInfoType* pEventData
6708)
6709{
6710 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006713 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006714
6715 /*Return Success*/
6716 return WDI_STATUS_E_NOT_ALLOWED;
6717}/* WDI_MainRspInit */
6718
6719/**
6720 @brief Main FSM Close function for all states except BUSY
6721
Jeff Johnsone7245742012-09-05 17:12:55 -07006722
6723 @param pWDICtx: pointer to the WLAN DAL context
6724 pEventData: pointer to the event information structure
6725
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 @see
6727 @return Result of the function call
6728*/
6729WDI_Status
6730WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006731(
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 WDI_ControlBlockType* pWDICtx,
6733 WDI_EventInfoType* pEventData
6734)
6735{
6736
6737 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 ----------------------------------------------------------------------*/
6740 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6741 {
6742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006743 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 pWDICtx, pEventData);
6745 return WDI_STATUS_E_FAILURE;
6746 }
6747
6748 /*Return Success*/
6749 return WDI_ProcessRequest( pWDICtx, pEventData );
6750
6751}/*WDI_MainClose*/
6752/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006753 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006754--------------------------------------------------------------------------*/
6755/**
6756 @brief Main FSM Start function for state STARTED
6757
Jeff Johnsone7245742012-09-05 17:12:55 -07006758
6759 @param pWDICtx: pointer to the WLAN DAL context
6760 pEventData: pointer to the event information structure
6761
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 @see
6763 @return Result of the function call
6764*/
6765WDI_Status
6766WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006767(
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 WDI_ControlBlockType* pWDICtx,
6769 WDI_EventInfoType* pEventData
6770)
6771{
6772 WDI_StartRspCb wdiStartRspCb = NULL;
6773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6774
6775 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 ----------------------------------------------------------------------*/
6778 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6779 {
6780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006781 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 pWDICtx, pEventData);
6783 return WDI_STATUS_E_FAILURE;
6784 }
6785
6786 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006787 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 ----------------------------------------------------------------------*/
6789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006790 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006791
6792 wpalMutexAcquire(&pWDICtx->wptMutex);
6793
6794 /*Transition back to started because the post function transitioned us to
6795 busy*/
6796 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6797
6798 /*Check to see if any request is pending*/
6799 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006800
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 wpalMutexRelease(&pWDICtx->wptMutex);
6802
6803 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006804 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6805
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 /*Notify UMAC*/
6807 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6808
6809 /*Return Success*/
6810 return WDI_STATUS_SUCCESS;
6811
6812}/*WDI_MainStartStarted*/
6813
6814/**
6815 @brief Main FSM Stop function for state STARTED
6816
Jeff Johnsone7245742012-09-05 17:12:55 -07006817
6818 @param pWDICtx: pointer to the WLAN DAL context
6819 pEventData: pointer to the event information structure
6820
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 @see
6822 @return Result of the function call
6823*/
6824WDI_Status
6825WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006826(
Jeff Johnson295189b2012-06-20 16:38:30 -07006827 WDI_ControlBlockType* pWDICtx,
6828 WDI_EventInfoType* pEventData
6829)
6830{
6831 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 ----------------------------------------------------------------------*/
6834 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6835 {
6836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006837 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006838 pWDICtx, pEventData);
6839 return WDI_STATUS_E_FAILURE;
6840 }
6841
6842 /*State at this point is BUSY - because we enter this state before posting
6843 an event to the FSM in order to prevent potential race conditions*/
6844
6845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6846 "Processing stop request in FSM");
6847
6848 /*Return Success*/
6849 return WDI_ProcessRequest( pWDICtx, pEventData );
6850
6851}/*WDI_MainStopStarted*/
6852/**
6853 @brief Main FSM Request function for state started
6854
Jeff Johnsone7245742012-09-05 17:12:55 -07006855
6856 @param pWDICtx: pointer to the WLAN DAL context
6857 pEventData: pointer to the event information structure
6858
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 @see
6860 @return Result of the function call
6861*/
6862WDI_Status
6863WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006864(
Jeff Johnson295189b2012-06-20 16:38:30 -07006865 WDI_ControlBlockType* pWDICtx,
6866 WDI_EventInfoType* pEventData
6867)
6868{
6869
6870 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 ----------------------------------------------------------------------*/
6873 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6874 {
6875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006876 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 pWDICtx, pEventData);
6878 return WDI_STATUS_E_FAILURE;
6879 }
6880
6881 /*State at this point is BUSY - because we enter this state before posting
6882 an event to the FSM in order to prevent potential race conditions*/
6883
6884 /*Return Success*/
6885 return WDI_ProcessRequest( pWDICtx, pEventData );
6886
6887}/*WDI_MainReqStarted*/
6888
6889/**
6890 @brief Main FSM Response function for all states except INIT
6891
Jeff Johnsone7245742012-09-05 17:12:55 -07006892
6893 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006895
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 @see
6897 @return Result of the function call
6898*/
6899WDI_Status
6900WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006901(
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 WDI_ControlBlockType* pWDICtx,
6903 WDI_EventInfoType* pEventData
6904)
6905{
Jeff Johnsone7245742012-09-05 17:12:55 -07006906 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 wpt_boolean expectedResponse;
6908
6909 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 ----------------------------------------------------------------------*/
6912 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6913 {
6914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006915 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 pWDICtx, pEventData);
6917 return WDI_STATUS_E_FAILURE;
6918 }
6919
6920 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6921 {
6922 /* we received an expected response */
6923 expectedResponse = eWLAN_PAL_TRUE;
6924
6925 /*We expect that we will transition to started after this processing*/
6926 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6927
6928 /* we are no longer expecting a response */
6929 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6930 }
6931 else
6932 {
6933 /* we received an indication or unexpected response */
6934 expectedResponse = eWLAN_PAL_FALSE;
6935 /* for indications no need to update state from what it is right
6936 now, unless it explicitly does it in the indication handler (say
6937 for device failure ind) */
6938 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6939 }
6940
6941 /*Process the response and indication */
6942 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6943
6944 /*Lock the CB as we are about to do a state transition*/
6945 wpalMutexAcquire(&pWDICtx->wptMutex);
6946
6947 /*Transition to the expected state after the response processing
6948 - this should always be started state with the following exceptions:
6949 1. processing of a failed start response
6950 2. device failure detected while processing response
6951 3. stop response received*/
6952 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006953
Jeff Johnson295189b2012-06-20 16:38:30 -07006954 /*Dequeue request that may have been queued while we were waiting for the
6955 response */
6956 if ( expectedResponse )
6957 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 }
6960
6961 wpalMutexRelease(&pWDICtx->wptMutex);
6962
6963 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006965
6966}/*WDI_MainRsp*/
6967
6968/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006970--------------------------------------------------------------------------*/
6971/**
6972 @brief Main FSM Stop function for state STOPPED
6973
Jeff Johnsone7245742012-09-05 17:12:55 -07006974
6975 @param pWDICtx: pointer to the WLAN DAL context
6976 pEventData: pointer to the event information structure
6977
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 @see
6979 @return Result of the function call
6980*/
6981WDI_Status
6982WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006983(
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 WDI_ControlBlockType* pWDICtx,
6985 WDI_EventInfoType* pEventData
6986)
6987{
6988 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 ----------------------------------------------------------------------*/
6991 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6992 {
6993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006994 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 pWDICtx, pEventData);
6996 return WDI_STATUS_E_FAILURE;
6997 }
6998
6999 /*We should normally not get a STOP request if we are already stopped
7000 since we should normally be stopped by the UMAC. However in some
7001 error situations we put ourselves in the stopped state without the
7002 UMAC knowing, so when we get a STOP request in this state we still
7003 process it since we need to clean up the underlying state */
7004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7005 "Processing stop request while stopped in FSM");
7006
7007 /*Return Success*/
7008 return WDI_ProcessRequest( pWDICtx, pEventData );
7009
7010}/*WDI_MainStopStopped*/
7011
7012/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007014--------------------------------------------------------------------------*/
7015/**
7016 @brief Main FSM Start function for state BUSY
7017
Jeff Johnsone7245742012-09-05 17:12:55 -07007018
7019 @param pWDICtx: pointer to the WLAN DAL context
7020 pEventData: pointer to the event information structure
7021
Jeff Johnson295189b2012-06-20 16:38:30 -07007022 @see
7023 @return Result of the function call
7024*/
7025WDI_Status
7026WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007027(
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 WDI_ControlBlockType* pWDICtx,
7029 WDI_EventInfoType* pEventData
7030)
7031{
7032 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 ----------------------------------------------------------------------*/
7035 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7036 {
7037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007038 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 pWDICtx, pEventData);
7040 return WDI_STATUS_E_FAILURE;
7041 }
7042
7043 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 ----------------------------------------------------------------------*/
7046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7047 "WDI Busy state - queue start request");
7048
7049 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007050 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007051
7052 /*Return Success*/
7053 return WDI_STATUS_PENDING;
7054}/*WDI_MainStartBusy*/
7055
7056/**
7057 @brief Main FSM Stop function for state BUSY
7058
Jeff Johnsone7245742012-09-05 17:12:55 -07007059
7060 @param pWDICtx: pointer to the WLAN DAL context
7061 pEventData: pointer to the event information structure
7062
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 @see
7064 @return Result of the function call
7065*/
7066WDI_Status
7067WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007068(
Jeff Johnson295189b2012-06-20 16:38:30 -07007069 WDI_ControlBlockType* pWDICtx,
7070 WDI_EventInfoType* pEventData
7071)
7072{
7073 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 ----------------------------------------------------------------------*/
7076 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7077 {
7078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007079 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 pWDICtx, pEventData);
7081 return WDI_STATUS_E_FAILURE;
7082 }
7083
7084 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007085 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 ----------------------------------------------------------------------*/
7087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7088 "WDI Busy state - queue stop request");
7089
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007092
Jeff Johnson295189b2012-06-20 16:38:30 -07007093}/*WDI_MainStopBusy*/
7094
7095/**
7096 @brief Main FSM Request function for state BUSY
7097
Jeff Johnsone7245742012-09-05 17:12:55 -07007098
7099 @param pWDICtx: pointer to the WLAN DAL context
7100 pEventData: pointer to the event information structure
7101
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 @see
7103 @return Result of the function call
7104*/
7105WDI_Status
7106WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007107(
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 WDI_ControlBlockType* pWDICtx,
7109 WDI_EventInfoType* pEventData
7110)
7111{
7112 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007114 ----------------------------------------------------------------------*/
7115 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7116 {
7117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007118 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 pWDICtx, pEventData);
7120 return WDI_STATUS_E_FAILURE;
7121 }
7122
7123 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007125 ----------------------------------------------------------------------*/
7126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7127 "WDI Busy state - queue request %d because waiting for response %d",
7128 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7129
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007131 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007132
Jeff Johnson295189b2012-06-20 16:38:30 -07007133}/*WDI_MainReqBusy*/
7134/**
7135 @brief Main FSM Close function for state BUSY
7136
Jeff Johnsone7245742012-09-05 17:12:55 -07007137
7138 @param pWDICtx: pointer to the WLAN DAL context
7139 pEventData: pointer to the event information structure
7140
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 @see
7142 @return Result of the function call
7143*/
7144WDI_Status
7145WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007146(
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 WDI_ControlBlockType* pWDICtx,
7148 WDI_EventInfoType* pEventData
7149)
7150{
7151 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 ----------------------------------------------------------------------*/
7154 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7155 {
7156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007157 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 pWDICtx, pEventData);
7159 return WDI_STATUS_E_FAILURE;
7160 }
7161
7162 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 ----------------------------------------------------------------------*/
7165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7166 "WDI Busy state - queue close request");
7167
Jeff Johnsone7245742012-09-05 17:12:55 -07007168 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007170
Jeff Johnson295189b2012-06-20 16:38:30 -07007171}/*WDI_MainCloseBusy*/
7172
7173/**
7174 @brief Main FSM Shutdown function for INIT & STARTED states
7175
7176
7177 @param pWDICtx: pointer to the WLAN DAL context
7178 pEventData: pointer to the event information structure
7179
7180 @see
7181 @return Result of the function call
7182*/
7183WDI_Status
7184WDI_MainShutdown
7185(
7186 WDI_ControlBlockType* pWDICtx,
7187 WDI_EventInfoType* pEventData
7188)
7189{
7190 /*--------------------------------------------------------------------
7191 Sanity Check
7192 ----------------------------------------------------------------------*/
7193 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7194 {
7195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007196 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 pWDICtx, pEventData);
7198 return WDI_STATUS_E_FAILURE;
7199 }
7200
7201 /*State at this point is BUSY - because we enter this state before posting
7202 an event to the FSM in order to prevent potential race conditions*/
7203
7204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7205 "Processing shutdown request in FSM");
7206
7207 /*Return Success*/
7208 return WDI_ProcessRequest( pWDICtx, pEventData );
7209
7210}/*WDI_MainShutdown*/
7211
7212/**
7213 @brief Main FSM Shutdown function for BUSY state
7214
7215
7216 @param pWDICtx: pointer to the WLAN DAL context
7217 pEventData: pointer to the event information structure
7218
7219 @see
7220 @return Result of the function call
7221*/
7222WDI_Status
7223WDI_MainShutdownBusy
7224(
7225 WDI_ControlBlockType* pWDICtx,
7226 WDI_EventInfoType* pEventData
7227)
7228{
7229 /*--------------------------------------------------------------------
7230 Sanity Check
7231 ----------------------------------------------------------------------*/
7232 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7233 {
7234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007235 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 pWDICtx, pEventData);
7237 return WDI_STATUS_E_FAILURE;
7238 }
7239
7240 /* If you are waiting for a HAL response at this stage, you are not
7241 * going to get it. Riva is already shutdown/crashed.
7242 */
7243 wpalTimerStop(&gWDICb.wptResponseTimer);
7244
7245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7246 "Processing shutdown request in FSM: Busy state ");
7247
7248 return WDI_ProcessRequest( pWDICtx, pEventData );
7249
7250}/*WDI_MainShutdownBusy*/
7251
7252
Jeff Johnsone7245742012-09-05 17:12:55 -07007253/*=======================================================================
7254
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007256
Jeff Johnson295189b2012-06-20 16:38:30 -07007257*=======================================================================*/
7258
7259/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007261========================================================================*/
7262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007265
7266 @param pWDICtx: pointer to the WLAN DAL context
7267 pEventData: pointer to the event information structure
7268
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 @see
7270 @return Result of the function call
7271*/
7272WDI_Status
7273WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007274(
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 WDI_ControlBlockType* pWDICtx,
7276 WDI_EventInfoType* pEventData
7277)
7278{
7279 WDI_StartReqParamsType* pwdiStartParams = NULL;
7280 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007281 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 wpt_uint16 usDataOffset = 0;
7283 wpt_uint16 usSendSize = 0;
7284
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 tHalMacStartReqMsg halStartReq;
7286 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7288
7289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 -------------------------------------------------------------------------*/
7292 if (( NULL == pEventData ) ||
7293 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7294 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7295 {
7296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 }
7301
7302 /*-----------------------------------------------------------------------
7303 Get message buffer
7304 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 pwdiStartParams->usConfigBufferLen;
7307
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 usLen,
7310 &pSendBuffer, &usDataOffset, &usSendSize))||
7311 ( usSendSize < (usDataOffset + usLen )))
7312 {
7313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007314 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 pEventData, pwdiStartParams, wdiStartRspCb);
7316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 }
7319
7320 /*-----------------------------------------------------------------------
7321 Fill in the message
7322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 halStartReq.startReqParams.driverType =
7324 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007325
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 halStartReq.startReqParams.uConfigBufferLen =
7327 pwdiStartParams->usConfigBufferLen;
7328 wpalMemoryCopy( pSendBuffer+usDataOffset,
7329 &halStartReq.startReqParams,
7330 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007331
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 usDataOffset += sizeof(halStartReq.startReqParams);
7333 wpalMemoryCopy( pSendBuffer+usDataOffset,
7334 pwdiStartParams->pConfigBuffer,
7335 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007336
7337 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007339
7340 /*Save Low Level Ind CB and associated user data - it will be used further
7341 on when an indication is coming from the lower MAC*/
7342 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007343 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007344
Jeff Johnsone7245742012-09-05 17:12:55 -07007345 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7351
Jeff Johnsone7245742012-09-05 17:12:55 -07007352
Jeff Johnson295189b2012-06-20 16:38:30 -07007353}/*WDI_ProcessStartReq*/
7354
7355/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007358
7359 @param pWDICtx: pointer to the WLAN DAL context
7360 pEventData: pointer to the event information structure
7361
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 @see
7363 @return Result of the function call
7364*/
7365WDI_Status
7366WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007367(
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 WDI_ControlBlockType* pWDICtx,
7369 WDI_EventInfoType* pEventData
7370)
7371{
7372 WDI_StopReqParamsType* pwdiStopParams = NULL;
7373 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 wpt_uint16 usDataOffset = 0;
7376 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007377 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7380
7381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 -------------------------------------------------------------------------*/
7384 if (( NULL == pEventData ) ||
7385 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7386 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7387 {
7388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007391 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 }
7393
7394 /*-----------------------------------------------------------------------
7395 Get message buffer
7396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 sizeof(halStopReq.stopReqParams),
7399 &pSendBuffer, &usDataOffset, &usSendSize))||
7400 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7401 {
7402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007403 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 pEventData, pwdiStopParams, wdiStopRspCb);
7405 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007406 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 }
7408
7409 /*-----------------------------------------------------------------------
7410 Fill in the message
7411 -----------------------------------------------------------------------*/
7412 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7413 pwdiStopParams->wdiStopReason);
7414
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 wpalMemoryCopy( pSendBuffer+usDataOffset,
7416 &halStopReq.stopReqParams,
7417 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007418
7419 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007421
7422 /*! TO DO: stop the data services */
7423 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7424 {
7425 /*Stop the STA Table !UT- check this logic again
7426 It is safer to do it here than on the response - because a stop is imminent*/
7427 WDI_STATableStop(pWDICtx);
7428
7429 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007430 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7431 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007432 {
7433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7434 "WDI Init failed to reset power state event");
7435
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007437 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 }
7439 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007440 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7441 if( eWLAN_PAL_STATUS_SUCCESS != status )
7442 {
7443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007444 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Ravali85acf6b2012-12-12 14:01:38 -08007445 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007446 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007447 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007449 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007451 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7452 WDI_SET_POWER_STATE_TIMEOUT);
7453 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 {
7455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7456 "WDI Init failed to wait on an event");
7457
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007459 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 }
7461 }
7462
7463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7468
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007469fail:
7470 // Release the message buffer so we don't leak
7471 wpalMemoryFree(pSendBuffer);
7472
7473failRequest:
7474 //WDA should have failure check to avoid the memory leak
7475 return WDI_STATUS_E_FAILURE;
7476
Jeff Johnson295189b2012-06-20 16:38:30 -07007477}/*WDI_ProcessStopReq*/
7478
7479/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007482
7483 @param pWDICtx: pointer to the WLAN DAL context
7484 pEventData: pointer to the event information structure
7485
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 @see
7487 @return Result of the function call
7488*/
7489WDI_Status
7490WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007491(
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 WDI_ControlBlockType* pWDICtx,
7493 WDI_EventInfoType* pEventData
7494)
7495{
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7498
7499 /*Lock control block for cleanup*/
7500 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007501
Jeff Johnson295189b2012-06-20 16:38:30 -07007502 /*Clear all pending request*/
7503 WDI_ClearPendingRequests(pWDICtx);
7504
7505 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007506 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007507
7508 /* Close Data transport*/
7509 /* FTM mode does not open Data Path */
7510 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7511 {
7512 WDTS_Close(pWDICtx);
7513 }
7514
7515 /*Close the STA Table !UT- check this logic again*/
7516 WDI_STATableClose(pWDICtx);
7517
7518 /*close the PAL */
7519 wptStatus = wpalClose(pWDICtx->pPALContext);
7520 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7521 {
7522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7523 "Failed to wpal Close %d", wptStatus);
7524 WDI_ASSERT(0);
7525 }
7526
7527 /*Transition back to init state*/
7528 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7529
7530 wpalMutexRelease(&pWDICtx->wptMutex);
7531
7532 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007534
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007536}/*WDI_ProcessCloseReq*/
7537
7538
7539/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007541===========================================================================*/
7542
7543/**
7544 @brief Process Init Scan Request function (called when Main FSM
7545 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007546
7547 @param pWDICtx: pointer to the WLAN DAL context
7548 pEventData: pointer to the event information structure
7549
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 @see
7551 @return Result of the function call
7552*/
7553WDI_Status
7554WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007555(
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 WDI_ControlBlockType* pWDICtx,
7557 WDI_EventInfoType* pEventData
7558)
7559{
7560 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7561 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 wpt_uint16 usDataOffset = 0;
7564 wpt_uint16 usSendSize = 0;
7565 wpt_uint8 i = 0;
7566
7567 tHalInitScanReqMsg halInitScanReqMsg;
7568
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 * It shold be removed once host and riva changes are in sync*/
7571 tHalInitScanConReqMsg halInitScanConReqMsg;
7572
7573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7574
7575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 -------------------------------------------------------------------------*/
7578 if (( NULL == pEventData ) ||
7579 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7580 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7581 {
7582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 }
7587
7588#if 0
7589 wpalMutexAcquire(&pWDICtx->wptMutex);
7590 /*-----------------------------------------------------------------------
7591 Check to see if SCAN is already in progress - if so reject the req
7592 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 -----------------------------------------------------------------------*/
7595 if ( pWDICtx->bScanInProgress )
7596 {
7597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7598 "Scan is already in progress - subsequent scan is not allowed"
7599 " until the first scan completes");
7600
7601 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 }
7604
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7606 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007607
7608 wpalMutexRelease(&pWDICtx->wptMutex);
7609#endif
Viral Modid86bde22012-12-10 13:09:21 -08007610 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 * It shold be removed once host and riva changes are in sync*/
7614 /*-----------------------------------------------------------------------
7615 Get message buffer
7616 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 sizeof(halInitScanConReqMsg.initScanParams),
7619 &pSendBuffer, &usDataOffset, &usSendSize))||
7620 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7621 {
7622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007623 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007624 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 }
7628
7629
7630 /*-----------------------------------------------------------------------
7631 Fill in the message
7632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7635
7636 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7637 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7638
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7645
7646 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7647 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7648
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7650 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007651
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7654
7655 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7656 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7659 }
7660
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 wpalMemoryCopy( pSendBuffer+usDataOffset,
7662 &halInitScanConReqMsg.initScanParams,
7663 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 }
7665 else
7666 {
7667 /*-----------------------------------------------------------------------
7668 Get message buffer
7669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 sizeof(halInitScanReqMsg.initScanParams),
7672 &pSendBuffer, &usDataOffset, &usSendSize))||
7673 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7674 {
7675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007676 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 }
7681
7682
7683 /*-----------------------------------------------------------------------
7684 Fill in the message
7685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7688
7689 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7690 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7691
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007694 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7698
7699 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7700 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7701
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7704
7705 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7706 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7709 }
7710
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 wpalMemoryCopy( pSendBuffer+usDataOffset,
7712 &halInitScanReqMsg.initScanParams,
7713 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 }
7715
7716 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007718
7719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7724
7725}/*WDI_ProcessInitScanReq*/
7726
7727/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007730
7731 @param pWDICtx: pointer to the WLAN DAL context
7732 pEventData: pointer to the event information structure
7733
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 @see
7735 @return Result of the function call
7736*/
7737WDI_Status
7738WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007739(
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 WDI_ControlBlockType* pWDICtx,
7741 WDI_EventInfoType* pEventData
7742)
7743{
7744 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7745 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 wpt_uint16 usDataOffset = 0;
7748 wpt_uint16 usSendSize = 0;
7749
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7752
7753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 -------------------------------------------------------------------------*/
7756 if (( NULL == pEventData ) ||
7757 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7758 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7759 {
7760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 }
7765
7766#if 0
7767 wpalMutexAcquire(&pWDICtx->wptMutex);
7768 /*-----------------------------------------------------------------------
7769 Check to see if SCAN is already in progress - start scan is only
7770 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7775 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7776 {
7777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7778 "Scan start not allowed in this state %d %d",
7779 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007780
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 }
7784
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786
7787 wpalMutexRelease(&pWDICtx->wptMutex);
7788#endif
7789
7790 /*-----------------------------------------------------------------------
7791 Get message buffer
7792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 sizeof(halStartScanReqMsg.startScanParams),
7795 &pSendBuffer, &usDataOffset, &usSendSize))||
7796 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7797 {
7798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007799 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 }
7804
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 wpalMemoryCopy( pSendBuffer+usDataOffset,
7808 &halStartScanReqMsg.startScanParams,
7809 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007810
7811 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813
7814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7819}/*WDI_ProcessStartScanReq*/
7820
7821
7822/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007825
7826 @param pWDICtx: pointer to the WLAN DAL context
7827 pEventData: pointer to the event information structure
7828
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 @see
7830 @return Result of the function call
7831*/
7832WDI_Status
7833WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007834(
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 WDI_ControlBlockType* pWDICtx,
7836 WDI_EventInfoType* pEventData
7837)
7838{
7839 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7840 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 wpt_uint16 usDataOffset = 0;
7843 wpt_uint16 usSendSize = 0;
7844
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7847
7848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 -------------------------------------------------------------------------*/
7851 if (( NULL == pEventData ) ||
7852 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7853 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7854 {
7855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 }
7860
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7862 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 * forwarded to HAL and result in hang*/
7864#if 0
7865 wpalMutexAcquire(&pWDICtx->wptMutex);
7866 /*-----------------------------------------------------------------------
7867 Check to see if SCAN is already in progress - end scan is only
7868 allowed when a scan is ongoing and the state of the scan procedure
7869 is started
7870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7873 {
7874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7875 "End start not allowed in this state %d %d",
7876 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007877
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 }
7881
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007883
7884 wpalMutexRelease(&pWDICtx->wptMutex);
7885#endif
7886
7887 /*-----------------------------------------------------------------------
7888 Get message buffer
7889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 sizeof(halEndScanReqMsg.endScanParams),
7892 &pSendBuffer, &usDataOffset, &usSendSize))||
7893 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7894 {
7895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007896 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 }
7901
7902 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7903
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 wpalMemoryCopy( pSendBuffer+usDataOffset,
7905 &halEndScanReqMsg.endScanParams,
7906 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007907
7908 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910
7911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7916}/*WDI_ProcessEndScanReq*/
7917
7918
7919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007922
7923 @param pWDICtx: pointer to the WLAN DAL context
7924 pEventData: pointer to the event information structure
7925
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 @see
7927 @return Result of the function call
7928*/
7929WDI_Status
7930WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007931(
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 WDI_ControlBlockType* pWDICtx,
7933 WDI_EventInfoType* pEventData
7934)
7935{
7936 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7937 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 wpt_uint16 usDataOffset = 0;
7940 wpt_uint16 usSendSize = 0;
7941 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007942 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7945
7946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 -------------------------------------------------------------------------*/
7949 if (( NULL == pEventData ) ||
7950 ( NULL == pEventData->pEventData) ||
7951 ( NULL == pEventData->pCBfnc))
7952 {
7953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 }
7958
7959 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7960 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7962 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 * forwarded to HAL and result in hang*/
7964#if 0
7965 wpalMutexAcquire(&pWDICtx->wptMutex);
7966 /*-----------------------------------------------------------------------
7967 Check to see if SCAN is already in progress
7968 Finish scan gets invoked any scan states. ie. abort scan
7969 It should be allowed in any states.
7970 -----------------------------------------------------------------------*/
7971 if ( !pWDICtx->bScanInProgress )
7972 {
7973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7974 "Finish start not allowed in this state %d",
7975 pWDICtx->bScanInProgress );
7976
7977 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 }
7980
7981 /*-----------------------------------------------------------------------
7982 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7986 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 wpalMutexRelease(&pWDICtx->wptMutex);
7988#endif
7989
7990 if ( pWDICtx->bInBmps )
7991 {
7992 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007993 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7994 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7995 {
7996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007997 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007998 WDI_ASSERT(0);
7999 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 }
8001
8002 /*-----------------------------------------------------------------------
8003 Get message buffer
8004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 sizeof(halFinishScanReqMsg.finishScanParams),
8007 &pSendBuffer, &usDataOffset, &usSendSize))||
8008 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8009 {
8010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008011 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 }
8016
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8019
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8022
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8025
8026 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8027 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8028
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8035
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8038
8039 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8043 }
8044
8045 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8046 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8047
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 wpalMemoryCopy( pSendBuffer+usDataOffset,
8049 &halFinishScanReqMsg.finishScanParams,
8050 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008051
8052 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008054
8055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8060}/*WDI_ProcessFinishScanReq*/
8061
8062
8063/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008065==========================================================================*/
8066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 @brief Process BSS Join for a given Session
8068
8069 @param pWDICtx: pointer to the WLAN DAL context
8070 pEventData: pointer to the event information structure
8071
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 @see
8073 @return Result of the function call
8074*/
8075WDI_Status
8076WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008077(
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 WDI_ControlBlockType* pWDICtx,
8079 WDI_JoinReqParamsType* pwdiJoinParams,
8080 WDI_JoinRspCb wdiJoinRspCb,
8081 void* pUserData
8082)
8083{
8084 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 wpt_uint16 usDataOffset = 0;
8087 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008089
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8092
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008093 wpalMutexAcquire(&pWDICtx->wptMutex);
8094
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 /*------------------------------------------------------------------------
8096 Check to see if we have any session with this BSSID already stored, we
8097 should not
8098 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8100 pwdiJoinParams->wdiReqInfo.macBSSID,
8101 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008102
8103 if ( NULL != pBSSSes )
8104 {
8105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008106 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8107 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008108
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008109 /*reset the bAssociationInProgress otherwise the next
8110 *join request will be queued*/
8111 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8112 wpalMutexRelease(&pWDICtx->wptMutex);
8113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 }
8115
Jeff Johnson295189b2012-06-20 16:38:30 -07008116 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 if ( NULL == pBSSSes )
8121 {
8122
8123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8124 "DAL has no free sessions - cannot run another join");
8125
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008126 /*reset the bAssociationInProgress otherwise the next
8127 *join request will be queued*/
8128 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 }
8132
8133 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8135 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 WDI_MAC_ADDR_LEN);
8137
8138 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008141
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 wpalMutexRelease(&pWDICtx->wptMutex);
8143
8144 /*-----------------------------------------------------------------------
8145 Get message buffer
8146 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008147 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 sizeof(halJoinReqMsg.joinReqParams),
8149 &pSendBuffer, &usDataOffset, &usSendSize))||
8150 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8151 {
8152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008153 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 pUserData, pwdiJoinParams, wdiJoinRspCb);
8155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 }
8158
8159 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008161
8162 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 pwdiJoinParams->wdiReqInfo.macSTASelf,
8164 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008165
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8168
8169 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8170
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008171#ifdef WLAN_FEATURE_VOWIFI
8172 halJoinReqMsg.joinReqParams.maxTxPower =
8173 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8174#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8177#endif
8178
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8181 wdiSecondaryChannelOffset);
8182
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 wpalMemoryCopy( pSendBuffer+usDataOffset,
8184 &halJoinReqMsg.joinReqParams,
8185 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008186
8187 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
8190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8194 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008195
8196}/*WDI_ProcessBSSSessionJoinReq*/
8197
8198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008201
8202 @param pWDICtx: pointer to the WLAN DAL context
8203 pEventData: pointer to the event information structure
8204
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 @see
8206 @return Result of the function call
8207*/
8208WDI_Status
8209WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008210(
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 WDI_ControlBlockType* pWDICtx,
8212 WDI_EventInfoType* pEventData
8213)
8214{
8215 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8216 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8217 WDI_JoinRspCb wdiJoinRspCb = NULL;
8218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8219
8220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 -------------------------------------------------------------------------*/
8223 if (( NULL == pEventData ) ||
8224 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8225 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8226 {
8227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008232
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 /*-------------------------------------------------------------------------
8234 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 -------------------------------------------------------------------------*/
8237 wpalMutexAcquire(&pWDICtx->wptMutex);
8238
8239 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8240 {
8241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8242 "Association is currently in progress, queueing new join req");
8243
8244 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 pwdiJoinParams->wdiReqInfo.macBSSID);
8247
8248 wpalMutexRelease(&pWDICtx->wptMutex);
8249
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 }
8252
8253 /*Starting a new association */
8254 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8255 wpalMutexRelease(&pWDICtx->wptMutex);
8256
8257 /*Process the Join Request*/
8258 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8259 wdiJoinRspCb,pEventData->pUserData);
8260
8261}/*WDI_ProcessJoinReq*/
8262
8263
8264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008267
8268 @param pWDICtx: pointer to the WLAN DAL context
8269 pEventData: pointer to the event information structure
8270
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 @see
8272 @return Result of the function call
8273*/
8274WDI_Status
8275WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008276(
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 WDI_ControlBlockType* pWDICtx,
8278 WDI_EventInfoType* pEventData
8279)
8280{
8281 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8282 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 wpt_uint16 uMsgSize = 0;
8286 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 wpt_uint16 usDataOffset = 0;
8288 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008290
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8293
8294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 -------------------------------------------------------------------------*/
8297 if (( NULL == pEventData ) ||
8298 ( NULL == pEventData->pEventData ) ||
8299 ( NULL == pEventData->pCBfnc ))
8300 {
8301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 }
8306
8307 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8308 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8309 /*-------------------------------------------------------------------------
8310 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 -------------------------------------------------------------------------*/
8313 wpalMutexAcquire(&pWDICtx->wptMutex);
8314
8315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8319 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8320 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008321
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 {
8324#ifdef WLAN_FEATURE_VOWIFI_11R
8325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 if ( NULL == pBSSSes )
8330 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008331
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8333 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008334
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008338
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8341 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008343
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8347#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 * Request in case of IBSS*/
8350 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8351 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8352 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8353 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8354 {
8355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 if ( NULL == pBSSSes )
8360 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008361
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8363 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008364
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008368
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8371 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008373
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008375 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008376 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8377 }
8378 else
8379 {
8380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8382 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8383 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8384
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 /* for IBSS testing */
8386 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 }
8389#endif
8390 }
8391
8392 /*------------------------------------------------------------------------
8393 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 ------------------------------------------------------------------------*/
8396 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8397 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8399 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8400 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8401 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008402
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
8405 wpalMutexRelease(&pWDICtx->wptMutex);
8406
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
8410 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8412 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 sizeof(pWDICtx->wdiCachedConfigBssReq));
8414
8415 wpalMutexRelease(&pWDICtx->wptMutex);
8416
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8418#ifdef WLAN_FEATURE_11AC
8419 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008420 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 else
8422#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008423 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
8425 /*-----------------------------------------------------------------------
8426 Get message buffer
8427 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8430 ( usSendSize < (usDataOffset + uMsgSize )))
8431 {
8432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008433 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 }
8438
8439 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008440#ifdef WLAN_FEATURE_11AC
8441 if (WDI_getFwWlanFeatCaps(DOT11AC))
8442 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8443 &pwdiConfigBSSParams->wdiReqInfo);
8444 else
8445#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 &pwdiConfigBSSParams->wdiReqInfo);
8448
8449 /* Need to fill in the STA Index to invalid, since at this point we have not
8450 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008452
8453 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8455
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008456#ifdef WLAN_FEATURE_11AC
8457 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8458 wpalMemoryCopy( pSendBuffer+usDataOffset,
8459 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8460 uMsgSize);
8461 }else
8462#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008463 {
8464 if ( uMsgSize <= sizeof(tConfigBssParams) )
8465 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008466 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008467 &halConfigBssReqMsg.uBssParams.configBssParams,
8468 uMsgSize);
8469 }
8470 else
8471 {
8472 return WDI_STATUS_E_FAILURE;
8473 }
8474 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008475
8476 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008478
8479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8483 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 WDI_CONFIG_BSS_RESP);
8485
8486}/*WDI_ProcessConfigBSSReq*/
8487
8488
8489/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008492
8493 @param pWDICtx: pointer to the WLAN DAL context
8494 pEventData: pointer to the event information structure
8495
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 @see
8497 @return Result of the function call
8498*/
8499WDI_Status
8500WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008501(
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 WDI_ControlBlockType* pWDICtx,
8503 WDI_EventInfoType* pEventData
8504)
8505{
8506 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8507 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 wpt_uint16 usDataOffset = 0;
8512 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8517
8518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 -------------------------------------------------------------------------*/
8521 if (( NULL == pEventData ) ||
8522 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8523 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8524 {
8525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 }
8530
8531 /*-------------------------------------------------------------------------
8532 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 -------------------------------------------------------------------------*/
8535 wpalMutexAcquire(&pWDICtx->wptMutex);
8536
8537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8541 pwdiDelBSSParams->ucBssIdx,
8542 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 {
8546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 "%s: BSS does not yet exist. ucBssIdx %d",
8548 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008549
8550 wpalMutexRelease(&pWDICtx->wptMutex);
8551
8552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008554
8555 /*------------------------------------------------------------------------
8556 Check if this BSS is being currently processed or queued,
8557 if queued - queue the new request as well
8558 ------------------------------------------------------------------------*/
8559 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8562 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8563 __func__, pwdiDelBSSParams->ucBssIdx);
8564
8565 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8566
8567 wpalMutexRelease(&pWDICtx->wptMutex);
8568
8569 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008571
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 /*-----------------------------------------------------------------------
8573 If we receive a Del BSS request for an association that is already in
8574 progress, it indicates that the assoc has failed => we no longer have
8575 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 -----------------------------------------------------------------------*/
8578 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8579 {
8580 /*We can switch to false here because even if a subsequent Join comes in
8581 it will only be processed when DAL transitions out of BUSY state which
8582 happens when the Del BSS request comes */
8583 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8584
8585 /*Former association is complete - prepare next pending assoc for
8586 processing */
8587 WDI_DequeueAssocRequest(pWDICtx);
8588 }
8589
8590 wpalMutexRelease(&pWDICtx->wptMutex);
8591 /*-----------------------------------------------------------------------
8592 Get message buffer
8593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 sizeof(halBssReqMsg.deleteBssParams),
8596 &pSendBuffer, &usDataOffset, &usSendSize))||
8597 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8598 {
8599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008600 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 }
8605
8606 /*Fill in the message request structure*/
8607
8608 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008609 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008610
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 wpalMemoryCopy( pSendBuffer+usDataOffset,
8612 &halBssReqMsg.deleteBssParams,
8613 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008614
8615 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008617
Jeff Johnsone7245742012-09-05 17:12:55 -07008618
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8624
Jeff Johnsone7245742012-09-05 17:12:55 -07008625
Jeff Johnson295189b2012-06-20 16:38:30 -07008626}/*WDI_ProcessDelBSSReq*/
8627
8628/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008631
8632 @param pWDICtx: pointer to the WLAN DAL context
8633 pEventData: pointer to the event information structure
8634
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 @see
8636 @return Result of the function call
8637*/
8638WDI_Status
8639WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008640(
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 WDI_ControlBlockType* pWDICtx,
8642 WDI_EventInfoType* pEventData
8643)
8644{
8645 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8646 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 wpt_uint16 usDataOffset = 0;
8651 wpt_uint16 usSendSize = 0;
8652 wpt_uint16 uMsgSize = 0;
8653 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008655
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8658
8659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 -------------------------------------------------------------------------*/
8662 if (( NULL == pEventData ) ||
8663 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8664 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8665 {
8666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 }
8671
8672 /*-------------------------------------------------------------------------
8673 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 -------------------------------------------------------------------------*/
8676 wpalMutexAcquire(&pWDICtx->wptMutex);
8677
8678 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8682 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8683 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008684
8685 if ( NULL == pBSSSes )
8686 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8688 "%s: Association sequence for this BSS does not yet exist - "
8689 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8690 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008691
8692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 }
8695
8696 /*------------------------------------------------------------------------
8697 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 ------------------------------------------------------------------------*/
8700 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8701 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8703 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8704 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008705
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
8708 wpalMutexRelease(&pWDICtx->wptMutex);
8709
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 }
8712
8713 /*-----------------------------------------------------------------------
8714 If Post Assoc was not yet received - the current association must
8715 be in progress
8716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008718 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8719 {
8720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8721 "Association sequence for this BSS association no longer in "
8722 "progress - not allowed");
8723
8724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727
8728 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 -----------------------------------------------------------------------*/
8731 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8732 {
8733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8734 "Post Assoc not allowed before JOIN - failing request");
8735
8736 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 }
8739
8740 wpalMutexRelease(&pWDICtx->wptMutex);
8741
8742 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8743 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8744 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8749 ( usSendSize < (usDataOffset + uMsgSize )))
8750 {
8751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008752 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
8757
8758 /*Copy the STA parameters */
8759 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8760 &pwdiPostAssocParams->wdiSTAParams );
8761
8762 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 WDI_STATableFindStaidByAddr(pWDICtx,
8765 pwdiPostAssocParams->wdiSTAParams.macSTA,
8766 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8767 {
8768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008769 MAC_ADDRESS_STR
8770 ": This station does not exist in the WDI Station Table",
8771 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008773 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 }
8776
8777 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 pBSSSes->ucBSSIdx;
8780
8781 /*Copy the BSS parameters */
8782 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8783 &pwdiPostAssocParams->wdiBSSParams);
8784
8785 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 WDI_STATableFindStaidByAddr(pWDICtx,
8788 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 {
8791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008792 MAC_ADDRESS_STR
8793 ": This station does not exist in the WDI Station Table",
8794 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008796 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 }
8799
8800 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 pBSSSes->ucBSSIdx;
8803
Jeff Johnsone7245742012-09-05 17:12:55 -07008804
8805 wpalMemoryCopy( pSendBuffer+usDataOffset,
8806 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8807 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008808
8809 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8810
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8812 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8813 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008818
Jeff Johnsone7245742012-09-05 17:12:55 -07008819
8820 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
8824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8829
Jeff Johnsone7245742012-09-05 17:12:55 -07008830
Jeff Johnson295189b2012-06-20 16:38:30 -07008831}/*WDI_ProcessPostAssocReq*/
8832
8833/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008836
8837 @param pWDICtx: pointer to the WLAN DAL context
8838 pEventData: pointer to the event information structure
8839
Jeff Johnson295189b2012-06-20 16:38:30 -07008840 @see
8841 @return Result of the function call
8842*/
8843WDI_Status
8844WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008845(
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 WDI_ControlBlockType* pWDICtx,
8847 WDI_EventInfoType* pEventData
8848)
8849{
8850 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8851 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008852 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 wpt_uint16 usDataOffset = 0;
8856 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8859
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8862
8863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 -------------------------------------------------------------------------*/
8866 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8867 ( NULL == pEventData->pCBfnc ))
8868 {
8869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 }
8874
8875 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8876 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8877 /*-------------------------------------------------------------------------
8878 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 -------------------------------------------------------------------------*/
8881 wpalMutexAcquire(&pWDICtx->wptMutex);
8882
8883 /*------------------------------------------------------------------------
8884 Find the BSS for which the request is made and identify WDI session
8885 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8887 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 &macBSSID))
8889 {
8890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008891 "This station does not exist in the WDI Station Table %d",
8892 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 }
8896
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8898 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8901 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8902 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008903
8904 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 }
8907
8908 /*------------------------------------------------------------------------
8909 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 ------------------------------------------------------------------------*/
8912 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8913 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8915 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8916 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008917
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 }
8922
8923 wpalMutexRelease(&pWDICtx->wptMutex);
8924 /*-----------------------------------------------------------------------
8925 Get message buffer
8926 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 sizeof(halDelStaReqMsg.delStaParams),
8929 &pSendBuffer, &usDataOffset, &usSendSize))||
8930 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8931 {
8932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008933 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 }
8938
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8940 wpalMemoryCopy( pSendBuffer+usDataOffset,
8941 &halDelStaReqMsg.delStaParams,
8942 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008943
8944 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008946
8947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8952
8953}/*WDI_ProcessDelSTAReq*/
8954
8955
8956/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008958==========================================================================*/
8959/**
8960 @brief Process Set BSS Key Request function (called when Main FSM
8961 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008962
8963 @param pWDICtx: pointer to the WLAN DAL context
8964 pEventData: pointer to the event information structure
8965
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 @see
8967 @return Result of the function call
8968*/
8969WDI_Status
8970WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008971(
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 WDI_ControlBlockType* pWDICtx,
8973 WDI_EventInfoType* pEventData
8974)
8975{
8976 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8977 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 wpt_uint16 usDataOffset = 0;
8982 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8985 wpt_uint8 keyIndex = 0;
8986
8987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8988
8989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 -------------------------------------------------------------------------*/
8992 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8993 ( NULL == pEventData->pCBfnc ))
8994 {
8995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 }
9000
9001 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9002 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9003 /*-------------------------------------------------------------------------
9004 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 -------------------------------------------------------------------------*/
9007 wpalMutexAcquire(&pWDICtx->wptMutex);
9008
9009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9013 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9014 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009015
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 {
9018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9020 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009021
9022 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 }
9025
9026 /*------------------------------------------------------------------------
9027 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 ------------------------------------------------------------------------*/
9030 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9031 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9033 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9034 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009035
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 }
9040
9041
9042 wpalMutexRelease(&pWDICtx->wptMutex);
9043 /*-----------------------------------------------------------------------
9044 Get message buffer
9045 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009046 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9048 &pSendBuffer, &usDataOffset, &usSendSize))||
9049 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9050 {
9051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009052 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 }
9057
9058 /*-----------------------------------------------------------------------
9059 Copy the Key parameters into the HAL message
9060 -----------------------------------------------------------------------*/
9061
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009063
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9066
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9069
9070 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9071 keyIndex++)
9072 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9075 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9076 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9077 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9078 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
9079 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
9086 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 WDI_MAX_KEY_LENGTH);
9089 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009090
9091 wpalMemoryCopy( pSendBuffer+usDataOffset,
9092 &halSetBssKeyReqMsg.setBssKeyParams,
9093 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009094
9095 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009097
9098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9102 wdiSetBSSKeyRspCb, pEventData->pUserData,
9103 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009104
9105}/*WDI_ProcessSetBssKeyReq*/
9106
9107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009110
9111 @param pWDICtx: pointer to the WLAN DAL context
9112 pEventData: pointer to the event information structure
9113
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 @see
9115 @return Result of the function call
9116*/
9117WDI_Status
9118WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009119(
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 WDI_ControlBlockType* pWDICtx,
9121 WDI_EventInfoType* pEventData
9122)
9123{
9124 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9125 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 wpt_uint16 usDataOffset = 0;
9130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9134
9135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 -------------------------------------------------------------------------*/
9138 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9139 ( NULL == pEventData->pCBfnc ))
9140 {
9141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 }
9146
9147 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9148 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9149 /*-------------------------------------------------------------------------
9150 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -------------------------------------------------------------------------*/
9153 wpalMutexAcquire(&pWDICtx->wptMutex);
9154
9155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9159 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9160 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009161
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 {
9164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9166 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009167
9168 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 }
9171
9172 /*------------------------------------------------------------------------
9173 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 ------------------------------------------------------------------------*/
9176 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9177 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9179 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9180 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009181
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 }
9186
9187
9188 wpalMutexRelease(&pWDICtx->wptMutex);
9189
9190 /*-----------------------------------------------------------------------
9191 Get message buffer
9192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9195 &pSendBuffer, &usDataOffset, &usSendSize))||
9196 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9197 {
9198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009199 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 }
9204 /*-----------------------------------------------------------------------
9205 Copy the Key parameters into the HAL message
9206 -----------------------------------------------------------------------*/
9207 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9208
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9211
9212 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9213
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9216
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 wpalMemoryCopy( pSendBuffer+usDataOffset,
9218 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9219 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009220
9221 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009223
9224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009230}/*WDI_ProcessRemoveBssKeyReq*/
9231
9232/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009235
9236 @param pWDICtx: pointer to the WLAN DAL context
9237 pEventData: pointer to the event information structure
9238
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 @see
9240 @return Result of the function call
9241*/
9242WDI_Status
9243WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009244(
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 WDI_ControlBlockType* pWDICtx,
9246 WDI_EventInfoType* pEventData
9247)
9248{
9249 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9250 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9251 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 wpt_uint16 usDataOffset = 0;
9254 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9259 wpt_uint8 keyIndex = 0;
9260
9261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9262
9263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 -------------------------------------------------------------------------*/
9266 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9267 ( NULL == pEventData->pCBfnc ))
9268 {
9269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 }
9274
9275 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9276 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9277 /*-------------------------------------------------------------------------
9278 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 -------------------------------------------------------------------------*/
9281 wpalMutexAcquire(&pWDICtx->wptMutex);
9282
9283 /*------------------------------------------------------------------------
9284 Find the BSS for which the request is made and identify WDI session
9285 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9287 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 &macBSSID))
9289 {
9290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009291 "This station does not exist in the WDI Station Table %d",
9292 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 }
9296
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9298 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9301 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9302 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009303
9304 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009307
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 /*------------------------------------------------------------------------
9309 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 ------------------------------------------------------------------------*/
9312 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9313 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9315 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9316 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009317
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
9322
9323
9324 wpalMutexRelease(&pWDICtx->wptMutex);
9325 /*-----------------------------------------------------------------------
9326 Get message buffer
9327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9330 &pSendBuffer, &usDataOffset, &usSendSize))||
9331 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9332 {
9333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009334 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 }
9339 /*-----------------------------------------------------------------------
9340 Copy the STA Key parameters into the HAL message
9341 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9344
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9347
9348 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9349
9350 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9351
9352 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9353
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9355 keyIndex++)
9356 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9359 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9360 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9361 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9362 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9363 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9370 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 WDI_MAX_KEY_LENGTH);
9373 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009374
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 wpalMemoryCopy( pSendBuffer+usDataOffset,
9376 &halSetStaKeyReqMsg.setStaKeyParams,
9377 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009378
9379 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009381
9382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009385 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9386 wdiSetSTAKeyRspCb, pEventData->pUserData,
9387 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009388
9389}/*WDI_ProcessSetSTAKeyReq*/
9390
9391/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009394
9395 @param pWDICtx: pointer to the WLAN DAL context
9396 pEventData: pointer to the event information structure
9397
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 @see
9399 @return Result of the function call
9400*/
9401WDI_Status
9402WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009403(
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 WDI_ControlBlockType* pWDICtx,
9405 WDI_EventInfoType* pEventData
9406)
9407{
9408 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9409 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9410 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 wpt_uint16 usDataOffset = 0;
9413 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 wpt_macAddr macBSSID;
9416 wpt_uint8 ucCurrentBSSSesIdx;
9417 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9419
9420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 -------------------------------------------------------------------------*/
9423 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9424 ( NULL == pEventData->pCBfnc ))
9425 {
9426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 }
9431
9432 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9433 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9434 /*-------------------------------------------------------------------------
9435 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -------------------------------------------------------------------------*/
9438 wpalMutexAcquire(&pWDICtx->wptMutex);
9439
9440 /*------------------------------------------------------------------------
9441 Find the BSS for which the request is made and identify WDI session
9442 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9444 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 &macBSSID))
9446 {
9447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009448 "This station does not exist in the WDI Station Table %d",
9449 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 }
9453
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9455 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9458 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9459 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009460
9461 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009464
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 /*------------------------------------------------------------------------
9466 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 ------------------------------------------------------------------------*/
9469 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9470 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9472 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9473 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009474
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 }
9479
9480
9481
9482 wpalMutexRelease(&pWDICtx->wptMutex);
9483 /*-----------------------------------------------------------------------
9484 Get message buffer
9485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9488 &pSendBuffer, &usDataOffset, &usSendSize))||
9489 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9490 {
9491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009492 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 }
9497
9498 /*-----------------------------------------------------------------------
9499 Copy the Key parameters into the HAL message
9500 -----------------------------------------------------------------------*/
9501
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9504
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9507
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9510
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9513
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 wpalMemoryCopy( pSendBuffer+usDataOffset,
9515 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9516 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009517
9518 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009520
9521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009527
9528}/*WDI_ProcessRemoveSTAKeyReq*/
9529
9530/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009533
9534 @param pWDICtx: pointer to the WLAN DAL context
9535 pEventData: pointer to the event information structure
9536
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 @see
9538 @return Result of the function call
9539*/
9540WDI_Status
9541WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009542(
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 WDI_ControlBlockType* pWDICtx,
9544 WDI_EventInfoType* pEventData
9545)
9546{
9547 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9548 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9549 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 wpt_uint16 usDataOffset = 0;
9552 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9557 wpt_uint8 keyIndex = 0;
9558
9559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9560
9561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 -------------------------------------------------------------------------*/
9564 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9565 ( NULL == pEventData->pCBfnc ))
9566 {
9567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 }
9572
9573 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9574 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9575 /*-------------------------------------------------------------------------
9576 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 -------------------------------------------------------------------------*/
9579 wpalMutexAcquire(&pWDICtx->wptMutex);
9580
9581 /*------------------------------------------------------------------------
9582 Find the BSS for which the request is made and identify WDI session
9583 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9585 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 &macBSSID))
9587 {
9588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009589 "This station does not exist in the WDI Station Table %d",
9590 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 }
9594
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9596 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 {
9598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009599 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009601
9602 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009605
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 /*------------------------------------------------------------------------
9607 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 ------------------------------------------------------------------------*/
9610 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9613 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9614 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 }
9620
9621
9622 wpalMutexRelease(&pWDICtx->wptMutex);
9623 /*-----------------------------------------------------------------------
9624 Get message buffer
9625 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9628 &pSendBuffer, &usDataOffset, &usSendSize))||
9629 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9630 {
9631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009632 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009636 }
9637 /*-----------------------------------------------------------------------
9638 Copy the STA Key parameters into the HAL message
9639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9642
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9645
9646 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9647
9648 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9649
9650 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9651
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9653 keyIndex++)
9654 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9657 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9658 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9659 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9660 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9661 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9668 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 WDI_MAX_KEY_LENGTH);
9671 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009672
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 wpalMemoryCopy( pSendBuffer+usDataOffset,
9674 &halSetStaKeyReqMsg.setStaKeyParams,
9675 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009676
9677 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009679
9680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9684 wdiSetSTAKeyRspCb, pEventData->pUserData,
9685 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009686
9687}/*WDI_ProcessSetSTABcastKeyReq*/
9688
9689/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009692
9693 @param pWDICtx: pointer to the WLAN DAL context
9694 pEventData: pointer to the event information structure
9695
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 @see
9697 @return Result of the function call
9698*/
9699WDI_Status
9700WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009701(
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 WDI_ControlBlockType* pWDICtx,
9703 WDI_EventInfoType* pEventData
9704)
9705{
9706 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9707 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9708 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 wpt_uint16 usDataOffset = 0;
9711 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 wpt_macAddr macBSSID;
9714 wpt_uint8 ucCurrentBSSSesIdx;
9715 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9717
9718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 -------------------------------------------------------------------------*/
9721 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9722 ( NULL == pEventData->pCBfnc ))
9723 {
9724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 }
9729
9730 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9731 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9732 /*-------------------------------------------------------------------------
9733 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 -------------------------------------------------------------------------*/
9736 wpalMutexAcquire(&pWDICtx->wptMutex);
9737
9738 /*------------------------------------------------------------------------
9739 Find the BSS for which the request is made and identify WDI session
9740 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9742 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 &macBSSID))
9744 {
9745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009746 "This station does not exist in the WDI Station Table %d",
9747 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 }
9751
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9753 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9756 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9757 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009758
9759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009762
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 /*------------------------------------------------------------------------
9764 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 ------------------------------------------------------------------------*/
9767 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9768 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9770 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9771 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009772
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 }
9777
9778
9779
9780 wpalMutexRelease(&pWDICtx->wptMutex);
9781 /*-----------------------------------------------------------------------
9782 Get message buffer
9783 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9786 &pSendBuffer, &usDataOffset, &usSendSize))||
9787 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9788 {
9789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009790 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 }
9795
9796 /*-----------------------------------------------------------------------
9797 Copy the Key parameters into the HAL message
9798 -----------------------------------------------------------------------*/
9799
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9802
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9805
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9808
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9811
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 wpalMemoryCopy( pSendBuffer+usDataOffset,
9813 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9814 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009815
9816 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818
9819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009825
9826}/*WDI_ProcessRemoveSTABcastKeyReq*/
9827
9828/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009830==========================================================================*/
9831/**
9832 @brief Process Add TSpec Request function (called when Main FSM
9833 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009834
9835 @param pWDICtx: pointer to the WLAN DAL context
9836 pEventData: pointer to the event information structure
9837
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 @see
9839 @return Result of the function call
9840*/
9841WDI_Status
9842WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009843(
Jeff Johnson295189b2012-06-20 16:38:30 -07009844 WDI_ControlBlockType* pWDICtx,
9845 WDI_EventInfoType* pEventData
9846)
9847{
9848 WDI_AddTSReqParamsType* pwdiAddTSParams;
9849 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009851 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpt_uint16 usDataOffset = 0;
9854 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 wpt_macAddr macBSSID;
9857 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009858
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9860
9861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 -------------------------------------------------------------------------*/
9864 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9865 ( NULL == pEventData->pCBfnc ))
9866 {
9867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 }
9872
9873 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9874 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9875 /*-------------------------------------------------------------------------
9876 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 -------------------------------------------------------------------------*/
9879 wpalMutexAcquire(&pWDICtx->wptMutex);
9880
9881 /*------------------------------------------------------------------------
9882 Find the BSS for which the request is made and identify WDI session
9883 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9885 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 &macBSSID))
9887 {
9888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009889 "This station does not exist in the WDI Station Table %d",
9890 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 }
9894
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9896 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9899 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9900 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009901
9902 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009905
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 /*------------------------------------------------------------------------
9907 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 ------------------------------------------------------------------------*/
9910 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9911 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9913 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9914 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009915
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 }
9920
9921 wpalMutexRelease(&pWDICtx->wptMutex);
9922 /*-----------------------------------------------------------------------
9923 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9927 sizeof(halAddTsParams),
9928 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 &usSendSize))||
9930 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9931 {
9932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009933 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 }
9938
9939 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9940 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9941
9942 //TSPEC IE
9943 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9944 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9975
9976 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9991
9992 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9997
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 wpalMemoryCopy( pSendBuffer+usDataOffset,
9999 &halAddTsParams,
10000 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010001
10002 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010004
10005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010011}/*WDI_ProcessAddTSpecReq*/
10012
10013
10014/**
10015 @brief Process Del TSpec Request function (called when Main FSM
10016 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010017
10018 @param pWDICtx: pointer to the WLAN DAL context
10019 pEventData: pointer to the event information structure
10020
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 @see
10022 @return Result of the function call
10023*/
10024WDI_Status
10025WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010026(
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 WDI_ControlBlockType* pWDICtx,
10028 WDI_EventInfoType* pEventData
10029)
10030{
10031 WDI_DelTSReqParamsType* pwdiDelTSParams;
10032 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 wpt_uint16 usDataOffset = 0;
10037 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10040
10041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 -------------------------------------------------------------------------*/
10044 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10045 ( NULL == pEventData->pCBfnc ))
10046 {
10047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 }
10052
10053 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10054 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10055
10056 /*-------------------------------------------------------------------------
10057 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 -------------------------------------------------------------------------*/
10060 wpalMutexAcquire(&pWDICtx->wptMutex);
10061
10062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010065 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10066 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10067 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010068
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10072 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10073 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10074
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 }
10078
10079 /*------------------------------------------------------------------------
10080 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010082 ------------------------------------------------------------------------*/
10083 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10084 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10086 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10087 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010088
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 }
10093
10094
10095 wpalMutexRelease(&pWDICtx->wptMutex);
10096 /*-----------------------------------------------------------------------
10097 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10102 &pSendBuffer, &usDataOffset, &usSendSize))||
10103 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10104 {
10105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010106 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 }
10111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 wpalMemoryCopy( pSendBuffer+usDataOffset,
10113 &pwdiDelTSParams->wdiDelTSInfo,
10114 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010115
10116 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010118
10119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10123 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010124}/*WDI_ProcessDelTSpecReq*/
10125
10126/**
10127 @brief Process Update EDCA Params Request function (called when
10128 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010129
10130 @param pWDICtx: pointer to the WLAN DAL context
10131 pEventData: pointer to the event information structure
10132
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 @see
10134 @return Result of the function call
10135*/
10136WDI_Status
10137WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010138(
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 WDI_ControlBlockType* pWDICtx,
10140 WDI_EventInfoType* pEventData
10141)
10142{
10143 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10144 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010147 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 wpt_uint16 usDataOffset = 0;
10149 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10152
10153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 -------------------------------------------------------------------------*/
10156 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10157 ( NULL == pEventData->pCBfnc ))
10158 {
10159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 }
10164
10165 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10166 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10167 /*-------------------------------------------------------------------------
10168 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 -------------------------------------------------------------------------*/
10171 wpalMutexAcquire(&pWDICtx->wptMutex);
10172
10173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10177 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10178 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010179
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 {
10182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10184 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010185
10186 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 }
10189
10190 /*------------------------------------------------------------------------
10191 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 ------------------------------------------------------------------------*/
10194 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10195 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10197 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10198 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010199
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 }
10204
10205
10206 wpalMutexRelease(&pWDICtx->wptMutex);
10207 /*-----------------------------------------------------------------------
10208 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10213 &pSendBuffer, &usDataOffset, &usSendSize))||
10214 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10215 {
10216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010217 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 }
10222
Jeff Johnsone7245742012-09-05 17:12:55 -070010223 wpalMemoryCopy( pSendBuffer+usDataOffset,
10224 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10225 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010226
10227 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010229
10230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10234 wdiUpdateEDCARspCb, pEventData->pUserData,
10235 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010236}/*WDI_ProcessUpdateEDCAParamsReq*/
10237
10238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010241
10242 @param pWDICtx: pointer to the WLAN DAL context
10243 pEventData: pointer to the event information structure
10244
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 @see
10246 @return Result of the function call
10247*/
10248WDI_Status
10249WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010250(
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 WDI_ControlBlockType* pWDICtx,
10252 WDI_EventInfoType* pEventData
10253)
10254{
10255 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10256 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 wpt_uint16 usDataOffset = 0;
10261 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 wpt_macAddr macBSSID;
10264
10265 tAddBASessionReqMsg halAddBASessionReq;
10266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10267
10268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 -------------------------------------------------------------------------*/
10271 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10272 ( NULL == pEventData->pCBfnc ))
10273 {
10274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 }
10279
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10284 /*-------------------------------------------------------------------------
10285 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 -------------------------------------------------------------------------*/
10288 wpalMutexAcquire(&pWDICtx->wptMutex);
10289
10290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10294 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 &macBSSID))
10296 {
10297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010298 "This station does not exist in the WDI Station Table %d",
10299 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 }
10303
10304
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010306
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10310 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10311 __func__, MAC_ADDR_ARRAY(macBSSID));
10312
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 }
10316
10317 /*------------------------------------------------------------------------
10318 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 ------------------------------------------------------------------------*/
10321 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10322 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10324 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10325 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010326
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 }
10331
10332
10333 wpalMutexRelease(&pWDICtx->wptMutex);
10334 /*-----------------------------------------------------------------------
10335 Get message buffer
10336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10338 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 sizeof(halAddBASessionReq.addBASessionParams),
10340 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10343 {
10344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010345 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 }
10350
10351 halAddBASessionReq.addBASessionParams.staIdx =
10352 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10353 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10354 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10355 WDI_MAC_ADDR_LEN);
10356 halAddBASessionReq.addBASessionParams.baTID =
10357 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10358 halAddBASessionReq.addBASessionParams.baPolicy =
10359 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10360 halAddBASessionReq.addBASessionParams.baBufferSize =
10361 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10362 halAddBASessionReq.addBASessionParams.baTimeout =
10363 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10364 halAddBASessionReq.addBASessionParams.baSSN =
10365 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10366 halAddBASessionReq.addBASessionParams.baDirection =
10367 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10368
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 wpalMemoryCopy( pSendBuffer+usDataOffset,
10370 &halAddBASessionReq.addBASessionParams,
10371 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010372
10373 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010375
10376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10380 wdiAddBASessionRspCb, pEventData->pUserData,
10381 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010382}/*WDI_ProcessAddBASessionReq*/
10383
10384/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010387
10388 @param pWDICtx: pointer to the WLAN DAL context
10389 pEventData: pointer to the event information structure
10390
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 @see
10392 @return Result of the function call
10393*/
10394WDI_Status
10395WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010396(
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 WDI_ControlBlockType* pWDICtx,
10398 WDI_EventInfoType* pEventData
10399)
10400{
10401 WDI_DelBAReqParamsType* pwdiDelBAParams;
10402 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 wpt_uint16 usDataOffset = 0;
10407 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 wpt_macAddr macBSSID;
10410 tDelBAParams halDelBAparam;
10411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10412
10413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 -------------------------------------------------------------------------*/
10416 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10417 ( NULL == pEventData->pCBfnc ))
10418 {
10419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010423 }
10424
10425 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10426 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10427 /*-------------------------------------------------------------------------
10428 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 -------------------------------------------------------------------------*/
10431 wpalMutexAcquire(&pWDICtx->wptMutex);
10432
10433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10437 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 &macBSSID))
10439 {
10440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010441 "This station does not exist in the WDI Station Table %d",
10442 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 }
10446
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010448
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10452 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10453 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010454
10455 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 }
10458
10459 /*------------------------------------------------------------------------
10460 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 ------------------------------------------------------------------------*/
10463 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10464 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10466 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10467 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010468
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 }
10473
10474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 sizeof(halDelBAparam),
10477 &pSendBuffer, &usDataOffset, &usSendSize))||
10478 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10479 {
10480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010481 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 }
10486
10487 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10488 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10489 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10490
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 wpalMemoryCopy( pSendBuffer+usDataOffset,
10492 &halDelBAparam,
10493 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
10495 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010497
10498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10502 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010503}/*WDI_ProcessDelBAReq*/
10504
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010505#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010506
10507WDI_Status
10508WDI_ProcessTSMStatsReq
10509(
10510 WDI_ControlBlockType* pWDICtx,
10511 WDI_EventInfoType* pEventData
10512)
10513{
10514 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10515 WDI_TsmRspCb wdiTSMRspCb;
10516 wpt_uint8 ucCurrentBSSSesIdx = 0;
10517 WDI_BSSSessionType* pBSSSes = NULL;
10518 wpt_uint8* pSendBuffer = NULL;
10519 wpt_uint16 usDataOffset = 0;
10520 wpt_uint16 usSendSize = 0;
10521 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10522 tTsmStatsParams halTsmStatsReqParams = {0};
10523
10524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10525
10526 /*-------------------------------------------------------------------------
10527 Sanity check
10528 -------------------------------------------------------------------------*/
10529 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10530 ( NULL == pEventData->pCBfnc ))
10531 {
10532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 WDI_ASSERT(0);
10535 return WDI_STATUS_E_FAILURE;
10536 }
10537
10538 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10539 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10540 /*-------------------------------------------------------------------------
10541 Check to see if we are in the middle of an association, if so queue, if
10542 not it means it is free to process request
10543 -------------------------------------------------------------------------*/
10544 wpalMutexAcquire(&pWDICtx->wptMutex);
10545
10546 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10547 if ( NULL == pBSSSes )
10548 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10550 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10551 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010552
10553 wpalMutexRelease(&pWDICtx->wptMutex);
10554 return WDI_STATUS_E_NOT_ALLOWED;
10555 }
10556
10557 /*------------------------------------------------------------------------
10558 Check if this BSS is being currently processed or queued,
10559 if queued - queue the new request as well
10560 ------------------------------------------------------------------------*/
10561 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10562 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010564 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010566
10567 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10568 wpalMutexRelease(&pWDICtx->wptMutex);
10569 return wdiStatus;
10570 }
10571
10572 wpalMutexRelease(&pWDICtx->wptMutex);
10573 /*-----------------------------------------------------------------------
10574 Get message buffer
10575 ! TO DO : proper conversion into the HAL Message Request Format
10576 -----------------------------------------------------------------------*/
10577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10578 sizeof(halTsmStatsReqParams),
10579 &pSendBuffer, &usDataOffset, &usSendSize))||
10580 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10581 {
10582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010583 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 pEventData, pwdiTSMParams, wdiTSMRspCb);
10585 WDI_ASSERT(0);
10586 return WDI_STATUS_E_FAILURE;
10587 }
10588
10589 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10590 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10591 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10592 WDI_MAC_ADDR_LEN);
10593 wpalMemoryCopy( pSendBuffer+usDataOffset,
10594 &halTsmStatsReqParams,
10595 sizeof(halTsmStatsReqParams));
10596
10597 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10598 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10599
10600 /*-------------------------------------------------------------------------
10601 Send TSM Stats Request to HAL
10602 -------------------------------------------------------------------------*/
10603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10604 wdiTSMRspCb, pEventData->pUserData,
10605 WDI_TSM_STATS_RESP);
10606}/*WDI_ProcessTSMStatsReq*/
10607
10608#endif
10609
10610
10611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010614
10615 @param pWDICtx: pointer to the WLAN DAL context
10616 pEventData: pointer to the event information structure
10617
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 @see
10619 @return Result of the function call
10620*/
10621WDI_Status
10622WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010623(
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 WDI_ControlBlockType* pWDICtx,
10625 WDI_EventInfoType* pEventData
10626)
10627{
10628 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10629 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 wpt_uint16 usDataOffset = 0;
10632 wpt_uint16 usSendSize = 0;
10633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10634
10635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 -------------------------------------------------------------------------*/
10638 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10639 ( NULL == pEventData->pCBfnc ))
10640 {
10641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 }
10646
10647 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10648 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10649 /*-----------------------------------------------------------------------
10650 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10655 &pSendBuffer, &usDataOffset, &usSendSize))||
10656 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10657 {
10658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010659 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 }
10664
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 wpalMemoryCopy( pSendBuffer+usDataOffset,
10666 &pwdiFlushAcParams->wdiFlushAcInfo,
10667 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010668
10669 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010671
10672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10676 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010677}/*WDI_ProcessFlushAcReq*/
10678
10679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010682
10683 @param pWDICtx: pointer to the WLAN DAL context
10684 pEventData: pointer to the event information structure
10685
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 @see
10687 @return Result of the function call
10688*/
10689WDI_Status
10690WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010691(
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 WDI_ControlBlockType* pWDICtx,
10693 WDI_EventInfoType* pEventData
10694)
10695{
10696 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10697 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 wpt_uint16 usDataOffset = 0;
10700 wpt_uint16 usSendSize = 0;
10701
10702 tBtAmpEventMsg haltBtAmpEventMsg;
10703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10704
10705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 -------------------------------------------------------------------------*/
10708 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10709 ( NULL == pEventData->pCBfnc ))
10710 {
10711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 }
10716
10717 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10718 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10719 /*-----------------------------------------------------------------------
10720 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10725 &pSendBuffer, &usDataOffset, &usSendSize))||
10726 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10727 {
10728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010729 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 }
10734
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 wpalMemoryCopy( pSendBuffer+usDataOffset,
10738 &haltBtAmpEventMsg.btAmpEventParams,
10739 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010740
10741 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010743
10744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10748 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010749}/*WDI_ProcessBtAmpEventReq*/
10750
10751/**
10752 @brief Process Add STA self Request function (called when Main FSM
10753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010754
10755 @param pWDICtx: pointer to the WLAN DAL context
10756 pEventData: pointer to the event information structure
10757
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 @see
10759 @return Result of the function call
10760*/
10761WDI_Status
10762WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010763(
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 WDI_ControlBlockType* pWDICtx,
10765 WDI_EventInfoType* pEventData
10766)
10767{
10768 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10769 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 wpt_uint16 usDataOffset = 0;
10772 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010773 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10775
10776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 -------------------------------------------------------------------------*/
10779 if (( NULL == pEventData ) ||
10780 ( NULL == pEventData->pEventData) ||
10781 ( NULL == pEventData->pCBfnc))
10782 {
10783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 }
10788
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10793 /*-----------------------------------------------------------------------
10794 Get message buffer
10795 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10797 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010798 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010800 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 {
10802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010803 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 }
10808
10809 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10812
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010814 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10815 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10816 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10817 {
10818 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10819 }
10820 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10821 VOS_P2P_CLIENT_MODE) ||
10822 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10823 VOS_P2P_DEVICE))
10824 {
10825 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10826 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010828 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010829
10830 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010832
10833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10837 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10838 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010839}/*WDI_ProcessAddSTASelfReq*/
10840
10841
10842
10843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010846
10847 @param pWDICtx: pointer to the WLAN DAL context
10848 pEventData: pointer to the event information structure
10849
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 @see
10851 @return Result of the function call
10852*/
10853WDI_Status
10854WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010855(
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 WDI_ControlBlockType* pWDICtx,
10857 WDI_EventInfoType* pEventData
10858)
10859{
10860 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10861 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 wpt_uint16 usDataOffset = 0;
10864 wpt_uint16 usSendSize = 0;
10865 tDelStaSelfParams halSetDelSelfSTAParams;
10866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10867
10868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 -------------------------------------------------------------------------*/
10871 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10872 ( NULL == pEventData->pCBfnc ))
10873 {
10874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 }
10879
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10882 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10883
10884 /*-----------------------------------------------------------------------
10885 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10890 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10893 {
10894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010895 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 }
10900
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10903
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10905 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010906
10907 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909
10910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10914 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010915 WDI_DEL_STA_SELF_RESP);
10916
10917}
10918
Jeff Johnsone7245742012-09-05 17:12:55 -070010919#ifdef FEATURE_OEM_DATA_SUPPORT
10920/**
10921 @brief Process Start Oem Data Request function (called when Main
10922 FSM allows it)
10923
10924 @param pWDICtx: pointer to the WLAN DAL context
10925 pEventData: pointer to the event information structure
10926
10927 @see
10928 @return Result of the function call
10929*/
10930WDI_Status
10931WDI_ProcessStartOemDataReq
10932(
10933 WDI_ControlBlockType* pWDICtx,
10934 WDI_EventInfoType* pEventData
10935)
10936{
10937 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10938 WDI_oemDataRspCb wdiOemDataRspCb;
10939 wpt_uint8* pSendBuffer = NULL;
10940 wpt_uint16 usDataOffset = 0;
10941 wpt_uint16 usSendSize = 0;
10942 wpt_uint16 reqLen;
10943 tStartOemDataReqParams* halStartOemDataReqParams;
10944
10945 /*-------------------------------------------------------------------------
10946 Sanity check
10947 -------------------------------------------------------------------------*/
10948 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10949 ( NULL == pEventData->pCBfnc ))
10950 {
10951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010952 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 WDI_ASSERT(0);
10954 return WDI_STATUS_E_FAILURE;
10955 }
10956
10957 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10958 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10959
10960 /*-----------------------------------------------------------------------
10961 Get message buffer
10962 -----------------------------------------------------------------------*/
10963
10964 reqLen = sizeof(tStartOemDataReqParams);
10965
10966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10967 WDI_START_OEM_DATA_REQ, reqLen,
10968 &pSendBuffer, &usDataOffset, &usSendSize))||
10969 (usSendSize < (usDataOffset + reqLen)))
10970 {
10971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010972 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10974 WDI_ASSERT(0);
10975 return WDI_STATUS_E_FAILURE;
10976 }
10977
10978 //copying WDI OEM DATA REQ PARAMS to shared memory
10979 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10980
10981 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10982 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10983
10984 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10985 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10986
10987 /*-------------------------------------------------------------------------
10988 Send Start Request to HAL
10989 -------------------------------------------------------------------------*/
10990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10991 wdiOemDataRspCb, pEventData->pUserData,
10992 WDI_START_OEM_DATA_RESP);
10993}/*WDI_ProcessStartOemDataReq*/
10994#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010995
10996/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010999
11000 @param pWDICtx: pointer to the WLAN DAL context
11001 pEventData: pointer to the event information structure
11002
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 @see
11004 @return Result of the function call
11005*/
11006WDI_Status
11007WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011008(
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 WDI_ControlBlockType* pWDICtx,
11010 WDI_EventInfoType* pEventData
11011)
11012{
11013 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11014 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 wpt_uint16 usDataOffset = 0;
11017 wpt_uint16 usSendSize = 0;
11018 tHalWlanHostResumeReqParam halResumeReqParams;
11019
11020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11021
11022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 -------------------------------------------------------------------------*/
11025 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11026 ( NULL == pEventData->pCBfnc ))
11027 {
11028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011029 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 }
11033
11034 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11035 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11036
11037 /*-----------------------------------------------------------------------
11038 Get message buffer
11039 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011041 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11042 &pSendBuffer, &usDataOffset, &usSendSize))||
11043 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11044 {
11045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011046 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 }
11051
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011054
11055 wpalMemoryCopy( pSendBuffer+usDataOffset,
11056 &halResumeReqParams,
11057 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011058
11059 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011060 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011061
11062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11066 wdiHostResumeRspCb, pEventData->pUserData,
11067 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011068}/*WDI_ProcessHostResumeReq*/
11069
11070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011073
11074 @param pWDICtx: pointer to the WLAN DAL context
11075 pEventData: pointer to the event information structure
11076
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 @see
11078 @return Result of the function call
11079*/
11080WDI_Status
11081WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011082(
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 WDI_ControlBlockType* pWDICtx,
11084 WDI_EventInfoType* pEventData
11085)
11086{
11087 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11088 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 wpt_uint16 usDataOffset = 0;
11091 wpt_uint16 usSendSize = 0;
11092 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11094
11095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 -------------------------------------------------------------------------*/
11098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11099 ( NULL == pEventData->pCBfnc ))
11100 {
11101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011102 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 }
11106
11107 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11108 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011109
Jeff Johnson295189b2012-06-20 16:38:30 -070011110 /*-----------------------------------------------------------------------
11111 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 sizeof(halTxPerTrackingReqParam),
11116 &pSendBuffer, &usDataOffset, &usSendSize))||
11117 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11118 {
11119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011120 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011125
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11127 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11128 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11129 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011130
11131 wpalMemoryCopy( pSendBuffer+usDataOffset,
11132 &halTxPerTrackingReqParam,
11133 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011134
11135 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011137
11138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11142 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011143}/*WDI_ProcessSetTxPerTrackingReq*/
11144
11145/*=========================================================================
11146 Indications
11147=========================================================================*/
11148
11149/**
11150 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011151
11152 @param pWDICtx: pointer to the WLAN DAL context
11153 pEventData: pointer to the event information structure
11154
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 @see
11156 @return Result of the function call
11157*/
11158WDI_Status
11159WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011160(
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 WDI_ControlBlockType* pWDICtx,
11162 WDI_EventInfoType* pEventData
11163)
11164{
11165 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 wpt_uint16 usDataOffset = 0;
11168 wpt_uint16 usSendSize = 0;
11169 WDI_Status wdiStatus;
11170 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11172
11173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011175 -------------------------------------------------------------------------*/
11176 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11177 {
11178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011179 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 }
11183
11184 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11185
11186 /*-----------------------------------------------------------------------
11187 Get message buffer
11188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11190 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011191 sizeof(halWlanSuspendIndparams),
11192 &pSendBuffer, &usDataOffset, &usSendSize))||
11193 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11194 {
11195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11196 "Unable to get send buffer in Suspend Ind ");
11197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011199 }
11200
11201 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11202 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11203
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011205 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011206
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11208 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011209
11210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 -------------------------------------------------------------------------*/
11213 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011215
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11218}/*WDI_ProcessHostSuspendInd*/
11219
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011220
11221
11222/**
11223 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11224
11225 @param pWDICtx: pointer to the WLAN DAL context
11226 pEventData: pointer to the event information structure
11227
11228 @see
11229 @return Result of the function call
11230*/
11231WDI_Status
11232WDI_ProcessTrafficStatsInd
11233(
11234 WDI_ControlBlockType* pWDICtx,
11235 WDI_EventInfoType* pEventData
11236)
11237{
11238 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11239 wpt_uint8* pSendBuffer = NULL;
11240 wpt_uint16 usDataOffset = 0;
11241 wpt_uint16 usSendSize = 0;
11242 WDI_Status wdiStatus;
11243 tStatsClassBIndParams* pStatsClassBIndParams;
11244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11245
11246 /*-------------------------------------------------------------------------
11247 Sanity check
11248 -------------------------------------------------------------------------*/
11249 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11250 {
11251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11252 "%s: Invalid parameters in Traffic Stats ind",__func__);
11253 WDI_ASSERT(0);
11254 return WDI_STATUS_E_FAILURE;
11255 }
11256
11257 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11258
11259 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11260 {
11261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11262 "%s: Invalid parameters in Traffic Stats ind",__func__);
11263 WDI_ASSERT(0);
11264 return WDI_STATUS_E_FAILURE;
11265 }
11266
11267 /*-----------------------------------------------------------------------
11268 Get message buffer
11269 -----------------------------------------------------------------------*/
11270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11271 WDI_TRAFFIC_STATS_IND,
11272 sizeof(tStatsClassBIndParams),
11273 &pSendBuffer, &usDataOffset, &usSendSize))||
11274 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11275 {
11276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11277 "Unable to get send buffer in Traffic Stats Ind ");
11278 WDI_ASSERT(0);
11279 return WDI_STATUS_E_FAILURE;
11280 }
11281
11282 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11283
11284 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11285
11286 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11287 pTrafficStatsIndParams->pTrafficStats,
11288 pTrafficStatsIndParams->length);
11289
11290 /*-------------------------------------------------------------------------
11291 Send Suspend Request to HAL
11292 -------------------------------------------------------------------------*/
11293 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11294 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11295
11296 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11297 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11298}/*WDI_ProcessTrafficStatsInd*/
11299
Chet Lanctot186b5732013-03-18 10:26:30 -070011300#ifdef WLAN_FEATURE_11W
11301/**
11302 @brief Process Exclude Unencrypted Indications function (called
11303 when Main FSM allows it)
11304
11305 @param pWDICtx: pointer to the WLAN DAL context
11306 pEventData: pointer to the event information structure
11307
11308 @see
11309 @return Result of the function call
11310*/
11311WDI_Status
11312WDI_ProcessExcludeUnencryptInd
11313(
11314 WDI_ControlBlockType* pWDICtx,
11315 WDI_EventInfoType* pEventData
11316)
11317{
11318 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11319 wpt_uint8* pSendBuffer = NULL;
11320 wpt_uint16 usDataOffset = 0;
11321 wpt_uint16 usSendSize = 0;
11322 WDI_Status wdiStatus;
11323 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11325
11326 /*-------------------------------------------------------------------------
11327 Sanity check
11328 -------------------------------------------------------------------------*/
11329 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11330 {
11331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11332 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11333 WDI_ASSERT(0);
11334 return WDI_STATUS_E_FAILURE;
11335 }
11336
11337 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11338
11339 /*-----------------------------------------------------------------------
11340 Get message buffer
11341 -----------------------------------------------------------------------*/
11342 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11343 WDI_EXCLUDE_UNENCRYPTED_IND,
11344 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11345 &pSendBuffer, &usDataOffset, &usSendSize))||
11346 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11347 {
11348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11349 "Unable to get send buffer in Exclude Unencrypted Ind ");
11350 WDI_ASSERT(0);
11351 return WDI_STATUS_E_FAILURE;
11352 }
11353
11354 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11355
11356 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11357
11358 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11359 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11360
11361 /*-------------------------------------------------------------------------
11362 Send Suspend Request to HAL
11363 -------------------------------------------------------------------------*/
11364 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11365 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11366
11367 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11368 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11369}/*WDI_ProcessExcludeUnencryptInd*/
11370#endif
11371
Yue Mab9c86f42013-08-14 15:59:08 -070011372/**
11373 @brief Process Add Periodic Tx Pattern Indication function (called when
11374 Main FSM allows it)
11375
11376 @param pWDICtx: pointer to the WLAN DAL context
11377 pEventData: pointer to the event information structure
11378
11379 @see
11380 @return Result of the function call
11381*/
11382WDI_Status
11383WDI_ProcessAddPeriodicTxPtrnInd
11384(
11385 WDI_ControlBlockType* pWDICtx,
11386 WDI_EventInfoType* pEventData
11387)
11388{
11389 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11390 wpt_uint8* pSendBuffer = NULL;
11391 wpt_uint16 usDataOffset = 0;
11392 wpt_uint16 usSendSize = 0;
11393 WDI_Status wdiStatus;
11394 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11395 wpt_uint8 selfStaIdx = 0;
11396
11397 /*-------------------------------------------------------------------------
11398 Sanity check
11399 -------------------------------------------------------------------------*/
11400 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11401 {
11402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11403 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11404 WDI_ASSERT(0);
11405 return WDI_STATUS_E_FAILURE;
11406 }
11407
11408 pAddPeriodicTxPtrnParams =
11409 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11410
11411 /*------------------------------------------------------------------------
11412 Get message buffer
11413 ------------------------------------------------------------------------*/
11414 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11415 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11416 &pSendBuffer, &usDataOffset, &usSendSize))||
11417 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11418 {
11419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11420 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11421 __func__);
11422 WDI_ASSERT(0);
11423 return WDI_STATUS_E_FAILURE;
11424 }
11425
11426 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11427
11428 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11429 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11430 &selfStaIdx))
11431 {
11432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11433 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011434 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011435
11436 return WDI_STATUS_E_FAILURE;
11437 }
11438
11439 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11440 halAddPeriodicTxPtrn->ucPtrnId =
11441 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11442 halAddPeriodicTxPtrn->usPtrnSize =
11443 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11444 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11445 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11446
11447 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11448 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11449 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11450
11451 /*-------------------------------------------------------------------------
11452 Send Indication to HAL
11453 -------------------------------------------------------------------------*/
11454 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11455 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11456
11457 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11458
11459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11460 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11461
11462 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11463} /* WDI_ProcessAddPeriodicTxPtrnInd */
11464
11465/**
11466 @brief Process Delete Periodic Tx Pattern Indication function (called when
11467 Main FSM allows it)
11468
11469 @param pWDICtx: pointer to the WLAN DAL context
11470 pEventData: pointer to the event information structure
11471
11472 @see
11473 @return Result of the function call
11474*/
11475WDI_Status
11476WDI_ProcessDelPeriodicTxPtrnInd
11477(
11478 WDI_ControlBlockType* pWDICtx,
11479 WDI_EventInfoType* pEventData
11480)
11481{
11482 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11483 wpt_uint8* pSendBuffer = NULL;
11484 wpt_uint16 usDataOffset = 0;
11485 wpt_uint16 usSendSize = 0;
11486 WDI_Status wdiStatus;
11487 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11488 wpt_uint8 selfStaIdx = 0;
11489
11490 /*-------------------------------------------------------------------------
11491 Sanity check
11492 -------------------------------------------------------------------------*/
11493 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11494 {
11495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11496 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11497 WDI_ASSERT(0);
11498 return WDI_STATUS_E_FAILURE;
11499 }
11500
11501 pDelPeriodicTxPtrnParams =
11502 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11503
11504 /*------------------------------------------------------------------------
11505 Get message buffer
11506 ------------------------------------------------------------------------*/
11507 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11508 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11509 &pSendBuffer, &usDataOffset, &usSendSize))||
11510 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11511 {
11512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11513 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11514 __func__);
11515 WDI_ASSERT(0);
11516 return WDI_STATUS_E_FAILURE;
11517 }
11518
11519 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11520
11521 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11522 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11523 &selfStaIdx))
11524 {
11525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11526 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011527 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011528
11529 return WDI_STATUS_E_FAILURE;
11530 }
11531
11532 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11533 halDelPeriodicTxPtrn->uPatternIdBitmap =
11534 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11535
11536 /*-------------------------------------------------------------------------
11537 Send Indication to HAL
11538 -------------------------------------------------------------------------*/
11539 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11540 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11541
11542 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11543
11544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11545 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11546
11547 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11548} /* WDI_ProcessDelPeriodicTxPtrnInd */
11549
Jeff Johnson295189b2012-06-20 16:38:30 -070011550/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011552==========================================================================*/
11553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011556
11557 @param pWDICtx: pointer to the WLAN DAL context
11558 pEventData: pointer to the event information structure
11559
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 @see
11561 @return Result of the function call
11562*/
11563WDI_Status
11564WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011565(
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 WDI_ControlBlockType* pWDICtx,
11567 WDI_EventInfoType* pEventData
11568)
11569{
11570 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11571 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 wpt_uint16 usDataOffset = 0;
11574 wpt_uint16 usSendSize = 0;
11575 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11577
11578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 -------------------------------------------------------------------------*/
11581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11582 ( NULL == pEventData->pCBfnc ))
11583 {
11584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 }
11589
11590 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11591 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11592 /*-----------------------------------------------------------------------
11593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 sizeof(halSwitchChannelReq.switchChannelParams),
11598 &pSendBuffer, &usDataOffset, &usSendSize))||
11599 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11600 {
11601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011602 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 }
11607
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011610#ifndef WLAN_FEATURE_VOWIFI
11611 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11613#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11616
11617#ifdef WLAN_FEATURE_VOWIFI
11618 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11621 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11622 WDI_MAC_ADDR_LEN);
11623 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11624 pwdiSwitchChParams->wdiChInfo.macBSSId,
11625 WDI_MAC_ADDR_LEN);
11626#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 wpalMemoryCopy( pSendBuffer+usDataOffset,
11628 &halSwitchChannelReq.switchChannelParams,
11629 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011630
11631 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011633
11634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11638 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011639}/*WDI_ProcessChannelSwitchReq*/
11640
11641/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011642 @brief Process Channel Switch Request function (called when
11643 Main FSM allows it)
11644
11645 @param pWDICtx: pointer to the WLAN DAL context
11646 pEventData: pointer to the event information structure
11647
11648 @see
11649 @return Result of the function call
11650*/
11651WDI_Status WDI_ProcessChannelSwitchReq_V1
11652(
11653 WDI_ControlBlockType* pWDICtx,
11654 WDI_EventInfoType* pEventData
11655)
11656{
11657 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11658 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11659 wpt_uint8* pSendBuffer = NULL;
11660 wpt_uint16 usDataOffset = 0;
11661 wpt_uint16 usSendSize = 0;
11662 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11664
11665 /*-------------------------------------------------------------------------
11666 Sanity check
11667 -------------------------------------------------------------------------*/
11668 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11669 ( NULL == pEventData->pCBfnc ))
11670 {
11671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11672 "%s: Invalid parameters", __func__);
11673 WDI_ASSERT(0);
11674 return WDI_STATUS_E_FAILURE;
11675 }
11676
11677 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11678 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11679 /*-----------------------------------------------------------------------
11680 Get message buffer
11681 ! TO DO : proper conversion into the HAL Message Request Format
11682 -----------------------------------------------------------------------*/
11683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11684 WDI_CH_SWITCH_REQ_V1,
11685 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11686 &pSendBuffer, &usDataOffset, &usSendSize))||
11687 ( usSendSize < (usDataOffset +
11688 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11689 {
11690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11691 "Unable to get send buffer in channel switch req %p %p %p",
11692 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11693 WDI_ASSERT(0);
11694 return WDI_STATUS_E_FAILURE;
11695 }
11696
11697 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11698 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11699
11700 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11701 pwdiSwitchChParams->wdiChInfo.ucChannel;
11702#ifndef WLAN_FEATURE_VOWIFI
11703 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11704 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11705#endif
11706 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11707 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11708
11709#ifdef WLAN_FEATURE_VOWIFI
11710 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11711 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11712 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11713 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11714 WDI_MAC_ADDR_LEN);
11715 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11716 pwdiSwitchChParams->wdiChInfo.macBSSId,
11717 WDI_MAC_ADDR_LEN);
11718#endif
11719 wpalMemoryCopy( pSendBuffer+usDataOffset,
11720 &halSwitchChannelReq.switchChannelParams_V1,
11721 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11722
11723 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11724 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11725
11726 /*-------------------------------------------------------------------------
11727 Send Switch Channel Request to HAL
11728 -------------------------------------------------------------------------*/
11729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11730 wdiSwitchChRspCb, pEventData->pUserData,
11731 WDI_CH_SWITCH_RESP_V1);
11732}/*WDI_ProcessChannelSwitchReq_V1*/
11733
11734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011737
11738 @param pWDICtx: pointer to the WLAN DAL context
11739 pEventData: pointer to the event information structure
11740
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 @see
11742 @return Result of the function call
11743*/
11744WDI_Status
11745WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011746(
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 WDI_ControlBlockType* pWDICtx,
11748 WDI_EventInfoType* pEventData
11749)
11750{
11751 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11752 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011754 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 wpt_uint16 usDataOffset = 0;
11757 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011759
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 tConfigStaReqMsg halConfigStaReqMsg;
11761 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11763
11764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 -------------------------------------------------------------------------*/
11767 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11768 ( NULL == pEventData->pCBfnc ))
11769 {
11770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 }
11775
11776 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11777 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11778 /*-------------------------------------------------------------------------
11779 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 -------------------------------------------------------------------------*/
11782 wpalMutexAcquire(&pWDICtx->wptMutex);
11783
11784 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11788 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11789 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011790
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11794 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11795 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011796
11797 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 }
11800
11801 /*------------------------------------------------------------------------
11802 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 ------------------------------------------------------------------------*/
11805 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11806 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11808 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11809 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011810
Jeff Johnsone7245742012-09-05 17:12:55 -070011811 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 }
11815
11816 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011817
11818 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11819#ifdef WLAN_FEATURE_11AC
11820 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011821 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 else
11823#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011824 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011825
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 /*-----------------------------------------------------------------------
11827 Get message buffer
11828 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11830 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011833 {
11834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011835 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 }
11840
11841 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 &pwdiConfigSTAParams->wdiReqInfo);
11844
11845 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11846 {
11847 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011848 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011849 WDI_STATableFindStaidByAddr(pWDICtx,
11850 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 {
11853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011854 MAC_ADDRESS_STR
11855 ": This station does not exist in the WDI Station Table",
11856 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011858 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 }
11861 }
11862 else
11863 {
11864 /* Need to fill in the STA Index to invalid, since at this point we have not
11865 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011866 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 }
11868
11869 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011871
Jeff Johnsone7245742012-09-05 17:12:55 -070011872 wpalMemoryCopy( pSendBuffer+usDataOffset,
11873 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011874 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011875
11876 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011878
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11880 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 sizeof(pWDICtx->wdiCachedConfigStaReq));
11882
11883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11887 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011888}/*WDI_ProcessConfigStaReq*/
11889
11890
11891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011894
11895 @param pWDICtx: pointer to the WLAN DAL context
11896 pEventData: pointer to the event information structure
11897
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 @see
11899 @return Result of the function call
11900*/
11901WDI_Status
11902WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011903(
Jeff Johnson295189b2012-06-20 16:38:30 -070011904 WDI_ControlBlockType* pWDICtx,
11905 WDI_EventInfoType* pEventData
11906)
11907{
11908 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11909 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 wpt_uint16 usDataOffset = 0;
11914 wpt_uint16 usSendSize = 0;
11915 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11918
11919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 -------------------------------------------------------------------------*/
11922 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11923 ( NULL == pEventData->pCBfnc ))
11924 {
11925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 }
11930
11931 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11932 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11933 /*-------------------------------------------------------------------------
11934 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 -------------------------------------------------------------------------*/
11937 wpalMutexAcquire(&pWDICtx->wptMutex);
11938
11939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11943 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11944 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011945
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11950 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011951 }
11952 else
11953 {
11954 /*------------------------------------------------------------------------
11955 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 ------------------------------------------------------------------------*/
11958 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11959 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11961 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11962 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11963
11964 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 }
11968 }
11969 /* If the link is set to enter IDLE - the Session allocated for this BSS
11970 will be deleted on the Set Link State response coming from HAL
11971 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11974
11975 wpalMutexRelease(&pWDICtx->wptMutex);
11976 /*-----------------------------------------------------------------------
11977 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011980
11981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 sizeof(halLinkStateReqMsg),
11983 &pSendBuffer, &usDataOffset, &usSendSize))||
11984 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11985 {
11986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011987 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 }
11992
11993 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11994 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11995
11996 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11997 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11998
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12001
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 wpalMemoryCopy( pSendBuffer+usDataOffset,
12003 &halLinkStateReqMsg,
12004 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012005
12006 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012008
12009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012010 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012011 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12013 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012014}/*WDI_ProcessSetLinkStateReq*/
12015
12016
12017/**
12018 @brief Process Get Stats Request function (called when Main FSM
12019 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012020
12021 @param pWDICtx: pointer to the WLAN DAL context
12022 pEventData: pointer to the event information structure
12023
Jeff Johnson295189b2012-06-20 16:38:30 -070012024 @see
12025 @return Result of the function call
12026*/
12027WDI_Status
12028WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012029(
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 WDI_ControlBlockType* pWDICtx,
12031 WDI_EventInfoType* pEventData
12032)
12033{
12034 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12035 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 wpt_uint16 usDataOffset = 0;
12038 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 WDI_BSSSessionType* pBSSSes = NULL;
12041 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 tHalStatsReqMsg halStatsReqMsg;
12044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12045
12046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 -------------------------------------------------------------------------*/
12049 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12050 ( NULL == pEventData->pCBfnc ) )
12051 {
12052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012053 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 }
12057
12058 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12059 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12060
12061 /*-------------------------------------------------------------------------
12062 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 -------------------------------------------------------------------------*/
12065 wpalMutexAcquire(&pWDICtx->wptMutex);
12066
12067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12071 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 &macBSSID))
12073 {
12074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012075 "This station does not exist in the WDI Station Table %d",
12076 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 }
12080
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12082 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12085 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12086 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012087
12088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 }
12091
12092 /*------------------------------------------------------------------------
12093 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012095 ------------------------------------------------------------------------*/
12096 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12099 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12100 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012101
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 }
12106
12107
12108 wpalMutexRelease(&pWDICtx->wptMutex);
12109
12110 /*-----------------------------------------------------------------------
12111 Get message buffer
12112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012113 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 sizeof(halStatsReqMsg.statsReqParams),
12115 &pSendBuffer, &usDataOffset, &usSendSize))||
12116 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12117 {
12118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012119 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 }
12124
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 wpalMemoryCopy( pSendBuffer+usDataOffset,
12130 &halStatsReqMsg.statsReqParams,
12131 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012132
12133 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012135
12136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12140 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012141}/*WDI_ProcessGetStatsReq*/
12142
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012143#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012144/**
12145 @brief Process Get Roam Rssi Request function (called when Main FSM
12146 allows it)
12147
12148 @param pWDICtx: pointer to the WLAN DAL context
12149 pEventData: pointer to the event information structure
12150
12151 @see
12152 @return Result of the function call
12153*/
12154WDI_Status
12155WDI_ProcessGetRoamRssiReq
12156(
12157 WDI_ControlBlockType* pWDICtx,
12158 WDI_EventInfoType* pEventData
12159)
12160{
12161 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12162 WDI_GetStatsRspCb wdiGetStatsRspCb;
12163 wpt_uint8* pSendBuffer = NULL;
12164 wpt_uint16 usDataOffset = 0;
12165 wpt_uint16 usSendSize = 0;
12166 wpt_uint8 ucCurrentBSSSesIdx = 0;
12167 WDI_BSSSessionType* pBSSSes = NULL;
12168 wpt_macAddr macBSSID;
12169 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12170 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12172 /*-------------------------------------------------------------------------
12173 Sanity check
12174 -------------------------------------------------------------------------*/
12175 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12176 ( NULL == pEventData->pCBfnc ) )
12177 {
12178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12179 "%s: Invalid parameters", __func__);
12180 WDI_ASSERT(0);
12181 return WDI_STATUS_E_FAILURE;
12182 }
12183
12184 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12185 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12186
12187 /*-------------------------------------------------------------------------
12188 Check to see if we are in the middle of an association, if so queue, if
12189 not it means it is free to process request
12190 -------------------------------------------------------------------------*/
12191 wpalMutexAcquire(&pWDICtx->wptMutex);
12192
12193 /*------------------------------------------------------------------------
12194 Find the BSS for which the request is made
12195 ------------------------------------------------------------------------*/
12196 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12197 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12198 &macBSSID))
12199 {
12200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012201 "This station does not exist in the WDI Station Table %d",
12202 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012203 wpalMutexRelease(&pWDICtx->wptMutex);
12204 return WDI_STATUS_E_FAILURE;
12205 }
12206
12207 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12208 if ( NULL == pBSSSes )
12209 {
12210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12211 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12212 __func__, MAC_ADDR_ARRAY(macBSSID));
12213
12214 wpalMutexRelease(&pWDICtx->wptMutex);
12215 return WDI_STATUS_E_NOT_ALLOWED;
12216 }
12217
12218 /*------------------------------------------------------------------------
12219 Check if this BSS is being currently processed or queued,
12220 if queued - queue the new request as well
12221 ------------------------------------------------------------------------*/
12222 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12223 {
12224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12225 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12226 __func__, MAC_ADDR_ARRAY(macBSSID));
12227
12228 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12229 wpalMutexRelease(&pWDICtx->wptMutex);
12230 return wdiStatus;
12231 }
12232
12233 wpalMutexRelease(&pWDICtx->wptMutex);
12234
12235 /*-----------------------------------------------------------------------
12236 Get message buffer
12237 -----------------------------------------------------------------------*/
12238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12239 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12240 &pSendBuffer, &usDataOffset, &usSendSize))||
12241 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12242 {
12243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012244 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012245 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12246 WDI_ASSERT(0);
12247 return WDI_STATUS_E_FAILURE;
12248 }
12249
12250 halRssiRoamReqMsg.roamRssiReqParams.staId =
12251 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12252 wpalMemoryCopy( pSendBuffer+usDataOffset,
12253 &halRssiRoamReqMsg.roamRssiReqParams,
12254 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12255
12256 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12257 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12258
12259 /*-------------------------------------------------------------------------
12260 Send Get STA Request to HAL
12261 -------------------------------------------------------------------------*/
12262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12263 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12264}/*WDI_ProcessGetRoamRssiReq*/
12265#endif
12266
Jeff Johnson295189b2012-06-20 16:38:30 -070012267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012268 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012270
12271 @param pWDICtx: pointer to the WLAN DAL context
12272 pEventData: pointer to the event information structure
12273
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 @see
12275 @return Result of the function call
12276*/
12277WDI_Status
12278WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012279(
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 WDI_ControlBlockType* pWDICtx,
12281 WDI_EventInfoType* pEventData
12282)
12283{
12284 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12285 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12286
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 wpt_uint16 usDataOffset = 0;
12289 wpt_uint16 usSendSize = 0;
12290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12291
12292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 -------------------------------------------------------------------------*/
12295 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12296 ( NULL == pEventData->pCBfnc))
12297 {
12298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 }
12303
12304 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12305 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12306
12307 /*-----------------------------------------------------------------------
12308 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012309 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 -----------------------------------------------------------------------*/
12311
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12314 &pSendBuffer, &usDataOffset, &usSendSize))||
12315 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12316 {
12317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012318 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 }
12323
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 wpalMemoryCopy( pSendBuffer+usDataOffset,
12325 &pwdiUpdateCfgParams->uConfigBufferLen,
12326 sizeof(wpt_uint32));
12327 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12328 pwdiUpdateCfgParams->pConfigBuffer,
12329 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012330
12331 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333
12334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 -------------------------------------------------------------------------*/
12337
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12339 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012340
12341}/*WDI_ProcessUpdateCfgReq*/
12342
12343
12344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012347
12348 @param pWDICtx: pointer to the WLAN DAL context
12349 pEventData: pointer to the event information structure
12350
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 @see
12352 @return Result of the function call
12353*/
12354WDI_Status
12355WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012356(
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 WDI_ControlBlockType* pWDICtx,
12358 WDI_EventInfoType* pEventData
12359)
12360{
12361 WDI_AddBAReqParamsType* pwdiAddBAParams;
12362 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 wpt_uint16 usDataOffset = 0;
12367 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 wpt_macAddr macBSSID;
12370
12371 tAddBAReqMsg halAddBAReq;
12372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12373
12374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 -------------------------------------------------------------------------*/
12377 if (( NULL == pEventData ) ||
12378 ( NULL == pEventData->pEventData) ||
12379 ( NULL == pEventData->pCBfnc ))
12380 {
12381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 }
12386
12387 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12388 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12389
12390 /*-------------------------------------------------------------------------
12391 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012393 -------------------------------------------------------------------------*/
12394 wpalMutexAcquire(&pWDICtx->wptMutex);
12395
12396 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012397 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12400 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012401 &macBSSID))
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012404 "This station does not exist in the WDI Station Table %d",
12405 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12411 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12414 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12415 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012416
12417 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 }
12420
12421 /*------------------------------------------------------------------------
12422 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 ------------------------------------------------------------------------*/
12425 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12426 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12428 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12429 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012430
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 }
12435
12436
12437 wpalMutexRelease(&pWDICtx->wptMutex);
12438 /*-----------------------------------------------------------------------
12439 Get message buffer
12440 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 sizeof(halAddBAReq.addBAParams),
12443 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12446 {
12447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012448 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 }
12453
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12456 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12457#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12460#endif
12461
Jeff Johnsone7245742012-09-05 17:12:55 -070012462 wpalMemoryCopy( pSendBuffer+usDataOffset,
12463 &halAddBAReq.addBAParams,
12464 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012465
12466 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012468
12469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12473 wdiAddBARspCb, pEventData->pUserData,
12474 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012475}/*WDI_ProcessAddBAReq*/
12476
12477
12478
12479/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012482
12483 @param pWDICtx: pointer to the WLAN DAL context
12484 pEventData: pointer to the event information structure
12485
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 @see
12487 @return Result of the function call
12488*/
12489WDI_Status
12490WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012491(
Jeff Johnson295189b2012-06-20 16:38:30 -070012492 WDI_ControlBlockType* pWDICtx,
12493 WDI_EventInfoType* pEventData
12494)
12495{
12496 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12497 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 wpt_uint16 usDataOffset = 0;
12502 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 wpt_uint16 index;
12505 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012506
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 tTriggerBAReqMsg halTriggerBAReq;
12508 tTriggerBaReqCandidate* halTriggerBACandidate;
12509 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12511
12512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 -------------------------------------------------------------------------*/
12515 if (( NULL == pEventData ) ||
12516 ( NULL == pEventData->pEventData ) ||
12517 ( NULL == pEventData->pCBfnc ))
12518 {
12519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 }
12524
12525 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12526 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12527 /*-------------------------------------------------------------------------
12528 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 -------------------------------------------------------------------------*/
12531 wpalMutexAcquire(&pWDICtx->wptMutex);
12532
12533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12537 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 &macBSSID))
12539 {
12540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012541 "This station does not exist in the WDI Station Table %d",
12542 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012543 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 }
12546
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12548 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12551 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12552 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012553
12554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 }
12557
12558 /*------------------------------------------------------------------------
12559 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 ------------------------------------------------------------------------*/
12562 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12563 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12565 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12566 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012567
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012570 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 }
12572
12573
12574 wpalMutexRelease(&pWDICtx->wptMutex);
12575 /*-----------------------------------------------------------------------
12576 Get message buffer
12577 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12579 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12583 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12588 {
12589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012590 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 }
12595
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12600
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 wpalMemoryCopy( pSendBuffer+usDataOffset,
12602 &halTriggerBAReq.triggerBAParams,
12603 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012604
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12607 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12608 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012609
12610 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 index++)
12612 {
12613 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12614 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12615 halTriggerBACandidate++;
12616 wdiTriggerBACandidate++;
12617 }
12618
12619 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012621
12622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12626 wdiTriggerBARspCb, pEventData->pUserData,
12627 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012628}/*WDI_ProcessTriggerBAReq*/
12629
12630
12631
12632/**
12633 @brief Process Update Beacon Params Request function (called when Main FSM
12634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012635
12636 @param pWDICtx: pointer to the WLAN DAL context
12637 pEventData: pointer to the event information structure
12638
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 @see
12640 @return Result of the function call
12641*/
12642WDI_Status
12643WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012644(
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 WDI_ControlBlockType* pWDICtx,
12646 WDI_EventInfoType* pEventData
12647)
12648{
12649 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12650 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 wpt_uint16 usDataOffset = 0;
12653 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12656
12657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 -------------------------------------------------------------------------*/
12660 if (( NULL == pEventData ) ||
12661 ( NULL == pEventData->pEventData) ||
12662 ( NULL == pEventData->pCBfnc))
12663 {
12664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 }
12669
12670 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12671 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12672 /*-----------------------------------------------------------------------
12673 Get message buffer
12674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 sizeof(halUpdateBeaconParams),
12677 &pSendBuffer, &usDataOffset, &usSendSize))||
12678 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12679 {
12680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012681 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 }
12686
12687 /*BSS Index of the BSS*/
12688 halUpdateBeaconParams.bssIdx =
12689 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12690 /*shortPreamble mode. HAL should update all the STA rates when it
12691 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12694 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12697 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012698 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12700
12701 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12714 halUpdateBeaconParams.fRIFSMode =
12715 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12718
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12720 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012721
12722 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012724
12725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12729 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012730}/*WDI_ProcessUpdateBeaconParamsReq*/
12731
12732
12733
12734/**
12735 @brief Process Send Beacon template Request function (called when Main FSM
12736 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012737
12738 @param pWDICtx: pointer to the WLAN DAL context
12739 pEventData: pointer to the event information structure
12740
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 @see
12742 @return Result of the function call
12743*/
12744WDI_Status
12745WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012746(
Jeff Johnson295189b2012-06-20 16:38:30 -070012747 WDI_ControlBlockType* pWDICtx,
12748 WDI_EventInfoType* pEventData
12749)
12750{
12751 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12752 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 wpt_uint16 usDataOffset = 0;
12755 wpt_uint16 usSendSize = 0;
12756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12757
12758 tSendBeaconReqMsg halSendBeaconReq;
12759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 -------------------------------------------------------------------------*/
12762 if (( NULL == pEventData ) ||
12763 ( NULL == pEventData->pEventData ) ||
12764 ( NULL == pEventData->pCBfnc ))
12765 {
12766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 }
12771
12772 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12773 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12774 /*-----------------------------------------------------------------------
12775 Get message buffer
12776 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 sizeof(halSendBeaconReq.sendBeaconParam),
12779 &pSendBuffer, &usDataOffset, &usSendSize))||
12780 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12781 {
12782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012783 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 }
12788
12789 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12790 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12791 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12794 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12795 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12796 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012799 /* usP2PIeOffset should be atleast greater than timIeOffset */
12800 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12801 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12802 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12803 {
12804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12805 "Invalid usP2PIeOffset %hu",
12806 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12807 WDI_ASSERT(0);
12808 return WDI_STATUS_E_FAILURE;
12809 }
12810
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 wpalMemoryCopy( pSendBuffer+usDataOffset,
12815 &halSendBeaconReq.sendBeaconParam,
12816 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012817
12818 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012820
12821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12825 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012826}/*WDI_ProcessSendBeaconParamsReq*/
12827
12828/**
12829 @brief Process Update Beacon Params Request function (called when Main FSM
12830 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012831
12832 @param pWDICtx: pointer to the WLAN DAL context
12833 pEventData: pointer to the event information structure
12834
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 @see
12836 @return Result of the function call
12837*/
12838WDI_Status
12839WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012840(
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 WDI_ControlBlockType* pWDICtx,
12842 WDI_EventInfoType* pEventData
12843)
12844{
12845 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12846 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 wpt_uint16 usDataOffset = 0;
12849 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12852
12853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 -------------------------------------------------------------------------*/
12856 if (( NULL == pEventData ) ||
12857 ( NULL == pEventData->pEventData) ||
12858 ( NULL == pEventData->pCBfnc))
12859 {
12860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 }
12865
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12870 /*-----------------------------------------------------------------------
12871 Get message buffer
12872 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 sizeof(halUpdateProbeRspTmplParams),
12875 &pSendBuffer, &usDataOffset, &usSendSize))||
12876 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12877 {
12878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012879 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 }
12884
12885 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 WDI_MAC_ADDR_LEN);
12888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12891
12892 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12893 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012895
12896
12897 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12898 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12899 WDI_PROBE_REQ_BITMAP_IE_LEN);
12900
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 wpalMemoryCopy( pSendBuffer+usDataOffset,
12902 &halUpdateProbeRspTmplParams,
12903 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012904
12905 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012907
12908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12912 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12913 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012914}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12915
12916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012919
12920 @param pWDICtx: pointer to the WLAN DAL context
12921 pEventData: pointer to the event information structure
12922
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 @see
12924 @return Result of the function call
12925*/
12926WDI_Status
12927WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012928(
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 WDI_ControlBlockType* pWDICtx,
12930 WDI_EventInfoType* pEventData
12931)
12932{
12933
12934 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12935 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12936
12937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 -------------------------------------------------------------------------*/
12940 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012944 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12945 {
12946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 }
12951
12952 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12955
12956 /*cache the wdi nv request message here if the the first fragment
12957 * To issue the request to HAL for the next fragment */
12958 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12959 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12961 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12963
12964 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12965 pWDICtx->pRspCBUserData = pEventData->pUserData;
12966 }
12967
12968 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12969}
12970
12971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012973 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012974
12975 @param pWDICtx: pointer to the WLAN DAL context
12976 pEventData: pointer to the event information structure
12977
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 @see
12979 @return Result of the function call
12980*/
12981WDI_Status WDI_ProcessSetMaxTxPowerReq
12982(
12983 WDI_ControlBlockType* pWDICtx,
12984 WDI_EventInfoType* pEventData
12985)
12986{
12987 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12988 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 wpt_uint16 usDataOffset = 0;
12991 wpt_uint16 usSendSize = 0;
12992 tSetMaxTxPwrReq halSetMaxTxPower;
12993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12994
12995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 -------------------------------------------------------------------------*/
12998 if (( NULL == pEventData ) ||
12999 ( NULL == pEventData->pEventData ) ||
13000 ( NULL == pEventData->pCBfnc ))
13001 {
13002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13011
13012 /*-----------------------------------------------------------------------
13013 Get message buffer
13014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013015if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013016 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13017 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013019)))
13020 {
13021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013022 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013023 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 }
13027
13028 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13029 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13030 WDI_MAC_ADDR_LEN);
13031
13032 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13033 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13034 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013037
13038 wpalMemoryCopy( pSendBuffer+usDataOffset,
13039 &halSetMaxTxPower.setMaxTxPwrParams,
13040 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013041
13042 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013044
13045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13049 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13050 WDI_SET_MAX_TX_POWER_RESP);
13051
Jeff Johnson295189b2012-06-20 16:38:30 -070013052}
13053
Arif Hussaina5ebce02013-08-09 15:09:58 -070013054/*
13055 @brief Process Set Max Tx Power Per Band Request function (called when Main
13056 FSM allows it)
13057
13058 @param pWDICtx: pointer to the WLAN DAL context
13059 pEventData: pointer to the event information structure
13060
13061 @see
13062 @return Result of the function call
13063*/
13064WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13065(
13066 WDI_ControlBlockType* pWDICtx,
13067 WDI_EventInfoType* pEventData
13068)
13069{
13070 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13071 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13072 wpt_uint8* pSendBuffer = NULL;
13073 wpt_uint16 usDataOffset = 0;
13074 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013075 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013076 WDI_Status rValue = WDI_STATUS_SUCCESS;
13077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13078
13079 /*-------------------------------------------------------------------------
13080 Sanity check
13081 -------------------------------------------------------------------------*/
13082 if (( NULL == pEventData ) ||
13083 ( NULL == pEventData->pEventData ) ||
13084 ( NULL == pEventData->pCBfnc ))
13085 {
13086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13087 "%s: Invalid parameters", __func__);
13088 WDI_ASSERT(0);
13089 return WDI_STATUS_E_FAILURE;
13090 }
13091 pwdiSetMaxTxPowerPerBandParams = \
13092 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13093
13094 wdiSetMaxTxPowerPerBandRspCb = \
13095 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13096
13097 /*-----------------------------------------------------------------------
13098 Get message buffer
13099 -----------------------------------------------------------------------*/
13100
13101 rValue = WDI_GetMessageBuffer(pWDICtx,
13102 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13103 sizeof(tSetMaxTxPwrPerBandParams),
13104 &pSendBuffer, &usDataOffset, &usSendSize);
13105
13106 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13107 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13108 {
13109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13110 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13111 pEventData, pwdiSetMaxTxPowerPerBandParams,
13112 wdiSetMaxTxPowerPerBandRspCb);
13113 WDI_ASSERT(0);
13114 return WDI_STATUS_E_FAILURE;
13115 }
13116
13117
Arif Hussainf8f080c2014-04-03 09:48:36 -070013118 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13119 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013120 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13121
Arif Hussainf8f080c2014-04-03 09:48:36 -070013122 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013123 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13124
13125 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13126 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13127
13128 /*-------------------------------------------------------------------------
13129 Send Set Max Tx Power Per Band Request to HAL
13130 -------------------------------------------------------------------------*/
13131 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13132 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13133 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13134}
13135
schang86c22c42013-03-13 18:41:24 -070013136/**
13137 @brief Process Set Tx Power Request function (called when Main
13138 FSM allows it)
13139
13140 @param pWDICtx: pointer to the WLAN DAL context
13141 pEventData: pointer to the event information structure
13142
13143 @see
13144 @return Result of the function call
13145*/
13146WDI_Status WDI_ProcessSetTxPowerReq
13147(
13148 WDI_ControlBlockType* pWDICtx,
13149 WDI_EventInfoType* pEventData
13150)
13151{
13152 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13153 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13154 wpt_uint8* pSendBuffer = NULL;
13155 wpt_uint16 usDataOffset = 0;
13156 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013157 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13159
13160 /*-------------------------------------------------------------------------
13161 Sanity check
13162 -------------------------------------------------------------------------*/
13163 if (( NULL == pEventData ) ||
13164 ( NULL == pEventData->pEventData ) ||
13165 ( NULL == pEventData->pCBfnc ))
13166 {
13167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13168 "%s: Invalid parameters", __func__);
13169 WDI_ASSERT(0);
13170 return WDI_STATUS_E_FAILURE;
13171 }
13172
13173 pwdiSetTxPowerParams =
13174 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13175 wdiSetTxPowerRspCb =
13176 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13177
13178 /*-----------------------------------------------------------------------
13179 Get message buffer
13180 -----------------------------------------------------------------------*/
13181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13182 sizeof(tSetTxPwrReqParams),
13183 &pSendBuffer, &usDataOffset, &usSendSize))||
13184 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13185 )))
13186 {
13187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013188 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013189 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13190 WDI_ASSERT(0);
13191 return WDI_STATUS_E_FAILURE;
13192 }
13193
Leo Chang9a43db92013-03-25 17:39:58 -070013194 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13195 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13196 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013197
13198 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13199 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13200
13201 /*-------------------------------------------------------------------------
13202 Send Set Tx Power Request to HAL
13203 -------------------------------------------------------------------------*/
13204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13205 wdiSetTxPowerRspCb, pEventData->pUserData,
13206 WDI_SET_TX_POWER_RESP);
13207}
Jeff Johnson295189b2012-06-20 16:38:30 -070013208
13209/**
13210 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13211 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013212
13213 @param pWDICtx: pointer to the WLAN DAL context
13214 pEventData: pointer to the event information structure
13215
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 @see
13217 @return Result of the function call
13218*/
13219WDI_Status
13220WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013221(
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 WDI_ControlBlockType* pWDICtx,
13223 WDI_EventInfoType* pEventData
13224)
13225{
13226 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13227 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 wpt_uint16 usDataOffset = 0;
13230 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13233
13234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 -------------------------------------------------------------------------*/
13237 if (( NULL == pEventData ) ||
13238 ( NULL == pEventData->pEventData) ||
13239 ( NULL == pEventData->pCBfnc))
13240 {
13241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 }
13246
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13251 /*-----------------------------------------------------------------------
13252 Get message buffer
13253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13255 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 sizeof(halSetP2PGONOAParams),
13257 &pSendBuffer, &usDataOffset, &usSendSize))||
13258 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013261 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 }
13266
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13271 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13280
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 wpalMemoryCopy( pSendBuffer+usDataOffset,
13282 &halSetP2PGONOAParams,
13283 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013284
13285 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013287
13288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13292 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13293 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013294}/*WDI_ProcessP2PGONOAReq*/
13295
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013296#ifdef FEATURE_WLAN_TDLS
13297
13298/**
13299 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13300 allows it)
13301
13302 @param pWDICtx: pointer to the WLAN DAL context
13303 pEventData: pointer to the event information structure
13304
13305 @see
13306 @return Result of the function call
13307*/
13308WDI_Status
13309WDI_ProcessTdlsLinkEstablishReq
13310(
13311 WDI_ControlBlockType* pWDICtx,
13312 WDI_EventInfoType* pEventData
13313)
13314{
13315 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13316 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13317 wpt_uint8* pSendBuffer = NULL;
13318 wpt_uint16 usDataOffset = 0;
13319 wpt_uint16 usSendSize = 0;
13320
13321 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13323
13324 /*-------------------------------------------------------------------------
13325 Sanity check
13326 -------------------------------------------------------------------------*/
13327 if (( NULL == pEventData ) ||
13328 ( NULL == pEventData->pEventData) ||
13329 ( NULL == pEventData->pCBfnc))
13330 {
13331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13332 "%s: Invalid parameters", __func__);
13333 WDI_ASSERT(0);
13334 return WDI_STATUS_E_FAILURE;
13335 }
13336 pwdiTDLSLinkEstablishReqParams =
13337 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13338 wdiTDLSLinkEstablishReqRspCb =
13339 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13340
13341
13342 /*-----------------------------------------------------------------------
13343 Get message buffer
13344 -----------------------------------------------------------------------*/
13345 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13346 WDI_TDLS_LINK_ESTABLISH_REQ,
13347 sizeof(halSetTDLSLinkEstablishParams),
13348 &pSendBuffer, &usDataOffset, &usSendSize))||
13349 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13350 {
13351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013352 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013353 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13354 WDI_ASSERT(0);
13355 return WDI_STATUS_E_FAILURE;
13356 }
13357
13358 halSetTDLSLinkEstablishParams.staIdx =
13359 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13360 halSetTDLSLinkEstablishParams.bIsResponder =
13361 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13362 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13363 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13364 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13365 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13366 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13367 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13368 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13369 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13370 halSetTDLSLinkEstablishParams.aAck = 0;
13371 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13372 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13373 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013374 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13375 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13376
13377 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13378 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13379 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13380 halSetTDLSLinkEstablishParams.validChannelsLen =
13381 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13382
13383 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13384 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13385 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13386 halSetTDLSLinkEstablishParams.validOperClassesLen =
13387 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013388
13389 wpalMemoryCopy( pSendBuffer+usDataOffset,
13390 &halSetTDLSLinkEstablishParams,
13391 sizeof(halSetTDLSLinkEstablishParams));
13392
13393 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13394 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13395
13396 /*-------------------------------------------------------------------------
13397 Send Update Probe Resp Template Request to HAL
13398 -------------------------------------------------------------------------*/
13399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13400 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13401 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13402 return 0;
13403}/*WDI_ProcessTdlsLinkEstablishReq*/
13404
13405
13406#endif
13407
Jeff Johnson295189b2012-06-20 16:38:30 -070013408
13409
13410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013413 @param None
13414
13415 @see
13416 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013417*/
13418void
13419WDI_SetPowerStateCb
13420(
13421 wpt_status status,
13422 unsigned int dxePhyAddr,
13423 void *pContext
13424)
13425{
13426 wpt_status wptStatus;
13427 WDI_ControlBlockType *pCB = NULL;
13428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 /*
13430 * Trigger the event to bring the Enter BMPS req function to come
13431 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013432*/
13433 if( NULL != pContext )
13434 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 }
13437 else
13438 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013439 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 pCB = &gWDICb;
13441 }
Mihir Shetea4306052014-03-25 00:02:54 +053013442
13443 if(eWLAN_PAL_STATUS_SUCCESS == status )
13444 {
13445 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13446 }
13447 else
13448 {
13449 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 pCB->dxePhyAddr = dxePhyAddr;
13452 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13453 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13454 {
13455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13456 "Failed to set an event");
13457
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 }
13460 return;
13461}
13462
13463
13464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013467
13468 @param pWDICtx: pointer to the WLAN DAL context
13469 pEventData: pointer to the event information structure
13470
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 @see
13472 @return Result of the function call
13473*/
13474WDI_Status
13475WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013476(
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 WDI_ControlBlockType* pWDICtx,
13478 WDI_EventInfoType* pEventData
13479)
13480{
Jeff Johnson43971f52012-07-17 12:26:56 -070013481 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 wpt_uint16 usDataOffset = 0;
13485 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013486 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13488
13489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013492 if ((NULL == pEventData ) ||
13493 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13494 (NULL == (pwdiEnterImpsReqParams =
13495 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 {
13497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013500 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 }
13502
13503 /*-----------------------------------------------------------------------
13504 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013507 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 0,
13509 &pSendBuffer, &usDataOffset, &usSendSize))||
13510 ( usSendSize < (usDataOffset )))
13511 {
13512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013513 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 pEventData, wdiEnterImpsRspCb);
13515 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013516 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 }
13518
13519 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013520 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13521 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 {
13523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13524 "WDI Init failed to reset an event");
13525
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013527 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 }
13529
13530 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013531 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13532 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013534 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013535 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013536 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013537 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
13539 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013542 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13543 WDI_SET_POWER_STATE_TIMEOUT);
13544 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 {
13546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13547 "WDI Init failed to wait on an event");
13548
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013550 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 }
13552
Mihir Shetea4306052014-03-25 00:02:54 +053013553 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13554 {
13555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13556 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13557
13558 goto fail;
13559 }
13560
13561 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13562 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13567 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013568
13569fail:
13570 // Release the message buffer so we don't leak
13571 wpalMemoryFree(pSendBuffer);
13572
13573failRequest:
13574 //WDA should have failure check to avoid the memory leak
13575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013576}/*WDI_ProcessEnterImpsReq*/
13577
13578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013581
13582 @param pWDICtx: pointer to the WLAN DAL context
13583 pEventData: pointer to the event information structure
13584
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 @see
13586 @return Result of the function call
13587*/
13588WDI_Status
13589WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013590(
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 WDI_ControlBlockType* pWDICtx,
13592 WDI_EventInfoType* pEventData
13593)
13594{
13595 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 wpt_uint16 usDataOffset = 0;
13598 wpt_uint16 usSendSize = 0;
13599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13600
13601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 -------------------------------------------------------------------------*/
13604 if (( NULL == pEventData ) ||
13605 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13606 {
13607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 }
13612
13613 /*-----------------------------------------------------------------------
13614 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013615 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 0,
13619 &pSendBuffer, &usDataOffset, &usSendSize))||
13620 ( usSendSize < (usDataOffset )))
13621 {
13622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013623 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 pEventData, wdiExitImpsRspCb);
13625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 }
13628
13629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13633 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013634}/*WDI_ProcessExitImpsReq*/
13635
13636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013639
13640 @param pWDICtx: pointer to the WLAN DAL context
13641 pEventData: pointer to the event information structure
13642
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 @see
13644 @return Result of the function call
13645*/
13646WDI_Status
13647WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013648(
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 WDI_ControlBlockType* pWDICtx,
13650 WDI_EventInfoType* pEventData
13651)
13652{
13653 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13654 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 wpt_uint16 usDataOffset = 0;
13657 wpt_uint16 usSendSize = 0;
13658 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013659 wpt_status wptStatus;
13660
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13662
13663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 -------------------------------------------------------------------------*/
13666 if (( NULL == pEventData ) ||
13667 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13668 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13669 {
13670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013673 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 }
13675
13676 /*-----------------------------------------------------------------------
13677 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 sizeof(enterBmpsReq),
13682 &pSendBuffer, &usDataOffset, &usSendSize))||
13683 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13684 {
13685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013686 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13688 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013689 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 }
13691
13692 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013693 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13694 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 {
13696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13697 "WDI Init failed to reset an event");
13698
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013700 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 }
13702
13703 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013704 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13705 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13706 {
13707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013708 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013709 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013710 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013711 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013712
13713/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013716 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13717 WDI_SET_POWER_STATE_TIMEOUT);
13718 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 {
13720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13721 "WDI Init failed to wait on an event");
13722
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013724 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 }
13726
13727 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13728
13729 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13730 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13731 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13732 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13733
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013734 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13736 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13737 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13738
13739 wpalMemoryCopy( pSendBuffer+usDataOffset,
13740 &enterBmpsReq,
13741 sizeof(enterBmpsReq));
13742
13743 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013745
13746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013747 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013749 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13750 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013751
13752fail:
13753 // Release the message buffer so we don't leak
13754 wpalMemoryFree(pSendBuffer);
13755
13756failRequest:
13757 //WDA should have failure check to avoid the memory leak
13758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013759}/*WDI_ProcessEnterBmpsReq*/
13760
13761/**
13762 @brief Process Exit BMPS Request function (called when Main FSM
13763 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013764
13765 @param pWDICtx: pointer to the WLAN DAL context
13766 pEventData: pointer to the event information structure
13767
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 @see
13769 @return Result of the function call
13770*/
13771WDI_Status
13772WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013773(
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 WDI_ControlBlockType* pWDICtx,
13775 WDI_EventInfoType* pEventData
13776)
13777{
13778 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13779 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 wpt_uint16 usDataOffset = 0;
13782 wpt_uint16 usSendSize = 0;
13783 tHalExitBmpsReqParams exitBmpsReq;
13784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13785
13786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 -------------------------------------------------------------------------*/
13789 if (( NULL == pEventData ) ||
13790 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13791 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13792 {
13793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 }
13798
13799 /*-----------------------------------------------------------------------
13800 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 sizeof(exitBmpsReq),
13805 &pSendBuffer, &usDataOffset, &usSendSize))||
13806 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13807 {
13808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013809 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 }
13814 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13815
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13817
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 wpalMemoryCopy( pSendBuffer+usDataOffset,
13819 &exitBmpsReq,
13820 sizeof(exitBmpsReq));
13821
13822 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013824
13825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13829 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013830}/*WDI_ProcessExitBmpsReq*/
13831
13832/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013835
13836 @param pWDICtx: pointer to the WLAN DAL context
13837 pEventData: pointer to the event information structure
13838
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 @see
13840 @return Result of the function call
13841*/
13842WDI_Status
13843WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013844(
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 WDI_ControlBlockType* pWDICtx,
13846 WDI_EventInfoType* pEventData
13847)
13848{
13849 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13850 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 wpt_uint16 usDataOffset = 0;
13853 wpt_uint16 usSendSize = 0;
13854 tUapsdReqParams enterUapsdReq;
13855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13856
13857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 -------------------------------------------------------------------------*/
13860 if (( NULL == pEventData ) ||
13861 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13862 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13863 {
13864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 }
13869
13870 /*-----------------------------------------------------------------------
13871 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 sizeof(enterUapsdReq),
13876 &pSendBuffer, &usDataOffset, &usSendSize))||
13877 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13878 {
13879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013880 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 }
13885
13886 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13887 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13888 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13889 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13890 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13891 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13892 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13893 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013895
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 wpalMemoryCopy( pSendBuffer+usDataOffset,
13897 &enterUapsdReq,
13898 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013899
13900 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013901 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013902
13903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13907 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013908}/*WDI_ProcessEnterUapsdReq*/
13909
13910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013913
13914 @param pWDICtx: pointer to the WLAN DAL context
13915 pEventData: pointer to the event information structure
13916
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 @see
13918 @return Result of the function call
13919*/
13920WDI_Status
13921WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013922(
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 WDI_ControlBlockType* pWDICtx,
13924 WDI_EventInfoType* pEventData
13925)
13926{
13927 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 wpt_uint16 usDataOffset = 0;
13930 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013931 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13932 wpt_uint8 bssIdx = 0;
13933
Jeff Johnson295189b2012-06-20 16:38:30 -070013934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13935
13936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 -------------------------------------------------------------------------*/
13939 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013940 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13942 {
13943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 }
13948
13949 /*-----------------------------------------------------------------------
13950 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013951 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013954 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013956 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 {
13958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013959 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 pEventData, wdiExitUapsdRspCb);
13961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 }
13964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013965 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13966
13967 wpalMemoryCopy( pSendBuffer+usDataOffset,
13968 &bssIdx,
13969 sizeof(wpt_uint8));
13970
13971 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13972 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13973
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13978 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013979}/*WDI_ProcessExitUapsdReq*/
13980
13981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013984
13985 @param pWDICtx: pointer to the WLAN DAL context
13986 pEventData: pointer to the event information structure
13987
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 @see
13989 @return Result of the function call
13990*/
13991WDI_Status
13992WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013993(
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 WDI_ControlBlockType* pWDICtx,
13995 WDI_EventInfoType* pEventData
13996)
13997{
13998 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13999 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 wpt_uint16 usDataOffset = 0;
14002 wpt_uint16 usSendSize = 0;
14003 tUapsdInfo uapsdAcParamsReq;
14004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14005
14006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 -------------------------------------------------------------------------*/
14009 if (( NULL == pEventData ) ||
14010 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14011 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14012 {
14013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 }
14018
14019 /*-----------------------------------------------------------------------
14020 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 sizeof(uapsdAcParamsReq),
14025 &pSendBuffer, &usDataOffset, &usSendSize))||
14026 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14027 {
14028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014029 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 }
14034
14035 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14036 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14037 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14038 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14039 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14040 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14041
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 wpalMemoryCopy( pSendBuffer+usDataOffset,
14043 &uapsdAcParamsReq,
14044 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014045
14046 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014048
14049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014050 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14053 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014054}/*WDI_ProcessSetUapsdAcParamsReq*/
14055
14056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014059
14060 @param pWDICtx: pointer to the WLAN DAL context
14061 pEventData: pointer to the event information structure
14062
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 @see
14064 @return Result of the function call
14065*/
14066WDI_Status
14067WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014068(
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 WDI_ControlBlockType* pWDICtx,
14070 WDI_EventInfoType* pEventData
14071)
14072{
14073 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14074 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014075 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 wpt_uint16 usDataOffset = 0;
14077 wpt_uint16 usSendSize = 0;
14078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14079
14080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 -------------------------------------------------------------------------*/
14083 if (( NULL == pEventData ) ||
14084 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14085 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14086 {
14087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 }
14092
14093 /*-----------------------------------------------------------------------
14094 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14099 &pSendBuffer, &usDataOffset, &usSendSize))||
14100 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14101 {
14102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014103 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 }
14108
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 wpalMemoryCopy( pSendBuffer+usDataOffset,
14110 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14111 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014112
14113 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014115
14116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14120 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014121}/*WDI_ProcessUpdateUapsdParamsReq*/
14122
14123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014126
14127 @param pWDICtx: pointer to the WLAN DAL context
14128 pEventData: pointer to the event information structure
14129
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 @see
14131 @return Result of the function call
14132*/
14133WDI_Status
14134WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014135(
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 WDI_ControlBlockType* pWDICtx,
14137 WDI_EventInfoType* pEventData
14138)
14139{
14140 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14141 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 wpt_uint16 usDataOffset = 0;
14144 wpt_uint16 usSendSize = 0;
14145 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14146
14147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14148
14149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 -------------------------------------------------------------------------*/
14152 if (( NULL == pEventData ) ||
14153 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14154 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14155 {
14156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 }
14161
14162 /*-----------------------------------------------------------------------
14163 Get message buffer
14164 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014166 sizeof(halRxpFilterParams),
14167 &pSendBuffer, &usDataOffset, &usSendSize))||
14168 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14169 {
14170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014171 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 }
14176
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14181
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 wpalMemoryCopy( pSendBuffer+usDataOffset,
14183 &halRxpFilterParams,
14184 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014185
14186 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014188
14189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14193 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014194}/*WDI_ProcessConfigureRxpFilterReq*/
14195
14196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014197 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014199
14200 @param pWDICtx: pointer to the WLAN DAL context
14201 pEventData: pointer to the event information structure
14202
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 @see
14204 @return Result of the function call
14205*/
14206WDI_Status
14207WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014208(
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 WDI_ControlBlockType* pWDICtx,
14210 WDI_EventInfoType* pEventData
14211)
14212{
14213 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14214 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 wpt_uint16 usDataOffset = 0;
14217 wpt_uint16 usSendSize = 0;
14218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14219
14220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 -------------------------------------------------------------------------*/
14223 if (( NULL == pEventData ) ||
14224 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14225 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14226 {
14227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 }
14232
14233 /*-----------------------------------------------------------------------
14234 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014235 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14239 &pSendBuffer, &usDataOffset, &usSendSize))||
14240 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14241 {
14242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014243 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 }
14248
Jeff Johnsone7245742012-09-05 17:12:55 -070014249 wpalMemoryCopy( pSendBuffer+usDataOffset,
14250 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14251 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14252 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14253 &pwdiBeaconFilterParams->aFilters[0],
14254 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014255
14256 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014258
14259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14263 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014264}/*WDI_ProcessSetBeaconFilterReq*/
14265
14266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014269
14270 @param pWDICtx: pointer to the WLAN DAL context
14271 pEventData: pointer to the event information structure
14272
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 @see
14274 @return Result of the function call
14275*/
14276WDI_Status
14277WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014278(
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 WDI_ControlBlockType* pWDICtx,
14280 WDI_EventInfoType* pEventData
14281)
14282{
14283 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14284 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 wpt_uint16 usDataOffset = 0;
14287 wpt_uint16 usSendSize = 0;
14288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14289
14290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 -------------------------------------------------------------------------*/
14293 if (( NULL == pEventData ) ||
14294 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14295 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14296 {
14297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 }
14302
14303 /*-----------------------------------------------------------------------
14304 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14309 &pSendBuffer, &usDataOffset, &usSendSize))||
14310 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14311 {
14312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014313 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 }
14318
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 wpalMemoryCopy( pSendBuffer+usDataOffset,
14320 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14321 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014322
14323 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325
14326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14330 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014331}
14332
14333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014336
14337 @param pWDICtx: pointer to the WLAN DAL context
14338 pEventData: pointer to the event information structure
14339
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 @see
14341 @return Result of the function call
14342*/
14343WDI_Status
14344WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014345(
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 WDI_ControlBlockType* pWDICtx,
14347 WDI_EventInfoType* pEventData
14348)
14349{
14350 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14351 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014353 wpt_uint16 usDataOffset = 0;
14354 wpt_uint16 usSendSize = 0;
14355 tHalRSSIThresholds rssiThresholdsReq;
14356 WDI_Status ret_status = 0;
14357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14358
14359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 -------------------------------------------------------------------------*/
14362 if (( NULL == pEventData ) ||
14363 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14364 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14365 {
14366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 }
14371
14372 /*-----------------------------------------------------------------------
14373 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 sizeof(rssiThresholdsReq),
14378 &pSendBuffer, &usDataOffset, &usSendSize))||
14379 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14380 {
14381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014382 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 }
14387
Jeff Johnsone7245742012-09-05 17:12:55 -070014388 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014398 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014400 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14408
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 wpalMemoryCopy( pSendBuffer+usDataOffset,
14410 &rssiThresholdsReq,
14411 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014412
14413 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014415
14416 /*-------------------------------------------------------------------------
14417 Send Set threshold req to HAL
14418 -------------------------------------------------------------------------*/
14419 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14420 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14421 {
14422 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14423 // req. Then as a result of processing the threshold cross ind, we trigger
14424 // a Set threshold req, then we need to indicate to WDI that it needs to
14425 // go to busy state as a result of the indication as we sent a req in the
14426 // same WDI context.
14427 // Hence expected state transition is to busy.
14428 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14429 }
14430
14431 return ret_status;
14432}
14433
14434/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014437
14438 @param pWDICtx: pointer to the WLAN DAL context
14439 pEventData: pointer to the event information structure
14440
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 @see
14442 @return Result of the function call
14443*/
14444WDI_Status
14445WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014446(
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 WDI_ControlBlockType* pWDICtx,
14448 WDI_EventInfoType* pEventData
14449)
14450{
14451 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14452 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 wpt_uint16 usDataOffset = 0;
14455 wpt_uint16 usSendSize = 0;
14456 tHalHostOffloadReq hostOffloadParams;
14457 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014458 wpt_uint8 ucCurrentBSSSesIdx = 0;
14459 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014460
14461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14462
14463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 -------------------------------------------------------------------------*/
14466 if (( NULL == pEventData ) ||
14467 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14468 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14469 {
14470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014473 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 }
14475
14476 /*-----------------------------------------------------------------------
14477 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14482 &pSendBuffer, &usDataOffset, &usSendSize))||
14483 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14484 {
14485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014486 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14488 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014489 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 }
14491
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014492 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14493 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14494 &pBSSSes);
14495 if ( NULL == pBSSSes )
14496 {
14497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014498 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14499 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014500 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014501 }
14502
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14504 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014505
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14507 {
14508 // ARP Offload
14509 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14510 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14511 4);
14512 }
14513 else
14514 {
14515 // NS Offload
14516 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14517 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14518 16);
14519
14520#ifdef WLAN_NS_OFFLOAD
14521 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14522 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14523 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14524 16);
14525 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14526 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14527 16);
14528 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14529 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14530 16);
14531 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14532 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14533 16);
14534 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14535 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14536 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014537 nsOffloadParams.srcIPv6AddrValid =
14538 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14539
14540 nsOffloadParams.targetIPv6Addr1Valid =
14541 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14542
14543 nsOffloadParams.targetIPv6Addr2Valid =
14544 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14545
14546 nsOffloadParams.slotIndex =
14547 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014548
Jeff Johnson295189b2012-06-20 16:38:30 -070014549#endif // WLAN_NS_OFFLOAD
14550 }
14551
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014552 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14553
Jeff Johnson295189b2012-06-20 16:38:30 -070014554 // copy hostOffloadParams into pSendBuffer
14555 wpalMemoryCopy( pSendBuffer+usDataOffset,
14556 &hostOffloadParams,
14557 sizeof(hostOffloadParams));
14558
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014559 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014561 // copy nsOffloadParams into pSendBuffer
14562 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 &nsOffloadParams,
14564 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014565 }
14566 else
14567 {
14568#ifdef WLAN_NS_OFFLOAD
14569 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14570 {
14571 // copy nsOffloadParams into pSendBuffer
14572 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14573 &nsOffloadParams,
14574 sizeof(nsOffloadParams));
14575 }
14576#endif
14577 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014578
14579 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014581
14582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14586 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014587
14588fail:
14589 // Release the message buffer so we don't leak
14590 wpalMemoryFree(pSendBuffer);
14591
14592failRequest:
14593 //WDA should have failure check to avoid the memory leak
14594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014595}/*WDI_ProcessHostOffloadReq*/
14596
14597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014600
14601 @param pWDICtx: pointer to the WLAN DAL context
14602 pEventData: pointer to the event information structure
14603
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 @see
14605 @return Result of the function call
14606*/
14607WDI_Status
14608WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014609(
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 WDI_ControlBlockType* pWDICtx,
14611 WDI_EventInfoType* pEventData
14612)
14613{
14614 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14615 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 wpt_uint16 usDataOffset = 0;
14618 wpt_uint16 usSendSize = 0;
14619 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014620 wpt_uint8 ucCurrentBSSSesIdx = 0;
14621 WDI_BSSSessionType* pBSSSes = NULL;
14622
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14624
14625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 -------------------------------------------------------------------------*/
14628 if (( NULL == pEventData ) ||
14629 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14630 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14631 {
14632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14633 "Invalid parameters in Keep Alive req");
14634 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014635 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 }
14637
14638 /*-----------------------------------------------------------------------
14639 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014640 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 sizeof(keepAliveReq),
14644 &pSendBuffer, &usDataOffset, &usSendSize))||
14645 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14646 {
14647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014648 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14650 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014651 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 }
14653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014654 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14655 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14656 &pBSSSes);
14657 if ( NULL == pBSSSes )
14658 {
14659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014660 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014661 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014662 }
14663
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14665 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14666
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014667 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014668
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14670 {
14671 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14672 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14673 HAL_IPV4_ADDR_LEN);
14674 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14675 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 wpalMemoryCopy(keepAliveReq.destMacAddr,
14678 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14679 HAL_MAC_ADDR_LEN);
14680 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014681
14682 wpalMemoryCopy( pSendBuffer+usDataOffset,
14683 &keepAliveReq,
14684 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014685
14686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014687 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014688
14689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014690 "Process keep alive req time period %d",
14691 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014692
14693 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014695
14696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14697 "Sending keep alive req to HAL");
14698
14699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14703 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014704
14705fail:
14706 // Release the message buffer so we don't leak
14707 wpalMemoryFree(pSendBuffer);
14708
14709failRequest:
14710 //WDA should have failure check to avoid the memory leak
14711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014712}/*WDI_ProcessKeepAliveReq*/
14713
14714
14715/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014718
14719 @param pWDICtx: pointer to the WLAN DAL context
14720 pEventData: pointer to the event information structure
14721
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 @see
14723 @return Result of the function call
14724*/
14725WDI_Status
14726WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014727(
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 WDI_ControlBlockType* pWDICtx,
14729 WDI_EventInfoType* pEventData
14730)
14731{
14732 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14733 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 wpt_uint16 usDataOffset = 0;
14736 wpt_uint16 usSendSize = 0;
14737 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014738 wpt_uint8 ucCurrentBSSSesIdx = 0;
14739 WDI_BSSSessionType* pBSSSes = NULL;
14740
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14742
14743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 -------------------------------------------------------------------------*/
14746 if (( NULL == pEventData ) ||
14747 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14748 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014753 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 }
14755
14756 /*-----------------------------------------------------------------------
14757 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 sizeof(wowlAddBcPtrnReq),
14762 &pSendBuffer, &usDataOffset, &usSendSize))||
14763 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14764 {
14765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014766 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14768 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014769 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 }
14771
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014772 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14773 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14774 &pBSSSes);
14775 if ( NULL == pBSSSes )
14776 {
14777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014778 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014779 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014780 }
14781
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14790
14791 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14792 {
14793 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14794 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14795 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14796 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14797 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14798 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14799 }
14800 else
14801 {
14802 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14803 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14804 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14805 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14806 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14807 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14808
14809 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14810 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14811 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14812 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14813 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14814 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14815 }
14816
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014817 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14818
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 wpalMemoryCopy( pSendBuffer+usDataOffset,
14820 &wowlAddBcPtrnReq,
14821 sizeof(wowlAddBcPtrnReq));
14822
14823 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825
14826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14830 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014831fail:
14832 // Release the message buffer so we don't leak
14833 wpalMemoryFree(pSendBuffer);
14834
14835failRequest:
14836 //WDA should have failure check to avoid the memory leak
14837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838}/*WDI_ProcessWowlAddBcPtrnReq*/
14839
14840/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014843
14844 @param pWDICtx: pointer to the WLAN DAL context
14845 pEventData: pointer to the event information structure
14846
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 @see
14848 @return Result of the function call
14849*/
14850WDI_Status
14851WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014852(
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 WDI_ControlBlockType* pWDICtx,
14854 WDI_EventInfoType* pEventData
14855)
14856{
14857 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14858 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014860 wpt_uint16 usDataOffset = 0;
14861 wpt_uint16 usSendSize = 0;
14862 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014863 wpt_uint8 ucCurrentBSSSesIdx = 0;
14864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14866
14867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 -------------------------------------------------------------------------*/
14870 if (( NULL == pEventData ) ||
14871 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14872 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14873 {
14874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014877 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 }
14879
14880 /*-----------------------------------------------------------------------
14881 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 sizeof(wowlDelBcPtrnReq),
14886 &pSendBuffer, &usDataOffset, &usSendSize))||
14887 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14888 {
14889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014890 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14892 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014893 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 }
14895
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014896 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14897 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14898 &pBSSSes);
14899 if ( NULL == pBSSSes )
14900 {
14901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014902 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014903 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014904 }
14905
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014908
14909 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14910
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 wpalMemoryCopy( pSendBuffer+usDataOffset,
14912 &wowlDelBcPtrnReq,
14913 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014914
14915 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014917
14918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14922 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014923
14924fail:
14925 // Release the message buffer so we don't leak
14926 wpalMemoryFree(pSendBuffer);
14927
14928failRequest:
14929 //WDA should have failure check to avoid the memory leak
14930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014931}/*WDI_ProcessWowlDelBcPtrnReq*/
14932
14933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014936
14937 @param pWDICtx: pointer to the WLAN DAL context
14938 pEventData: pointer to the event information structure
14939
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 @see
14941 @return Result of the function call
14942*/
14943WDI_Status
14944WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014945(
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 WDI_ControlBlockType* pWDICtx,
14947 WDI_EventInfoType* pEventData
14948)
14949{
14950 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14951 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 wpt_uint16 usDataOffset = 0;
14954 wpt_uint16 usSendSize = 0;
14955 tHalWowlEnterParams wowlEnterReq;
14956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14957
14958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 -------------------------------------------------------------------------*/
14961 if (( NULL == pEventData ) ||
14962 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14963 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14964 {
14965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 }
14970
14971 /*-----------------------------------------------------------------------
14972 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 sizeof(wowlEnterReq),
14977 &pSendBuffer, &usDataOffset, &usSendSize))||
14978 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14979 {
14980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014981 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 }
14986
Kumar Anandaca924e2013-07-22 14:35:34 -070014987 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14988
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014993 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014995 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014999 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15005
15006#ifdef WLAN_WAKEUP_EVENTS
15007 wowlEnterReq.ucWoWEAPIDRequestEnable =
15008 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15009
15010 wowlEnterReq.ucWoWEAPOL4WayEnable =
15011 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15012
15013 wowlEnterReq.ucWowNetScanOffloadMatch =
15014 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15015
15016 wowlEnterReq.ucWowGTKRekeyError =
15017 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15018
15019 wowlEnterReq.ucWoWBSSConnLoss =
15020 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15021#endif // WLAN_WAKEUP_EVENTS
15022
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015023 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15024
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15026 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15027 sizeof(tSirMacAddr));
15028
Jeff Johnsone7245742012-09-05 17:12:55 -070015029 wpalMemoryCopy( pSendBuffer+usDataOffset,
15030 &wowlEnterReq,
15031 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015032
15033 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015035
15036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15040 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015041}/*WDI_ProcessWowlEnterReq*/
15042
15043/**
15044 @brief Process Wowl exit Request function (called when Main FSM
15045 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015046
15047 @param pWDICtx: pointer to the WLAN DAL context
15048 pEventData: pointer to the event information structure
15049
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 @see
15051 @return Result of the function call
15052*/
15053WDI_Status
15054WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015055(
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 WDI_ControlBlockType* pWDICtx,
15057 WDI_EventInfoType* pEventData
15058)
15059{
15060 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015061 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 wpt_uint16 usDataOffset = 0;
15064 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015065 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15067
15068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 -------------------------------------------------------------------------*/
15071 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15074 {
15075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 }
15080
15081 /*-----------------------------------------------------------------------
15082 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015086 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015088 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 {
15090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015091 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 pEventData, wdiWowlExitCb);
15093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 }
15096
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015097 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15098
15099 wpalMemoryCopy( pSendBuffer+usDataOffset,
15100 &wowlExitparams,
15101 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015103 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15106 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015107}/*WDI_ProcessWowlExitReq*/
15108
15109/**
15110 @brief Process Configure Apps Cpu Wakeup State Request function
15111 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015112
15113 @param pWDICtx: pointer to the WLAN DAL context
15114 pEventData: pointer to the event information structure
15115
Jeff Johnson295189b2012-06-20 16:38:30 -070015116 @see
15117 @return Result of the function call
15118*/
15119WDI_Status
15120WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015121(
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 WDI_ControlBlockType* pWDICtx,
15123 WDI_EventInfoType* pEventData
15124)
15125{
15126 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15127 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 wpt_uint16 usDataOffset = 0;
15130 wpt_uint16 usSendSize = 0;
15131 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15133
15134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 -------------------------------------------------------------------------*/
15137 if (( NULL == pEventData ) ||
15138 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15139 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15140 {
15141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 }
15146
15147 /*-----------------------------------------------------------------------
15148 Get message buffer
15149 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015150 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 sizeof(halCfgAppsCpuWakeupStateReqParams),
15152 &pSendBuffer, &usDataOffset, &usSendSize))||
15153 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15154 {
15155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015156 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 }
15161
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15164
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 wpalMemoryCopy( pSendBuffer+usDataOffset,
15166 &halCfgAppsCpuWakeupStateReqParams,
15167 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015168
15169 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015171
15172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15176 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15177 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015178}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15179
15180#ifdef WLAN_FEATURE_VOWIFI_11R
15181/**
15182 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15183 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015184
15185 @param pWDICtx: pointer to the WLAN DAL context
15186 pEventData: pointer to the event information structure
15187
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 @see
15189 @return Result of the function call
15190*/
15191WDI_Status
15192WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015193(
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 WDI_ControlBlockType* pWDICtx,
15195 WDI_EventInfoType* pEventData
15196)
15197{
15198 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15199 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 wpt_uint16 usDataOffset = 0;
15204 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 wpt_macAddr macBSSID;
15207 tAggrAddTsReq halAggrAddTsReq;
15208 int i;
15209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15210
15211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 -------------------------------------------------------------------------*/
15214 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15215 ( NULL == pEventData->pCBfnc ))
15216 {
15217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 }
15222 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15223 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15224 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15225 /*-------------------------------------------------------------------------
15226 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 -------------------------------------------------------------------------*/
15229 wpalMutexAcquire(&pWDICtx->wptMutex);
15230
15231 /*------------------------------------------------------------------------
15232 Find the BSS for which the request is made and identify WDI session
15233 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15235 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 &macBSSID))
15237 {
15238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015239 "This station does not exist in the WDI Station Table %d",
15240 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 }
15244
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15246 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15249 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15250 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015251
15252 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015255
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 /*------------------------------------------------------------------------
15257 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 ------------------------------------------------------------------------*/
15260 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15261 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15263 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15264 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015265
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 }
15270
15271 wpalMutexRelease(&pWDICtx->wptMutex);
15272 /*-----------------------------------------------------------------------
15273 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 sizeof(tAggrAddTsParams),
15278 &pSendBuffer, &usDataOffset, &usSendSize))||
15279 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15280 {
15281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015282 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 }
15287
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15292
15293 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15294 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15301 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15304 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015305 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15307 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15310 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15313 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15316 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015317 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15319 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15322 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015323 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015327
15328
15329 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015353 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15359 }
15360
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 wpalMemoryCopy( pSendBuffer+usDataOffset,
15362 &halAggrAddTsReq,
15363 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015364
15365 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015367
15368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015374}/*WDI_ProcessAggrAddTSpecReq*/
15375#endif /* WLAN_FEATURE_VOWIFI_11R */
15376
15377/**
15378 @brief Process Shutdown Request function (called when Main FSM
15379 allows it)
15380
15381 @param pWDICtx: pointer to the WLAN DAL context
15382 pEventData: pointer to the event information structure
15383
15384 @see
15385 @return Result of the function call
15386*/
15387WDI_Status
15388WDI_ProcessShutdownReq
15389(
15390 WDI_ControlBlockType* pWDICtx,
15391 WDI_EventInfoType* pEventData
15392 )
15393{
15394 wpt_status wptStatus;
15395
15396
15397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15398
15399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 -------------------------------------------------------------------------*/
15402 if ( NULL == pEventData )
15403 {
15404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 WDI_ASSERT(0);
15407 return WDI_STATUS_E_FAILURE;
15408 }
15409
15410 wpalMutexAcquire(&pWDICtx->wptMutex);
15411
15412
15413 gWDIInitialized = eWLAN_PAL_FALSE;
15414 /*! TO DO: stop the data services */
15415 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15416 {
15417 /*Stop the STA Table !UT- check this logic again
15418 It is safer to do it here than on the response - because a stop is imminent*/
15419 WDI_STATableStop(pWDICtx);
15420
15421 /* Stop Transport Driver, DXE */
15422 WDTS_Stop(pWDICtx);
15423 }
15424
15425 /*Clear all pending request*/
15426 WDI_ClearPendingRequests(pWDICtx);
15427 /* Close Data transport*/
15428 /* FTM mode does not open Data Path */
15429 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15430 {
15431 WDTS_Close(pWDICtx);
15432 }
15433 /*Close the STA Table !UT- check this logic again*/
15434 WDI_STATableClose(pWDICtx);
15435 /*close the PAL */
15436 wptStatus = wpalClose(pWDICtx->pPALContext);
15437 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15438 {
15439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15440 "Failed to wpal Close %d", wptStatus);
15441 WDI_ASSERT(0);
15442 }
15443
15444 /*Transition back to init state*/
15445 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15446
15447 wpalMutexRelease(&pWDICtx->wptMutex);
15448
15449 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015451
15452
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015454}/*WDI_ProcessShutdownReq*/
15455
15456/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015458========================================================================*/
15459
15460/**
15461 @brief Process Start Response function (called when a response
15462 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015463
15464 @param pWDICtx: pointer to the WLAN DAL context
15465 pEventData: pointer to the event information structure
15466
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 @see
15468 @return Result of the function call
15469*/
15470WDI_Status
15471WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015472(
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 WDI_ControlBlockType* pWDICtx,
15474 WDI_EventInfoType* pEventData
15475)
15476{
15477 WDI_StartRspParamsType wdiRspParams;
15478 WDI_StartRspCb wdiStartRspCb = NULL;
15479
15480 tHalMacStartRspParams* startRspParams;
15481
15482#ifndef HAL_SELF_STA_PER_BSS
15483 WDI_AddStaParams wdiAddSTAParam = {0};
15484#endif
15485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15486
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015490 -------------------------------------------------------------------------*/
15491 if (( NULL == pEventData ) ||
15492 ( NULL == pEventData->pEventData) ||
15493 ( NULL == wdiStartRspCb ))
15494 {
15495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 }
15500
15501 /*-------------------------------------------------------------------------
15502 Extract response and send it to UMAC
15503 -------------------------------------------------------------------------*/
15504 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15505 {
15506 // not enough data was received
15507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015508 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 }
15513
15514 /*-------------------------------------------------------------------------
15515 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 -------------------------------------------------------------------------*/
15518 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15519
15520 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15521 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15522 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15523 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15524 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15525 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15526 wdiRspParams.wlanReportedVersion.major =
15527 startRspParams->wcnssWlanVersion.major;
15528 wdiRspParams.wlanReportedVersion.minor =
15529 startRspParams->wcnssWlanVersion.minor;
15530 wdiRspParams.wlanReportedVersion.version =
15531 startRspParams->wcnssWlanVersion.version;
15532 wdiRspParams.wlanReportedVersion.revision =
15533 startRspParams->wcnssWlanVersion.revision;
15534 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15535 startRspParams->wcnssCrmVersionString,
15536 sizeof(wdiRspParams.wcnssSoftwareVersion));
15537 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15538 startRspParams->wcnssWlanVersionString,
15539 sizeof(wdiRspParams.wcnssHardwareVersion));
15540 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15541
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015542 /*Save the HAL Version*/
15543 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15544
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 wpalMutexAcquire(&pWDICtx->wptMutex);
15546 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15547 {
15548 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15549
15550 /*Cache the start response for further use*/
15551 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 sizeof(pWDICtx->wdiCachedStartRspParams));
15554
15555 }
15556 else
15557 {
15558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15559 "Failed to start device with status %s(%d)",
15560 WDI_getHALStatusMsgString(startRspParams->status),
15561 startRspParams->status);
15562
15563 /*Set the expected state transition to stopped - because the start has
15564 failed*/
15565 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15566
15567 wpalMutexRelease(&pWDICtx->wptMutex);
15568
15569 /*Notify UMAC*/
15570 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015571
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015573 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015574
15575 /*Although the response is an error - it was processed by our function
15576 so as far as the caller is concerned this is a succesful reponse processing*/
15577 return WDI_STATUS_SUCCESS;
15578 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015579
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 wpalMutexRelease(&pWDICtx->wptMutex);
15581
15582 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15583 {
15584 /* FTM mode does not need to execute below */
15585 /* Notify UMAC */
15586 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15587 return WDI_STATUS_SUCCESS;
15588 }
15589
15590 /* START the Data transport */
15591 WDTS_startTransport(pWDICtx);
15592
15593 /*Start the STA Table !- check this logic again*/
15594 WDI_STATableStart(pWDICtx);
15595
15596#ifndef HAL_SELF_STA_PER_BSS
15597 /* Store the Self STA Index */
15598 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15599
15600 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15601 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15602 WDI_MAC_ADDR_LEN);
15603
15604 /* At this point add the self-STA */
15605
15606 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15607 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15608 /*! TO DO: wdiAddSTAParam.dpuSig */
15609 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15610 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15611 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15612
15613 //all DPU indices are the same for self STA
15614 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15615 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015616 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15618 WDI_MAC_ADDR_LEN);
15619 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15620 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15621
15622 /* Note: Since we don't get an explicit config STA request for self STA, we
15623 add the self STA upon receiving the Start response message. But the
15624 self STA entry in the table is deleted when WDI gets an explicit delete STA
15625 request */
15626 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15627#endif
15628
15629 /*Notify UMAC*/
15630 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15631
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015633}/*WDI_ProcessStartRsp*/
15634
15635
15636/**
15637 @brief Process Stop Response function (called when a response
15638 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015639
15640 @param pWDICtx: pointer to the WLAN DAL context
15641 pEventData: pointer to the event information structure
15642
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 @see
15644 @return Result of the function call
15645*/
15646WDI_Status
15647WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015648(
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 WDI_ControlBlockType* pWDICtx,
15650 WDI_EventInfoType* pEventData
15651)
15652{
15653 WDI_Status wdiStatus;
15654 WDI_StopRspCb wdiStopRspCb = NULL;
15655
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15658
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 -------------------------------------------------------------------------*/
15663 if (( NULL == pEventData ) ||
15664 ( NULL == pEventData->pEventData) ||
15665 ( NULL == wdiStopRspCb ))
15666 {
15667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 }
15672
15673 /*-------------------------------------------------------------------------
15674 Extract response and send it to UMAC
15675 -------------------------------------------------------------------------*/
15676 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15677 {
15678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015679 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 pEventData->uEventDataSize);
15681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 }
15684
15685 /*-------------------------------------------------------------------------
15686 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15690 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 sizeof(halMacStopRspMsg.stopRspParams));
15692
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015694
15695 wpalMutexAcquire(&pWDICtx->wptMutex);
15696
15697 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 --------------------------------------------------------------------------*/
15700 if ( WDI_STATUS_SUCCESS != wdiStatus )
15701 {
15702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15703 "Failed to stop the device with status %s (%d)",
15704 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15705 halMacStopRspMsg.stopRspParams.status);
15706
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015708 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015709
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015713
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15715
15716 /*Transition now as WDI may get preempted imediately after it sends
15717 up the Stop Response and it will not get to process the state transition
15718 from Main Rsp function*/
15719 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15720 wpalMutexRelease(&pWDICtx->wptMutex);
15721
15722 /*! TO DO: - STOP the Data transport */
15723
15724 /*Notify UMAC*/
15725 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15726
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728}/*WDI_ProcessStopRsp*/
15729
15730/**
15731 @brief Process Close Rsp function (called when a response
15732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015733
15734 @param pWDICtx: pointer to the WLAN DAL context
15735 pEventData: pointer to the event information structure
15736
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 @see
15738 @return Result of the function call
15739*/
15740WDI_Status
15741WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015742(
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 WDI_ControlBlockType* pWDICtx,
15744 WDI_EventInfoType* pEventData
15745)
15746{
15747 /*There is no close response comming from HAL - function just kept for
15748 simmetry */
15749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015751}/*WDI_ProcessCloseRsp*/
15752
15753
15754/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015756============================================================================*/
15757
15758/**
15759 @brief Process Init Scan Rsp function (called when a response
15760 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015761
15762 @param pWDICtx: pointer to the WLAN DAL context
15763 pEventData: pointer to the event information structure
15764
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 @see
15766 @return Result of the function call
15767*/
15768WDI_Status
15769WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015770(
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 WDI_ControlBlockType* pWDICtx,
15772 WDI_EventInfoType* pEventData
15773)
15774{
15775 WDI_Status wdiStatus;
15776 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015778 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15780
15781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 -------------------------------------------------------------------------*/
15784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15785 ( NULL == pEventData->pEventData))
15786 {
15787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 }
15792
15793 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15794 if( NULL == wdiInitScanRspCb)
15795 {
15796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015797 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 }
15801
15802 /*-------------------------------------------------------------------------
15803 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15807 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 sizeof(halInitScanRspMsg.initScanRspParams));
15809
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015811
15812 if ( pWDICtx->bInBmps )
15813 {
15814 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015815 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15816 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015818 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015819 WDI_ASSERT(0);
15820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 }
15822
15823 /*Notify UMAC*/
15824 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15825
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015827}/*WDI_ProcessInitScanRsp*/
15828
15829
15830/**
15831 @brief Process Start Scan Rsp function (called when a response
15832 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015833
15834 @param pWDICtx: pointer to the WLAN DAL context
15835 pEventData: pointer to the event information structure
15836
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 @see
15838 @return Result of the function call
15839*/
15840WDI_Status
15841WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015842(
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 WDI_ControlBlockType* pWDICtx,
15844 WDI_EventInfoType* pEventData
15845)
15846{
15847 WDI_StartScanRspParamsType wdiStartScanParams;
15848 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849
15850 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15852
15853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 -------------------------------------------------------------------------*/
15856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15857 ( NULL == pEventData->pEventData))
15858 {
15859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 }
15864
15865 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15866 if( NULL == wdiStartScanRspCb)
15867 {
15868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015869 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 }
15873
15874 /*-------------------------------------------------------------------------
15875 Extract response and send it to UMAC
15876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15878 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015879 sizeof(halStartScanRspMsg.startScanRspParams));
15880
15881 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15882 halStartScanRspMsg.startScanRspParams.status);
15883#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 halStartScanRspMsg.startScanRspParams.startTSF,
15888 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015889#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015890
15891 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15892 {
15893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15894 "Start scan failed with status %s (%d)",
15895 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15896 halStartScanRspMsg.startScanRspParams.status);
15897 /* send the status to UMAC, don't return from here*/
15898 }
15899
15900 /*Notify UMAC*/
15901 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15902
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015904
15905}/*WDI_ProcessStartScanRsp*/
15906
15907
15908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015911
15912 @param pWDICtx: pointer to the WLAN DAL context
15913 pEventData: pointer to the event information structure
15914
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 @see
15916 @return Result of the function call
15917*/
15918WDI_Status
15919WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015920(
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 WDI_ControlBlockType* pWDICtx,
15922 WDI_EventInfoType* pEventData
15923)
15924{
15925 WDI_Status wdiStatus;
15926 tHalEndScanRspMsg halEndScanRspMsg;
15927 WDI_EndScanRspCb wdiEndScanRspCb;
15928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15929
15930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 -------------------------------------------------------------------------*/
15933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15934 ( NULL == pEventData->pEventData))
15935 {
15936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 }
15941
15942 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15943
15944 /*-------------------------------------------------------------------------
15945 Extract response and send it to UMAC
15946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15948 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 sizeof(halEndScanRspMsg.endScanRspParams));
15950
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015952
15953 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15954 {
15955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15956 "End Scan failed with status %s (%d )",
15957 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15958 halEndScanRspMsg.endScanRspParams.status);
15959 /* send the status to UMAC, don't return from here*/
15960 }
15961
15962 /*Notify UMAC*/
15963 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966}/*WDI_ProcessEndScanRsp*/
15967
15968
15969/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015972
15973 @param pWDICtx: pointer to the WLAN DAL context
15974 pEventData: pointer to the event information structure
15975
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 @see
15977 @return Result of the function call
15978*/
15979WDI_Status
15980WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015981(
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 WDI_ControlBlockType* pWDICtx,
15983 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015984)
Jeff Johnson295189b2012-06-20 16:38:30 -070015985{
15986 WDI_Status wdiStatus;
15987 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015988
15989 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15991
15992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015994 -------------------------------------------------------------------------*/
15995 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15996 ( NULL == pEventData->pEventData))
15997 {
15998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 }
16003
16004 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16005
16006 /*-------------------------------------------------------------------------
16007 Extract response and send it to UMAC
16008 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16010 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16012
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016014
16015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016016 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 halFinishScanRspMsg.finishScanRspParams.status);
16018
16019 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16020 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16021 {
16022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16023 "Finish Scan failed with status %s (%d)",
16024 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16025 halFinishScanRspMsg.finishScanRspParams.status);
16026 /* send the status to UMAC, don't return from here*/
16027 }
16028
16029 /*Notify UMAC*/
16030 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16031
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016033}/*WDI_ProcessFinishScanRsp*/
16034
16035/**
16036 @brief Process Join Response function (called when a response
16037 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016038
16039 @param pWDICtx: pointer to the WLAN DAL context
16040 pEventData: pointer to the event information structure
16041
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 @see
16043 @return Result of the function call
16044*/
16045WDI_Status
16046WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016047(
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 WDI_ControlBlockType* pWDICtx,
16049 WDI_EventInfoType* pEventData
16050)
16051{
16052 WDI_Status wdiStatus;
16053 WDI_JoinRspCb wdiJoinRspCb;
16054 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016055
16056 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16058
16059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 -------------------------------------------------------------------------*/
16062 if (( NULL == pWDICtx ) ||
16063 ( NULL == pWDICtx->pfncRspCB ) ||
16064 ( NULL == pEventData ) ||
16065 ( NULL == pEventData->pEventData))
16066 {
16067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 }
16072
16073 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16074
16075 /*-------------------------------------------------------------------------
16076 Extract response and send it to UMAC
16077 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016078 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16079 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 sizeof(halJoinRspMsg.joinRspParams));
16081
Jeff Johnsone7245742012-09-05 17:12:55 -070016082 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016083
16084 wpalMutexAcquire(&pWDICtx->wptMutex);
16085
16086 /*-----------------------------------------------------------------------
16087 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16092 {
16093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16095 "association no longer in progress %d - mysterious HAL response",
16096 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016097
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 }
16102
16103 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16104
16105 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 -----------------------------------------------------------------------*/
16108 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16109 {
16110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16111 "Join only allowed in Joining state - failure state is %d "
16112 "strange HAL response", pBSSSes->wdiAssocState);
16113
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16115
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 }
16119
16120
16121 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 -----------------------------------------------------------------------*/
16124 if ( WDI_STATUS_SUCCESS != wdiStatus )
16125 {
16126 /*Association was failed by HAL - remove session*/
16127 WDI_DeleteSession(pWDICtx, pBSSSes);
16128
16129 /*Association no longer in progress */
16130 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16131
16132 /*Association no longer in progress - prepare pending assoc for processing*/
16133 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016134
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 }
16136 else
16137 {
16138 /*Transition to state Joining - this may be redundant as we are supposed
16139 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 }
16142
16143 wpalMutexRelease(&pWDICtx->wptMutex);
16144
16145 /*Notify UMAC*/
16146 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16147
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016149}/*WDI_ProcessJoinRsp*/
16150
16151
16152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016153 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016155
16156 @param pWDICtx: pointer to the WLAN DAL context
16157 pEventData: pointer to the event information structure
16158
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 @see
16160 @return Result of the function call
16161*/
16162WDI_Status
16163WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016164(
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 WDI_ControlBlockType* pWDICtx,
16166 WDI_EventInfoType* pEventData
16167)
16168{
16169 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16170 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 WDI_BSSSessionType* pBSSSes = NULL;
16173
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16176 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016177
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16179
16180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 -------------------------------------------------------------------------*/
16183 if (( NULL == pEventData ) ||
16184 ( NULL == pEventData->pEventData))
16185 {
16186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 }
16191
16192 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16193
16194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16198 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 sizeof(halConfigBssRspMsg.configBssRspParams));
16200
16201 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16202 halConfigBssRspMsg.configBssRspParams.status);
16203 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16204 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16207 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016208
Jeff Johnson295189b2012-06-20 16:38:30 -070016209 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016210
16211 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016213
16214 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016216
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016218
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16222 #endif
16223 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16224 halConfigBssRspMsg.configBssRspParams.staMac,
16225 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016226
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 wpalMutexAcquire(&pWDICtx->wptMutex);
16228 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16232 wdiConfigBSSParams.macBSSID,
16233 &pBSSSes);
16234
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 /*-----------------------------------------------------------------------
16236 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 -----------------------------------------------------------------------*/
16239 if ( NULL == pBSSSes )
16240 {
16241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16242 "Association sequence for this BSS does not yet exist "
16243 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016244
16245 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16246
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016250
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 /*Save data for this BSS*/
16252 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16253 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016259 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16264 pBSSSes->bcastStaIdx =
16265 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016266
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016268
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 /*-------------------------------------------------------------------------
16270 Add Peer STA
16271 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16274 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016275
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016277 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016279 wdiAddSTAParam.ucHTCapable =
16280 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16281 wdiAddSTAParam.ucStaType =
16282 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16283
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16286 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016288
16289 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16290 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16291 WDI_MAC_ADDR_LEN);
16292
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016306
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16308 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016309
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16311 /*-------------------------------------------------------------------------
16312 Add Broadcast STA only in AP mode
16313 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016315 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 {
16317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16318 "Add BCAST STA to table for index: %d",
16319 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016320
16321 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016323
Jeff Johnson295189b2012-06-20 16:38:30 -070016324 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16325 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16326 }
16327 wpalMutexRelease(&pWDICtx->wptMutex);
16328 }
16329 else
16330 {
16331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16332 "Config BSS RSP failed with status : %s(%d)",
16333 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016335 halConfigBssRspMsg.configBssRspParams.status);
16336
Jeff Johnsone7245742012-09-05 17:12:55 -070016337
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 /*Association was failed by HAL - remove session*/
16339 WDI_DeleteSession(pWDICtx, pBSSSes);
16340
16341 /*Association no longer in progress */
16342 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16343
16344 /*Association no longer in progress - prepare pending assoc for processing*/
16345 WDI_DequeueAssocRequest(pWDICtx);
16346
16347 }
16348
16349 /*Notify UMAC*/
16350 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16351
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016353}/*WDI_ProcessConfigBSSRsp*/
16354
16355
16356/**
16357 @brief Process Del BSS Response function (called when a response
16358 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016359
16360 @param pWDICtx: pointer to the WLAN DAL context
16361 pEventData: pointer to the event information structure
16362
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 @see
16364 @return Result of the function call
16365*/
16366WDI_Status
16367WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016368(
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 WDI_ControlBlockType* pWDICtx,
16370 WDI_EventInfoType* pEventData
16371)
16372{
16373 WDI_DelBSSRspParamsType wdiDelBSSParams;
16374 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 WDI_BSSSessionType* pBSSSes = NULL;
16377
Jeff Johnsone7245742012-09-05 17:12:55 -070016378 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16380
16381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 -------------------------------------------------------------------------*/
16384 if (( NULL == pEventData ) ||
16385 ( NULL == pEventData->pEventData))
16386 {
16387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016391 }
16392
16393 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16394
16395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016396 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016398 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16399 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 sizeof(halDelBssRspMsg.deleteBssRspParams));
16401
16402
16403 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016404 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016405
16406 wpalMutexAcquire(&pWDICtx->wptMutex);
16407
16408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016409 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016410 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16412 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16413 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016414
16415 /*-----------------------------------------------------------------------
16416 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 -----------------------------------------------------------------------*/
16419 if ( NULL == pBSSSes )
16420 {
16421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16422 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016423 "association no longer in progress - mysterious HAL response");
16424
16425 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16426
16427 wpalMutexRelease(&pWDICtx->wptMutex);
16428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016430
16431 /*Extract BSSID for the response to UMAC*/
16432 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16433 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16434
16435 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16436
16437 /*-----------------------------------------------------------------------
16438 The current session will be deleted
16439 -----------------------------------------------------------------------*/
16440 WDI_DeleteSession(pWDICtx, pBSSSes);
16441
16442
16443 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016444 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16445 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016447 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016448 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016449
16450 /* Delete the STA's in this BSS */
16451 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16452
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 wpalMutexRelease(&pWDICtx->wptMutex);
16454
16455 /*Notify UMAC*/
16456 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16457
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016459}/*WDI_ProcessDelBSSRsp*/
16460
16461/**
16462 @brief Process Post Assoc Rsp function (called when a response
16463 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016464
16465 @param pWDICtx: pointer to the WLAN DAL context
16466 pEventData: pointer to the event information structure
16467
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 @see
16469 @return Result of the function call
16470*/
16471WDI_Status
16472WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016473(
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 WDI_ControlBlockType* pWDICtx,
16475 WDI_EventInfoType* pEventData
16476)
16477{
16478 WDI_PostAssocRspParamsType wdiPostAssocParams;
16479 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16484
16485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 -------------------------------------------------------------------------*/
16488 if (( NULL == pEventData ) ||
16489 ( NULL == pEventData->pEventData))
16490 {
16491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 }
16496
16497 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16498
16499 /*-------------------------------------------------------------------------
16500 Extract response and send it to UMAC
16501 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16503 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 sizeof(halPostAssocRspMsg.postAssocRspParams));
16505
16506 /*Extract the Post Assoc STA Params */
16507
Jeff Johnsone7245742012-09-05 17:12:55 -070016508 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16514
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 wdiPostAssocParams.wdiStatus =
16516 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016517
16518 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16519 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16521 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 WDI_MAC_ADDR_LEN);
16523
16524 /* Extract Post Assoc BSS Params */
16525
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16527 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16528 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016529
16530 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16531 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16534 .macSTA, WDI_MAC_ADDR_LEN);
16535
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16538
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16541
16542 wdiPostAssocParams.bssParams.ucBSSIdx =
16543 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16544
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16547
16548 wpalMutexAcquire(&pWDICtx->wptMutex);
16549
16550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016556
16557 /*-----------------------------------------------------------------------
16558 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016559 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 -----------------------------------------------------------------------*/
16561 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16564 {
16565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16566 "Association sequence for this BSS does not yet exist or "
16567 "association no longer in progress - mysterious HAL response");
16568
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16570
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 }
16574
16575 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 -----------------------------------------------------------------------*/
16578 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16579 {
16580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16581 "Post Assoc not allowed before JOIN - failing request "
16582 "strange HAL response");
16583
Jeff Johnsone7245742012-09-05 17:12:55 -070016584 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16585
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 }
16589
16590 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 -----------------------------------------------------------------------*/
16593 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16594 {
16595 /*Association was failed by HAL - remove session*/
16596 WDI_DeleteSession(pWDICtx, pBSSSes);
16597 }
16598 else
16599 {
16600 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016602
16603 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016604 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016606 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16612
Jeff Johnsone7245742012-09-05 17:12:55 -070016613 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16615 }
16616
16617 /*Association no longer in progress */
16618 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16619
16620 /*Association no longer in progress - prepare pending assoc for processing*/
16621 WDI_DequeueAssocRequest(pWDICtx);
16622
16623 wpalMutexRelease(&pWDICtx->wptMutex);
16624
16625 /*Notify UMAC*/
16626 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16627
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629}/*WDI_ProcessPostAssocRsp*/
16630
16631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016632 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016633 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016634
16635 @param pWDICtx: pointer to the WLAN DAL context
16636 pEventData: pointer to the event information structure
16637
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 @see
16639 @return Result of the function call
16640*/
16641WDI_Status
16642WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016643(
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 WDI_ControlBlockType* pWDICtx,
16645 WDI_EventInfoType* pEventData
16646)
16647{
16648 WDI_DelSTARspParamsType wdiDelSTARsp;
16649 WDI_DelSTARspCb wdiDelSTARspCb;
16650 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16653
16654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 -------------------------------------------------------------------------*/
16657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16658 ( NULL == pEventData->pEventData))
16659 {
16660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 }
16665
16666 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16667
16668 /*-------------------------------------------------------------------------
16669 Extract response and send it to UMAC
16670 -------------------------------------------------------------------------*/
16671 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 sizeof(halDelStaRspMsg.delStaRspParams));
16674
16675 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 wdiDelSTARsp.wdiStatus =
16677 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016678
16679 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16680
16681 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16682 if(staType == WDI_STA_ENTRY_SELF)
16683 {
16684 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16685
16686 /* At this point add the self-STA */
16687
16688 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16689 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16690 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16691
16692#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16693#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16694
16695 //all DPU indices are the same for self STA
16696 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16697 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16698 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16699 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16700 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16701 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016702
16703 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 }
16705 else
16706 {
16707 //Delete the station in the table
16708 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16709 }
16710
16711 /*Notify UMAC*/
16712 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16713
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016715}/*WDI_ProcessDelSTARsp*/
16716
16717
16718/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016719 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016720==========================================================================*/
16721
16722/**
16723 @brief Process Set BSS Key Rsp function (called when a response
16724 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016725
16726 @param pWDICtx: pointer to the WLAN DAL context
16727 pEventData: pointer to the event information structure
16728
Jeff Johnson295189b2012-06-20 16:38:30 -070016729 @see
16730 @return Result of the function call
16731*/
16732WDI_Status
16733WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016734(
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 WDI_ControlBlockType* pWDICtx,
16736 WDI_EventInfoType* pEventData
16737)
16738{
16739 WDI_Status wdiStatus;
16740 eHalStatus halStatus;
16741 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16743
16744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 -------------------------------------------------------------------------*/
16747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16748 ( NULL == pEventData->pEventData))
16749 {
16750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 }
16755
16756 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16757
16758 /*-------------------------------------------------------------------------
16759 Extract response and send it to UMAC
16760 -------------------------------------------------------------------------*/
16761 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016763
16764 if ( eHAL_STATUS_SUCCESS != halStatus )
16765 {
16766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16767 "Set BSS Key failed with status %s (%d)",
16768 WDI_getHALStatusMsgString(halStatus),
16769 halStatus);
16770 /* send the status to UMAC, don't return from here*/
16771 }
16772
16773 /*Notify UMAC*/
16774 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16775
Jeff Johnsone7245742012-09-05 17:12:55 -070016776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016777}/*WDI_ProcessSetBssKeyRsp*/
16778
16779/**
16780 @brief Process Remove BSS Key Rsp function (called when a response
16781 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016782
16783 @param pWDICtx: pointer to the WLAN DAL context
16784 pEventData: pointer to the event information structure
16785
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 @see
16787 @return Result of the function call
16788*/
16789WDI_Status
16790WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016791(
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 WDI_ControlBlockType* pWDICtx,
16793 WDI_EventInfoType* pEventData
16794)
16795{
16796 WDI_Status wdiStatus;
16797 eHalStatus halStatus;
16798 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16800
16801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016803 -------------------------------------------------------------------------*/
16804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16805 ( NULL == pEventData->pEventData))
16806 {
16807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 }
16812
16813 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16814
16815 /*-------------------------------------------------------------------------
16816 Extract response and send it to UMAC
16817 -------------------------------------------------------------------------*/
16818 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016820
16821 if ( eHAL_STATUS_SUCCESS != halStatus )
16822 {
16823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16824 "Remove BSS Key failed with status %s (%d )",
16825 WDI_getHALStatusMsgString(halStatus),
16826 halStatus);
16827 /* send the status to UMAC, don't return from here*/
16828 }
16829
16830 /*Notify UMAC*/
16831 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016834}/*WDI_ProcessSetBssKeyRsp*/
16835
16836
16837/**
16838 @brief Process Set STA Key Rsp function (called when a response
16839 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016840
16841 @param pWDICtx: pointer to the WLAN DAL context
16842 pEventData: pointer to the event information structure
16843
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 @see
16845 @return Result of the function call
16846*/
16847WDI_Status
16848WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016849(
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 WDI_ControlBlockType* pWDICtx,
16851 WDI_EventInfoType* pEventData
16852)
16853{
16854 WDI_Status wdiStatus;
16855 eHalStatus halStatus;
16856 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16858
16859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 -------------------------------------------------------------------------*/
16862 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16863 ( NULL == pEventData->pEventData))
16864 {
16865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 }
16870
16871 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16872
16873 /*-------------------------------------------------------------------------
16874 Extract response and send it to UMAC
16875 -------------------------------------------------------------------------*/
16876 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016878
16879 if ( eHAL_STATUS_SUCCESS != halStatus )
16880 {
16881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16882 "Set STA Key failed with status %s (%d)",
16883 WDI_getHALStatusMsgString(halStatus),
16884 halStatus);
16885 /* send the status to UMAC, don't return from here*/
16886 }
16887
16888 /*Notify UMAC*/
16889 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16890
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016892}/*WDI_ProcessSetSTAKeyRsp*/
16893
16894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016897
16898 @param pWDICtx: pointer to the WLAN DAL context
16899 pEventData: pointer to the event information structure
16900
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 @see
16902 @return Result of the function call
16903*/
16904WDI_Status
16905WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016906(
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 WDI_ControlBlockType* pWDICtx,
16908 WDI_EventInfoType* pEventData
16909)
16910{
16911 WDI_Status wdiStatus;
16912 eHalStatus halStatus;
16913 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16915
16916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 -------------------------------------------------------------------------*/
16919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16920 ( NULL == pEventData->pEventData))
16921 {
16922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 }
16927
16928 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16929
16930 /*-------------------------------------------------------------------------
16931 Extract response and send it to UMAC
16932 -------------------------------------------------------------------------*/
16933 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016935
16936 if ( eHAL_STATUS_SUCCESS != halStatus )
16937 {
16938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16939 "Remove STA Key failed with status %s (%d)",
16940 WDI_getHALStatusMsgString(halStatus),
16941 halStatus);
16942 /* send the status to UMAC, don't return from here*/
16943 }
16944
16945 /*Notify UMAC*/
16946 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16947
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016949}/*WDI_ProcessRemoveStaKeyRsp*/
16950
16951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016954
16955 @param pWDICtx: pointer to the WLAN DAL context
16956 pEventData: pointer to the event information structure
16957
Jeff Johnson295189b2012-06-20 16:38:30 -070016958 @see
16959 @return Result of the function call
16960*/
16961WDI_Status
16962WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016963(
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 WDI_ControlBlockType* pWDICtx,
16965 WDI_EventInfoType* pEventData
16966)
16967{
16968 WDI_Status wdiStatus;
16969 eHalStatus halStatus;
16970 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16972
16973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 -------------------------------------------------------------------------*/
16976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16977 ( NULL == pEventData->pEventData))
16978 {
16979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016983 }
16984
16985 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16986
16987 /*-------------------------------------------------------------------------
16988 Extract response and send it to UMAC
16989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 wpalMemoryCopy( &halStatus,
16991 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 sizeof(halStatus));
16993
Jeff Johnsone7245742012-09-05 17:12:55 -070016994 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016995
16996 if ( eHAL_STATUS_SUCCESS != halStatus )
16997 {
16998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16999 "Set STA Key failed with status %s (%d)",
17000 WDI_getHALStatusMsgString(halStatus),
17001 halStatus);
17002 /* send the status to UMAC, don't return from here*/
17003 }
17004
17005 /*Notify UMAC*/
17006 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17007
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009}/*WDI_ProcessSetSTABcastKeyRsp*/
17010
17011/**
17012 @brief Process Remove STA Bcast Key Rsp function (called when a
17013 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017014
17015 @param pWDICtx: pointer to the WLAN DAL context
17016 pEventData: pointer to the event information structure
17017
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 @see
17019 @return Result of the function call
17020*/
17021WDI_Status
17022WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017023(
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 WDI_ControlBlockType* pWDICtx,
17025 WDI_EventInfoType* pEventData
17026)
17027{
17028 WDI_Status wdiStatus;
17029 eHalStatus halStatus;
17030 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17032
17033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 -------------------------------------------------------------------------*/
17036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17037 ( NULL == pEventData->pEventData))
17038 {
17039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 }
17044
17045 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17046
17047 /*-------------------------------------------------------------------------
17048 Extract response and send it to UMAC
17049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 wpalMemoryCopy( &halStatus,
17051 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 sizeof(halStatus));
17053
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017055
17056 if ( eHAL_STATUS_SUCCESS != halStatus )
17057 {
17058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17059 "Remove STA Key failed with status %s (%d)",
17060 WDI_getHALStatusMsgString(halStatus),
17061 halStatus);
17062 /* send the status to UMAC, don't return from here*/
17063 }
17064
17065 /*Notify UMAC*/
17066 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17067
Jeff Johnsone7245742012-09-05 17:12:55 -070017068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017069}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17070
17071
17072/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017074==========================================================================*/
17075
17076/**
17077 @brief Process Add TSpec Rsp function (called when a response
17078 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017079
17080 @param pWDICtx: pointer to the WLAN DAL context
17081 pEventData: pointer to the event information structure
17082
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 @see
17084 @return Result of the function call
17085*/
17086WDI_Status
17087WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017088(
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 WDI_ControlBlockType* pWDICtx,
17090 WDI_EventInfoType* pEventData
17091)
17092{
17093 WDI_Status wdiStatus;
17094 eHalStatus halStatus;
17095 WDI_AddTsRspCb wdiAddTsRspCb;
17096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17097
17098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 -------------------------------------------------------------------------*/
17101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17102 ( NULL == pEventData->pEventData))
17103 {
17104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 }
17109
17110 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17111
17112 /*-------------------------------------------------------------------------
17113 Extract response and send it to UMAC
17114 -------------------------------------------------------------------------*/
17115 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017117
17118 /*Notify UMAC*/
17119 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17120
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017122}/*WDI_ProcessAddTSpecRsp*/
17123
17124
Sunil Duttbd736ed2014-05-26 21:19:41 +053017125
17126#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17127
17128WDI_Status
17129WDI_ProcessLLStatsSetRsp
17130(
17131 WDI_ControlBlockType* pWDICtx,
17132 WDI_EventInfoType* pEventData
17133)
17134{
17135 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17136
17137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17138 "%s: Enter ", __func__);
17139 /*-------------------------------------------------------------------------
17140 Sanity check
17141 -------------------------------------------------------------------------*/
17142 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17143 ( NULL == pEventData->pEventData))
17144 {
17145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17146 "%s: Invalid parameters", __func__);
17147 WDI_ASSERT(0);
17148 return WDI_STATUS_E_FAILURE;
17149 }
17150
17151 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17152
17153 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17154
17155 return WDI_STATUS_SUCCESS;
17156}
17157
17158WDI_Status
17159WDI_ProcessLLStatsGetRsp
17160(
17161 WDI_ControlBlockType* pWDICtx,
17162 WDI_EventInfoType* pEventData
17163)
17164{
17165 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17166
17167 /*-------------------------------------------------------------------------
17168 Sanity check
17169 -------------------------------------------------------------------------*/
17170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17171 ( NULL == pEventData->pEventData))
17172 {
17173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17174 "%s: Invalid parameters", __func__);
17175 WDI_ASSERT(0);
17176 return WDI_STATUS_E_FAILURE;
17177 }
17178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17179 "%s: Enter ", __func__);
17180
17181 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17182
17183 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17184
17185 return WDI_STATUS_SUCCESS;
17186}
17187
17188WDI_Status
17189WDI_ProcessLLStatsClearRsp
17190(
17191 WDI_ControlBlockType* pWDICtx,
17192 WDI_EventInfoType* pEventData
17193)
17194{
17195 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17196
17197 /*-------------------------------------------------------------------------
17198 Sanity check
17199 -------------------------------------------------------------------------*/
17200 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17201 ( NULL == pEventData->pEventData))
17202 {
17203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17204 "%s: Invalid parameters", __func__);
17205 WDI_ASSERT(0);
17206 return WDI_STATUS_E_FAILURE;
17207 }
17208
17209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17210 "%s: CLEAR RESPONSE CALL BACK", __func__);
17211 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17212
17213 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17214
17215 return WDI_STATUS_SUCCESS;
17216}
17217#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17218
Jeff Johnson295189b2012-06-20 16:38:30 -070017219/**
17220 @brief Process Del TSpec Rsp function (called when a response
17221 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017222
17223 @param pWDICtx: pointer to the WLAN DAL context
17224 pEventData: pointer to the event information structure
17225
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 @see
17227 @return Result of the function call
17228*/
17229WDI_Status
17230WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017231(
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 WDI_ControlBlockType* pWDICtx,
17233 WDI_EventInfoType* pEventData
17234)
17235{
17236 WDI_Status wdiStatus;
17237 eHalStatus halStatus;
17238 WDI_DelTsRspCb wdiDelTsRspCb;
17239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17240
17241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 -------------------------------------------------------------------------*/
17244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17245 ( NULL == pEventData->pEventData))
17246 {
17247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 }
17252
17253 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17254
17255 /*-------------------------------------------------------------------------
17256 Extract response and send it to UMAC
17257 -------------------------------------------------------------------------*/
17258 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260
17261 /*Notify UMAC*/
17262 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17263
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265}/*WDI_ProcessDelTSpecRsp*/
17266
17267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017268 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017269 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017270
17271 @param pWDICtx: pointer to the WLAN DAL context
17272 pEventData: pointer to the event information structure
17273
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 @see
17275 @return Result of the function call
17276*/
17277WDI_Status
17278WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017279(
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 WDI_ControlBlockType* pWDICtx,
17281 WDI_EventInfoType* pEventData
17282)
17283{
17284 WDI_Status wdiStatus;
17285 eHalStatus halStatus;
17286 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17288
17289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 -------------------------------------------------------------------------*/
17292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17293 ( NULL == pEventData->pEventData))
17294 {
17295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017299 }
17300
17301 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17302
17303 /*-------------------------------------------------------------------------
17304 Extract response and send it to UMAC
17305 -------------------------------------------------------------------------*/
17306 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017308
17309 /*Notify UMAC*/
17310 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17311
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017313}/*WDI_ProcessUpdateEDCAParamsRsp*/
17314
17315
17316/**
17317 @brief Process Add BA Rsp function (called when a response
17318 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017319
17320 @param pWDICtx: pointer to the WLAN DAL context
17321 pEventData: pointer to the event information structure
17322
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 @see
17324 @return Result of the function call
17325*/
17326WDI_Status
17327WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017328(
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 WDI_ControlBlockType* pWDICtx,
17330 WDI_EventInfoType* pEventData
17331)
17332{
17333 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17334
17335 tAddBASessionRspParams halBASessionRsp;
17336 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17337
Jeff Johnsone7245742012-09-05 17:12:55 -070017338
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17340
17341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017343 -------------------------------------------------------------------------*/
17344 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17345 ( NULL == pEventData->pEventData))
17346 {
17347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 }
17352
17353 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17354
17355 /*-------------------------------------------------------------------------
17356 Extract response and send it to UMAC
17357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 wpalMemoryCopy( &halBASessionRsp,
17359 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 sizeof(halBASessionRsp));
17361
17362 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17363
Jeff Johnson43971f52012-07-17 12:26:56 -070017364 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 {
17366 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17367 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17368 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17369 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17370 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17371 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17372 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17373 }
17374
17375 /*Notify UMAC*/
17376 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17377
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017379}/*WDI_ProcessAddSessionBARsp*/
17380
17381
17382/**
17383 @brief Process Del BA Rsp function (called when a response
17384 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017385
17386 @param pWDICtx: pointer to the WLAN DAL context
17387 pEventData: pointer to the event information structure
17388
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 @see
17390 @return Result of the function call
17391*/
17392WDI_Status
17393WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017394(
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 WDI_ControlBlockType* pWDICtx,
17396 WDI_EventInfoType* pEventData
17397)
17398{
17399 WDI_Status wdiStatus;
17400 eHalStatus halStatus;
17401 WDI_DelBARspCb wdiDelBARspCb;
17402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17403
17404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 -------------------------------------------------------------------------*/
17407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17408 ( NULL == pEventData->pEventData))
17409 {
17410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 }
17415
17416 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17417
17418 /*-------------------------------------------------------------------------
17419 Extract response and send it to UMAC
17420 -------------------------------------------------------------------------*/
17421 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017423
17424 if ( eHAL_STATUS_SUCCESS == halStatus )
17425 {
17426 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17427 }
17428
17429 /*Notify UMAC*/
17430 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17431
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017433}/*WDI_ProcessDelBARsp*/
17434
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017435#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017436/**
17437 @brief Process TSM Stats Rsp function (called when a response
17438 is being received over the bus from HAL)
17439
17440 @param pWDICtx: pointer to the WLAN DAL context
17441 pEventData: pointer to the event information structure
17442
17443 @see
17444 @return Result of the function call
17445*/
17446WDI_Status
17447WDI_ProcessTsmStatsRsp
17448(
17449 WDI_ControlBlockType* pWDICtx,
17450 WDI_EventInfoType* pEventData
17451)
17452{
17453 WDI_TsmRspCb wdiTsmStatsRspCb;
17454 tTsmStatsRspMsg halTsmStatsRspMsg;
17455 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17457
17458 /*-------------------------------------------------------------------------
17459 Sanity check
17460 -------------------------------------------------------------------------*/
17461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17462 ( NULL == pEventData->pEventData))
17463 {
17464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 WDI_ASSERT(0);
17467 return WDI_STATUS_E_FAILURE;
17468 }
17469
17470 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17471
17472 /*-------------------------------------------------------------------------
17473 Unpack HAL Response Message - the header was already extracted by the
17474 main Response Handling procedure
17475 -------------------------------------------------------------------------*/
17476 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17477 pEventData->pEventData,
17478 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17479
17480 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17481 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17482 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17483 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17484 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17485 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17486 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17487 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17488 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17489 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17490 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17491 halTsmStatsRspMsg.tsmStatsRspParams.status);
17492
17493 /*Notify UMAC*/
17494 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17495
17496 return WDI_STATUS_SUCCESS;
17497}/*WDI_ProcessTsmStatsRsp*/
17498
17499#endif
17500
17501
17502
17503/**
17504 @brief Process Flush AC Rsp function (called when a response
17505 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017506
17507 @param pWDICtx: pointer to the WLAN DAL context
17508 pEventData: pointer to the event information structure
17509
Jeff Johnson295189b2012-06-20 16:38:30 -070017510 @see
17511 @return Result of the function call
17512*/
17513WDI_Status
17514WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017515(
Jeff Johnson295189b2012-06-20 16:38:30 -070017516 WDI_ControlBlockType* pWDICtx,
17517 WDI_EventInfoType* pEventData
17518)
17519{
17520 WDI_Status wdiStatus;
17521 eHalStatus halStatus;
17522 WDI_FlushAcRspCb wdiFlushAcRspCb;
17523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17524
17525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 -------------------------------------------------------------------------*/
17528 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17529 ( NULL == pEventData->pEventData))
17530 {
17531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 }
17536
17537 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17538
17539 /*-------------------------------------------------------------------------
17540 Extract response and send it to UMAC
17541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 wpalMemoryCopy( &halStatus,
17543 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 sizeof(halStatus));
17545
Jeff Johnsone7245742012-09-05 17:12:55 -070017546 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017547
17548 /*Notify UMAC*/
17549 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17550
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017552}/*WDI_ProcessFlushAcRsp*/
17553
17554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017555 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017557
17558 @param pWDICtx: pointer to the WLAN DAL context
17559 pEventData: pointer to the event information structure
17560
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 @see
17562 @return Result of the function call
17563*/
17564WDI_Status
17565WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017566(
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 WDI_ControlBlockType* pWDICtx,
17568 WDI_EventInfoType* pEventData
17569)
17570{
17571 WDI_Status wdiStatus;
17572 eHalStatus halStatus;
17573 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17575
17576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017578 -------------------------------------------------------------------------*/
17579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17580 ( NULL == pEventData->pEventData))
17581 {
17582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017586 }
17587
17588 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17589
17590 /*-------------------------------------------------------------------------
17591 Extract response and send it to UMAC
17592 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017593 wpalMemoryCopy( &halStatus,
17594 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 sizeof(halStatus));
17596
Jeff Johnsone7245742012-09-05 17:12:55 -070017597 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017598
17599 /*Notify UMAC*/
17600 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17601
Jeff Johnsone7245742012-09-05 17:12:55 -070017602 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017603}/*WDI_ProcessBtAmpEventRsp*/
17604
17605
17606/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017609
17610 @param pWDICtx: pointer to the WLAN DAL context
17611 pEventData: pointer to the event information structure
17612
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 @see
17614 @return Result of the function call
17615*/
17616WDI_Status
17617WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017618(
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 WDI_ControlBlockType* pWDICtx,
17620 WDI_EventInfoType* pEventData
17621)
17622{
17623 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17624 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17625 tAddStaSelfRspMsg halAddStaSelfRsp;
17626 WDI_AddStaParams wdiAddSTAParam = {0};
17627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17628
17629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017631 -------------------------------------------------------------------------*/
17632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17633 ( NULL == pEventData->pEventData))
17634 {
17635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 }
17640
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17643
17644 /*-------------------------------------------------------------------------
17645 Extract response and send it to UMAC
17646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17648 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17650
17651
Jeff Johnsone7245742012-09-05 17:12:55 -070017652 wdiAddSTASelfParams.wdiStatus =
17653 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017654
Jeff Johnsone7245742012-09-05 17:12:55 -070017655 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017657 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17661
17662 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17663 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17664 WDI_MAC_ADDR_LEN);
17665
17666
17667#ifdef HAL_SELF_STA_PER_BSS
17668
17669 /* At this point add the self-STA */
17670
17671 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17672 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17673 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17674
17675 //all DPU indices are the same for self STA
17676
17677 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017678 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17680 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17681 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17682 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17683 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17684
17685 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17686 WDI_MAC_ADDR_LEN);
17687
17688 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17689 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17690
Jeff Johnsone7245742012-09-05 17:12:55 -070017691 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17693 {
17694 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17695 }
17696#endif
17697
17698 /*Notify UMAC*/
17699 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17700
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017702}/*WDI_ProcessAddSTASelfRsp*/
17703
17704
17705
17706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017709
17710 @param pWDICtx: pointer to the WLAN DAL context
17711 pEventData: pointer to the event information structure
17712
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 @see
17714 @return Result of the function call
17715*/
17716WDI_Status
17717WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017718(
Jeff Johnson295189b2012-06-20 16:38:30 -070017719 WDI_ControlBlockType* pWDICtx,
17720 WDI_EventInfoType* pEventData
17721)
17722{
17723 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17724 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17725 tDelStaSelfRspParams delStaSelfRspParams;
17726 wpt_uint8 ucStaIdx;
17727
17728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17729
17730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 -------------------------------------------------------------------------*/
17733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17734 ( NULL == pEventData->pEventData))
17735 {
17736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017740 }
17741
17742 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17743
17744 /*-------------------------------------------------------------------------
17745 Extract response and send it to UMAC
17746 -------------------------------------------------------------------------*/
17747
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 (wpt_uint8*)pEventData->pEventData,
17750 sizeof(tDelStaSelfRspParams));
17751
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 wdiDelStaSelfRspParams.wdiStatus =
17753 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017756 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17757 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17758 {
17759 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 delStaSelfRspParams.selfMacAddr,
17762 &ucStaIdx);
17763 if(WDI_STATUS_E_FAILURE == wdiStatus)
17764 {
17765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017766 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 }
17770 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17771 }
17772
17773 /*Notify UMAC*/
17774 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17775
17776 return WDI_STATUS_SUCCESS;
17777}
17778
Jeff Johnsone7245742012-09-05 17:12:55 -070017779#ifdef FEATURE_OEM_DATA_SUPPORT
17780/**
17781 @brief Start Oem Data Rsp function (called when a
17782 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017783
Jeff Johnsone7245742012-09-05 17:12:55 -070017784 @param pWDICtx: pointer to the WLAN DAL context
17785 pEventData: pointer to the event information structure
17786
17787 @see
17788 @return Result of the function call
17789*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017790
17791WDI_Status
17792WDI_ProcessStartOemDataRsp
17793(
17794 WDI_ControlBlockType* pWDICtx,
17795 WDI_EventInfoType* pEventData
17796)
17797{
17798 WDI_oemDataRspCb wdiOemDataRspCb;
17799 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17800 tStartOemDataRspParams* halStartOemDataRspParams;
17801
17802 /*-------------------------------------------------------------------------
17803 Sanity check
17804 -------------------------------------------------------------------------*/
17805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17806 ( NULL == pEventData->pEventData))
17807 {
17808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017809 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017810 WDI_ASSERT(0);
17811 return WDI_STATUS_E_FAILURE;
17812 }
17813
17814 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17815
17816 /*-------------------------------------------------------------------------
17817 Extract response and send it to UMAC
17818 -------------------------------------------------------------------------*/
17819 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17820
17821
17822 //It is the responsibility of the application code to check for failure
17823 //conditions!
17824
17825 //Allocate memory for WDI OEM DATA RSP structure
17826 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17827
17828 if(NULL == wdiOemDataRspParams)
17829 {
17830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017831 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 pWDICtx, pEventData, pEventData->pEventData);
17833 WDI_ASSERT(0);
17834 return WDI_STATUS_E_FAILURE;
17835 }
17836
17837 /* Populate WDI structure members */
17838 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17839
17840 /*Notify UMAC*/
17841 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17842
17843 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17844 wpalMemoryFree(wdiOemDataRspParams);
17845
17846 return WDI_STATUS_SUCCESS;
17847}/*WDI_PrcoessStartOemDataRsp*/
17848#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017849
17850/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017852===========================================================================*/
17853
17854/**
17855 @brief Process Channel Switch Rsp function (called when a response
17856 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017857
17858 @param pWDICtx: pointer to the WLAN DAL context
17859 pEventData: pointer to the event information structure
17860
Jeff Johnson295189b2012-06-20 16:38:30 -070017861 @see
17862 @return Result of the function call
17863*/
17864WDI_Status
17865WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017866(
Jeff Johnson295189b2012-06-20 16:38:30 -070017867 WDI_ControlBlockType* pWDICtx,
17868 WDI_EventInfoType* pEventData
17869)
17870{
17871 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17872 WDI_SwitchChRspCb wdiChSwitchRspCb;
17873 tSwitchChannelRspParams halSwitchChannelRsp;
17874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17875
17876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 -------------------------------------------------------------------------*/
17879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17880 ( NULL == pEventData->pEventData))
17881 {
17882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017886 }
17887
17888 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17889
17890 /*-------------------------------------------------------------------------
17891 Extract response and send it to UMAC
17892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 (wpt_uint8*)pEventData->pEventData,
17895 sizeof(halSwitchChannelRsp));
17896
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 wdiSwitchChRsp.wdiStatus =
17898 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17900
17901#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017903#endif
17904
17905 /*Notify UMAC*/
17906 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17907
Jeff Johnsone7245742012-09-05 17:12:55 -070017908 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017909}/*WDI_ProcessChannelSwitchRsp*/
17910
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017911/**
17912 @brief Process Channel Switch Rsp function (called when a response
17913 is being received over the bus from HAL against
17914 WDI_ProcessChannelSwitchReq_V1)
17915
17916 @param pWDICtx: pointer to the WLAN DAL context
17917 pEventData: pointer to the event information structure
17918
17919 @see
17920 @return Result of the function call
17921*/
17922
17923WDI_Status
17924WDI_ProcessChannelSwitchRsp_V1
17925(
17926 WDI_ControlBlockType* pWDICtx,
17927 WDI_EventInfoType* pEventData
17928)
17929{
17930 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17931 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17932 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17934
17935 /*-------------------------------------------------------------------------
17936 Sanity check
17937 -------------------------------------------------------------------------*/
17938 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17939 ( NULL == pEventData->pEventData))
17940 {
17941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17942 "%s: Invalid parameters", __func__);
17943 WDI_ASSERT(0);
17944 return WDI_STATUS_E_FAILURE;
17945 }
17946
17947 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17948
17949 /*-------------------------------------------------------------------------
17950 Extract response and send it to UMAC
17951 -------------------------------------------------------------------------*/
17952 wpalMemoryCopy( &halSwitchChannelRsp,
17953 (wpt_uint8*)pEventData->pEventData,
17954 sizeof(halSwitchChannelRsp));
17955
17956 wdiSwitchChRsp.wdiStatus =
17957 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17958 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17959
17960#ifdef WLAN_FEATURE_VOWIFI
17961 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17962#endif
17963
17964 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17965 if (( NULL == wdiChSwitchRspCb ) )
17966 {
17967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17968 "%s: ### Call back function is null", __func__);
17969 WDI_ASSERT(0);
17970 return WDI_STATUS_E_FAILURE;
17971 }
17972 /*Notify UMAC*/
17973 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17974
17975 return WDI_STATUS_SUCCESS;
17976}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017977
17978/**
17979 @brief Process Config STA Rsp function (called when a response
17980 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017981
17982 @param pWDICtx: pointer to the WLAN DAL context
17983 pEventData: pointer to the event information structure
17984
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 @see
17986 @return Result of the function call
17987*/
17988WDI_Status
17989WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017990(
Jeff Johnson295189b2012-06-20 16:38:30 -070017991 WDI_ControlBlockType* pWDICtx,
17992 WDI_EventInfoType* pEventData
17993)
17994{
17995 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17996 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17997 WDI_AddStaParams wdiAddSTAParam;
17998
17999 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018001
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18004
18005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 -------------------------------------------------------------------------*/
18008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18009 ( NULL == pEventData->pEventData))
18010 {
18011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 }
18016
18017 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18018
18019 /*-------------------------------------------------------------------------
18020 Extract response and send it to UMAC
18021 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018022 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18023 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 sizeof(halConfigStaRsp.configStaRspParams));
18025
18026
18027 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18028 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18029 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18030 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18031 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18032
18033 /* MAC Address of STA - take from cache as it does not come back in the
18034 response*/
18035 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018038
18039 wdiCfgSTAParams.wdiStatus =
18040 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018041
18042 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18043 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18044 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18045
18046 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18047 {
18048 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18049 {
18050 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018051 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018052 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18053 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018054
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018058 wdiAddSTAParam.ucHTCapable =
18059 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18060 wdiAddSTAParam.ucStaType =
18061 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018062 wdiAddSTAParam.ucRmfEnabled =
18063 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018064
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018066 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18067 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018069
18070 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18071 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18072 WDI_MAC_ADDR_LEN);
18073
18074 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18075 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18076 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018077
18078 if ( NULL == pBSSSes )
18079 {
18080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18081 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018082
Jeff Johnson295189b2012-06-20 16:38:30 -070018083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 }
18086
18087 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018090 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018097
Jeff Johnson295189b2012-06-20 16:38:30 -070018098 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18099 }
18100 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18101 {
18102 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18103
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018109 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018110 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018116 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018117 halConfigStaRsp.configStaRspParams.ucUcastSig;
18118 }
18119 }
18120
18121 /*Notify UMAC*/
18122 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18123
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018125}/*WDI_ProcessConfigStaRsp*/
18126
18127
18128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018131
18132 @param pWDICtx: pointer to the WLAN DAL context
18133 pEventData: pointer to the event information structure
18134
Jeff Johnson295189b2012-06-20 16:38:30 -070018135 @see
18136 @return Result of the function call
18137*/
18138WDI_Status
18139WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018140(
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 WDI_ControlBlockType* pWDICtx,
18142 WDI_EventInfoType* pEventData
18143)
18144{
18145 WDI_Status wdiStatus;
18146 eHalStatus halStatus;
18147 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18148
18149 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018150 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18152
18153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 -------------------------------------------------------------------------*/
18156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18157 ( NULL == pEventData->pEventData))
18158 {
18159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018163 }
18164
18165 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18166
18167 wpalMutexAcquire(&pWDICtx->wptMutex);
18168
18169 /*If the link is being transitioned to idle - the BSS is to be deleted
18170 - this type of ending a session is possible when UMAC has failed an
18171 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18174 {
18175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018176 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18179 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18180 &pBSSSes);
18181
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 /*-----------------------------------------------------------------------
18183 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 -----------------------------------------------------------------------*/
18186 if ( NULL == pBSSSes )
18187 {
18188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18189 "Set link response received outside association session");
18190 }
18191 else
18192 {
18193 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18194 will be del BSS coming after this to stop the beaconing & cleaning up the
18195 sessions*/
18196 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18197 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18198 {
18199 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 -----------------------------------------------------------------------*/
18202 WDI_DeleteSession(pWDICtx, pBSSSes);
18203
18204 /*-----------------------------------------------------------------------
18205 Check to see if this association is in progress - if so disable the
18206 flag as this has ended
18207 -----------------------------------------------------------------------*/
18208 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 /*Association no longer in progress */
18211 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18212 /*Association no longer in progress - prepare pending assoc for processing*/
18213 WDI_DequeueAssocRequest(pWDICtx);
18214 }
18215 }
18216 }
18217 }
18218 /* If the link state has been set to POST ASSOC, reset the "association in
18219 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18222 {
18223 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18224 WDI_DequeueAssocRequest(pWDICtx);
18225 }
18226
18227 wpalMutexRelease(&pWDICtx->wptMutex);
18228
18229 /*-------------------------------------------------------------------------
18230 Extract response and send it to UMAC
18231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 wpalMemoryCopy( &halStatus,
18233 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 sizeof(halStatus));
18235
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018237
18238 /*Notify UMAC*/
18239 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18240
Jeff Johnsone7245742012-09-05 17:12:55 -070018241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018242}/*WDI_ProcessSetLinkStateRsp*/
18243
18244/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018245 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018246 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018247
18248 @param pWDICtx: pointer to the WLAN DAL context
18249 pEventData: pointer to the event information structure
18250
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 @see
18252 @return Result of the function call
18253*/
18254WDI_Status
18255WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018256(
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 WDI_ControlBlockType* pWDICtx,
18258 WDI_EventInfoType* pEventData
18259)
18260{
18261 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18262 WDI_GetStatsRspCb wdiGetStatsRspCb;
18263 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018264
Jeff Johnson295189b2012-06-20 16:38:30 -070018265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18266
18267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018269 -------------------------------------------------------------------------*/
18270 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18271 ( NULL == pEventData->pEventData))
18272 {
18273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 }
18278
18279 /*-------------------------------------------------------------------------
18280 Extract response and send it to UMAC
18281 -------------------------------------------------------------------------*/
18282 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18283
18284 /*allocate the stats response buffer */
18285 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18286 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18287 + sizeof(WDI_GetStatsRspParamsType));
18288
18289 if(NULL == wdiGetStatsRsp)
18290 {
18291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018292 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 pWDICtx, pEventData, pEventData->pEventData);
18294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 }
18297
18298 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18299
18300 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18301 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18302 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18303 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18304 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18305 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18306
18307 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18308 wpalMemoryCopy(wdiGetStatsRsp + 1,
18309 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18310 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18311
18312 /*Notify UMAC*/
18313 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18314
18315 wpalMemoryFree(wdiGetStatsRsp);
18316
Jeff Johnsone7245742012-09-05 17:12:55 -070018317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018318}/*WDI_ProcessGetStatsRsp*/
18319
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018320#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018321/**
18322 @brief Process Get Roam Rssi Rsp function (called when a response is
18323 being received over the bus from HAL)
18324
18325 @param pWDICtx: pointer to the WLAN DAL context
18326 pEventData: pointer to the event information structure
18327
18328 @see
18329 @return Result of the function call
18330*/
18331WDI_Status
18332WDI_ProcessGetRoamRssiRsp
18333(
18334 WDI_ControlBlockType* pWDICtx,
18335 WDI_EventInfoType* pEventData
18336)
18337{
18338 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18339 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18340 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18342
18343 /*-------------------------------------------------------------------------
18344 Sanity check
18345 -------------------------------------------------------------------------*/
18346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18347 ( NULL == pEventData->pEventData))
18348 {
18349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18350 "%s: Invalid parameters", __func__);
18351 WDI_ASSERT(0);
18352 return WDI_STATUS_E_FAILURE;
18353 }
18354
18355 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18356 if(NULL == wdiGetRoamRssiRspCb)
18357 {
18358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18359 "%s: call back function is NULL", __func__);
18360 WDI_ASSERT(0);
18361 return WDI_STATUS_E_FAILURE;
18362 }
18363
18364 /*-------------------------------------------------------------------------
18365 Extract response and send it to UMAC
18366 -------------------------------------------------------------------------*/
18367 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18368 pEventData->pEventData,
18369 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18370
18371 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18372 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18373 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18374
18375 /*Notify UMAC*/
18376 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18377
18378 return WDI_STATUS_SUCCESS;
18379}/*WDI_ProcessGetRoamRssiRsp*/
18380#endif
18381
Jeff Johnson295189b2012-06-20 16:38:30 -070018382
18383/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018384 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 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_ProcessUpdateCfgRsp
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_UpdateCfgRspCb wdiUpdateCfgRspCb;
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 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)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 wdiUpdateCfgRspCb( 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_ProcessUpdateCfgRsp*/
18430
18431
18432
18433/**
18434 @brief Process Add BA Rsp function (called when a response
18435 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018436
18437 @param pWDICtx: pointer to the WLAN DAL context
18438 pEventData: pointer to the event information structure
18439
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 @see
18441 @return Result of the function call
18442*/
18443WDI_Status
18444WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018445(
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 WDI_ControlBlockType* pWDICtx,
18447 WDI_EventInfoType* pEventData
18448)
18449{
18450 WDI_AddBARspCb wdiAddBARspCb;
18451
18452 tAddBARspParams halAddBARsp;
18453 WDI_AddBARspinfoType wdiAddBARsp;
18454
18455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18456
18457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 -------------------------------------------------------------------------*/
18460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18461 ( NULL == pEventData->pEventData))
18462 {
18463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 }
18468
18469 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18470
18471 /*-------------------------------------------------------------------------
18472 Extract response and send it to UMAC
18473 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 wpalMemoryCopy( &halAddBARsp,
18475 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 sizeof(halAddBARsp));
18477
18478 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18479
Jeff Johnson43971f52012-07-17 12:26:56 -070018480 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018481 {
18482 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18483 }
18484
18485 /*Notify UMAC*/
18486 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18487
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018489}/*WDI_ProcessAddSessionBARsp*/
18490
18491/**
18492 @brief Process Add BA Rsp function (called when a response
18493 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018494
18495 @param pWDICtx: pointer to the WLAN DAL context
18496 pEventData: pointer to the event information structure
18497
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 @see
18499 @return Result of the function call
18500*/
18501WDI_Status
18502WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018503(
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 WDI_ControlBlockType* pWDICtx,
18505 WDI_EventInfoType* pEventData
18506)
18507{
18508 WDI_TriggerBARspCb wdiTriggerBARspCb;
18509
18510 tTriggerBARspParams* halTriggerBARsp;
18511 tTriggerBaRspCandidate* halBaCandidate;
18512 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18513 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18514 wpt_uint16 index;
18515 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018516 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18518
18519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 -------------------------------------------------------------------------*/
18522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18523 ( NULL == pEventData->pEventData))
18524 {
18525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 }
18530
18531 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18532
18533 /*-------------------------------------------------------------------------
18534 Extract response and send it to UMAC
18535 -------------------------------------------------------------------------*/
18536 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18537
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018538 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18539
18540 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18541 {
18542 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018545
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018546 if(NULL == wdiTriggerBARsp)
18547 {
18548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018549 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018550 pWDICtx, pEventData, pEventData->pEventData);
18551 WDI_ASSERT(0);
18552 return WDI_STATUS_E_FAILURE;
18553 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018554
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018555 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18556
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018558 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18560
18561 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18562 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18563
18564 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18565 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18568 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18569 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18574 }
18575 wdiTriggerBARspCandidate++;
18576 halBaCandidate++;
18577 }
18578 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018579 else
18580 {
18581 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18582
18583 if(NULL == wdiTriggerBARsp)
18584 {
18585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018586 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018587 pWDICtx, pEventData, pEventData->pEventData);
18588 WDI_ASSERT(0);
18589 return WDI_STATUS_E_FAILURE;
18590 }
18591
18592 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18593
18594 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018595
18596 /*Notify UMAC*/
18597 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18598
18599 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018601}/*WDI_ProcessAddSessionBARsp*/
18602
18603/**
18604 @brief Process Update Beacon Params Rsp function (called when a response
18605 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018606
18607 @param pWDICtx: pointer to the WLAN DAL context
18608 pEventData: pointer to the event information structure
18609
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 @see
18611 @return Result of the function call
18612*/
18613WDI_Status
18614WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018615(
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 WDI_ControlBlockType* pWDICtx,
18617 WDI_EventInfoType* pEventData
18618)
18619{
18620 WDI_Status wdiStatus;
18621 eHalStatus halStatus;
18622 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18624
18625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 -------------------------------------------------------------------------*/
18628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18629 ( NULL == pEventData->pEventData))
18630 {
18631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 }
18636
18637 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18638
18639 /*-------------------------------------------------------------------------
18640 Extract response and send it to UMAC
18641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018642 wpalMemoryCopy( &halStatus,
18643 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 sizeof(halStatus));
18645
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018647
18648 /*Notify UMAC*/
18649 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18650
Jeff Johnsone7245742012-09-05 17:12:55 -070018651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018652}/*WDI_ProcessUpdateBeaconParamsRsp*/
18653
18654/**
18655 @brief Process Send Beacon template Rsp function (called when a response
18656 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018657
18658 @param pWDICtx: pointer to the WLAN DAL context
18659 pEventData: pointer to the event information structure
18660
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 @see
18662 @return Result of the function call
18663*/
18664WDI_Status
18665WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018666(
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 WDI_ControlBlockType* pWDICtx,
18668 WDI_EventInfoType* pEventData
18669)
18670{
18671 WDI_Status wdiStatus;
18672 eHalStatus halStatus;
18673 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18675
18676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 -------------------------------------------------------------------------*/
18679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18680 ( NULL == pEventData->pEventData))
18681 {
18682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 }
18687
18688 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18689
18690 /*-------------------------------------------------------------------------
18691 Extract response and send it to UMAC
18692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 wpalMemoryCopy( &halStatus,
18694 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 sizeof(halStatus));
18696
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018698
18699 /*Notify UMAC*/
18700 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18701
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703}/*WDI_ProcessSendBeaconParamsRsp*/
18704
Jeff Johnsone7245742012-09-05 17:12:55 -070018705
Jeff Johnson295189b2012-06-20 16:38:30 -070018706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018708 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018709
18710 @param pWDICtx: pointer to the WLAN DAL context
18711 pEventData: pointer to the event information structure
18712
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 @see
18714 @return Result of the function call
18715*/
18716WDI_Status
18717WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018718(
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 WDI_ControlBlockType* pWDICtx,
18720 WDI_EventInfoType* pEventData
18721)
18722{
18723 WDI_Status wdiStatus;
18724 eHalStatus halStatus;
18725 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18727
18728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 -------------------------------------------------------------------------*/
18731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18732 ( NULL == pEventData->pEventData))
18733 {
18734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018738 }
18739
18740 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18741
18742 /*-------------------------------------------------------------------------
18743 Extract response and send it to UMAC
18744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018745 wpalMemoryCopy( &halStatus,
18746 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 sizeof(halStatus));
18748
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018750
18751 /*Notify UMAC*/
18752 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18753
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018755}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18756
18757 /**
18758 @brief Process Set Max Tx Power Rsp function (called when a response
18759 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018760
18761 @param pWDICtx: pointer to the WLAN DAL context
18762 pEventData: pointer to the event information structure
18763
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 @see
18765 @return Result of the function call
18766*/
18767WDI_Status
18768WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018769(
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 WDI_ControlBlockType* pWDICtx,
18771 WDI_EventInfoType* pEventData
18772)
18773{
18774 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018775
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018777
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18780
18781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 -------------------------------------------------------------------------*/
18784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18785 ( NULL == pEventData->pEventData))
18786 {
18787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 }
18792
18793 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18794
18795 /*-------------------------------------------------------------------------
18796 Extract response and send it to UMAC
18797 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018798 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18799 pEventData->pEventData,
18800 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018801
18802 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18803 {
18804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18805 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 }
18808
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018812
18813 /*Notify UMAC*/
18814 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18815
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817}
18818
schang86c22c42013-03-13 18:41:24 -070018819 /**
18820 @brief Process Set Tx Power Rsp function (called when a response
18821 is being received over the bus from HAL)
18822
18823 @param pWDICtx: pointer to the WLAN DAL context
18824 pEventData: pointer to the event information structure
18825
18826 @see
18827 @return Result of the function call
18828*/
18829WDI_Status
18830WDI_ProcessSetTxPowerRsp
18831(
18832 WDI_ControlBlockType* pWDICtx,
18833 WDI_EventInfoType* pEventData
18834)
18835{
18836 tSetTxPwrRspMsg halTxpowerrsp;
18837 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18838 WDA_SetTxPowerRspCb wdiReqStatusCb;
18839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18840
18841 /*-------------------------------------------------------------------------
18842 Sanity check
18843 -------------------------------------------------------------------------*/
18844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18845 ( NULL == pEventData->pEventData))
18846 {
18847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18848 "%s: Invalid parameters", __func__);
18849 WDI_ASSERT(0);
18850 return WDI_STATUS_E_FAILURE;
18851 }
18852
18853 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18854
18855 /*-------------------------------------------------------------------------
18856 Extract response and send it to UMAC
18857 -------------------------------------------------------------------------*/
18858 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18859 pEventData->pEventData,
18860 sizeof(halTxpowerrsp.setTxPwrRspParams));
18861
18862 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18863 {
18864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18865 "Error status returned in Set Tx Power Response ");
18866 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18867 return WDI_STATUS_E_FAILURE;
18868 }
18869
18870 wdiSetTxPowerRspMsg.wdiStatus =
18871 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18872
18873 /*Notify UMAC*/
18874 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18875
18876 return WDI_STATUS_SUCCESS;
18877}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018878
18879/**
18880 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18881 is being received over the bus from HAL)
18882
18883 @param pWDICtx: pointer to the WLAN DAL context
18884 pEventData: pointer to the event information structure
18885
18886 @see
18887 @return Result of the function call
18888*/
18889WDI_Status
18890WDI_ProcessSetMaxTxPowerPerBandRsp
18891(
18892 WDI_ControlBlockType* pWDICtx,
18893 WDI_EventInfoType* pEventData
18894)
18895{
18896 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18897 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18898 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18900
18901 /*-------------------------------------------------------------------------
18902 Sanity check
18903 -------------------------------------------------------------------------*/
18904 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18905 ( NULL == pEventData->pEventData))
18906 {
18907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18908 "%s: Invalid parameters", __func__);
18909 WDI_ASSERT(0);
18910 return WDI_STATUS_E_FAILURE;
18911 }
18912
18913 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18914
18915 /*-------------------------------------------------------------------------
18916 Extract response and send it to UMAC
18917 -------------------------------------------------------------------------*/
18918 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18919 pEventData->pEventData,
18920 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18921
18922 if (eHAL_STATUS_SUCCESS !=
18923 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18924 {
18925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18926 "Error status returned in Set Max Tx Power Per Band Response");
18927 return WDI_STATUS_E_FAILURE;
18928 }
18929
18930 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18931 WDI_HAL_2_WDI_STATUS(
18932 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18933
18934 /* Notify UMAC */
18935 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18936
18937 return WDI_STATUS_SUCCESS;
18938}
18939
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018940#ifdef FEATURE_WLAN_TDLS
18941/**
18942 @brief Process TDLS Link Establish Rsp function (called
18943 when a response is being received over the bus from HAL)
18944
18945 @param pWDICtx: pointer to the WLAN DAL context
18946 pEventData: pointer to the event information structure
18947
18948 @see
18949 @return Result of the function call
18950*/
18951WDI_Status
18952WDI_ProcessLinkEstablishReqRsp
18953(
18954 WDI_ControlBlockType* pWDICtx,
18955 WDI_EventInfoType* pEventData
18956)
18957{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018958 eHalStatus halStatus;
18959 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018960 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18961 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18962
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18964
18965 /*-------------------------------------------------------------------------
18966 Sanity check
18967 -------------------------------------------------------------------------*/
18968 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18969 ( NULL == pEventData->pEventData))
18970 {
18971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18972 "%s: Invalid parameters", __func__);
18973 WDI_ASSERT(0);
18974 return WDI_STATUS_E_FAILURE;
18975 }
18976
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018977 /*-------------------------------------------------------------------------
18978 Extract indication and send it to UMAC
18979 -------------------------------------------------------------------------*/
18980 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18981 pEventData->pEventData,
18982 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18983
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018984 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18985
18986 /*-------------------------------------------------------------------------
18987 Extract response and send it to UMAC
18988 -------------------------------------------------------------------------*/
18989 wpalMemoryCopy( &halStatus,
18990 pEventData->pEventData,
18991 sizeof(halStatus));
18992
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018993 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18994 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018995
18996 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018997 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018998
18999 return WDI_STATUS_SUCCESS;
19000}/*WDI_ProcessLinkEstablishReqRsp*/
19001#endif
schang86c22c42013-03-13 18:41:24 -070019002
Jeff Johnson295189b2012-06-20 16:38:30 -070019003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019006
19007 @param pWDICtx: pointer to the WLAN DAL context
19008 pEventData: pointer to the event information structure
19009
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 @see
19011 @return Result of the function call
19012*/
19013WDI_Status
19014WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019015(
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 WDI_ControlBlockType* pWDICtx,
19017 WDI_EventInfoType* pEventData
19018)
19019{
19020 WDI_Status wdiStatus;
19021 eHalStatus halStatus;
19022 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19024
19025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 -------------------------------------------------------------------------*/
19028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19029 ( NULL == pEventData->pEventData))
19030 {
19031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 }
19036
19037 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19038
19039 /*-------------------------------------------------------------------------
19040 Extract response and send it to UMAC
19041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 wpalMemoryCopy( &halStatus,
19043 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 sizeof(halStatus));
19045
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019047
19048 /*Notify UMAC*/
19049 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19050
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019052}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019056
19057 @param pWDICtx: pointer to the WLAN DAL context
19058 pEventData: pointer to the event information structure
19059
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 @see
19061 @return Result of the function call
19062*/
19063WDI_Status
19064WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019065(
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 WDI_ControlBlockType* pWDICtx,
19067 WDI_EventInfoType* pEventData
19068)
19069{
19070 WDI_Status wdiStatus;
19071 eHalStatus halStatus;
19072 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019073 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19075
19076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 -------------------------------------------------------------------------*/
19079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19080 ( NULL == pEventData->pEventData))
19081 {
19082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 }
19087
19088 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19089
19090 /*-------------------------------------------------------------------------
19091 Extract response and send it to UMAC
19092 -------------------------------------------------------------------------*/
19093 halStatus = *((eHalStatus*)pEventData->pEventData);
19094
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019096
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019097 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19098 * Other module states are taken care by PMC.
19099 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19100 */
19101 if (wdiStatus != WDI_STATUS_SUCCESS) {
19102
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19104 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19105 halStatus);
19106 /* Call Back is not required as we are putting the DXE in FULL
19107 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019108 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19109
19110 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019112 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019113 WDI_ASSERT(0);
19114 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019115 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 /*Notify UMAC*/
19117 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19118
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019120}/*WDI_ProcessEnterImpsRsp*/
19121
19122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019125
19126 @param pWDICtx: pointer to the WLAN DAL context
19127 pEventData: pointer to the event information structure
19128
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 @see
19130 @return Result of the function call
19131*/
19132WDI_Status
19133WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019134(
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 WDI_ControlBlockType* pWDICtx,
19136 WDI_EventInfoType* pEventData
19137)
19138{
19139 WDI_Status wdiStatus;
19140 eHalStatus halStatus;
19141 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019142 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19144
19145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 -------------------------------------------------------------------------*/
19148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19149 ( NULL == pEventData->pEventData))
19150 {
19151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 }
19156
19157 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19158
19159 /*-------------------------------------------------------------------------
19160 Extract response and send it to UMAC
19161 -------------------------------------------------------------------------*/
19162 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019164
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019165 if (halStatus != eHAL_STATUS_SUCCESS)
19166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19167 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19168
Jeff Johnson295189b2012-06-20 16:38:30 -070019169 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019170 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19171 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19172 {
19173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019174 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019175 WDI_ASSERT(0);
19176 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019177 /*Notify UMAC*/
19178 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19179
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019181}/*WDI_ProcessExitImpsRsp*/
19182
19183/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 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_ProcessEnterBmpsRsp
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{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019200 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19201 tHalEnterBmpsRspParams halEnterBmpsRsp;
19202 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19203 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019204 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19206
19207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 -------------------------------------------------------------------------*/
19210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19211 ( NULL == pEventData->pEventData))
19212 {
19213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 }
19218
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019220 Extract response and send it to UMAC
19221 -------------------------------------------------------------------------*/
19222 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19223 {
19224 wpalMemoryCopy( &halEnterBmpsRsp,
19225 pEventData->pEventData,
19226 sizeof(halEnterBmpsRsp));
19227
19228 //Used to print debug message
19229 halStatus = halEnterBmpsRsp.status;
19230 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19231 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19232 }
19233 else
19234 {
19235 halStatus = *((eHalStatus*)pEventData->pEventData);
19236 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19237 }
19238
19239 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019241 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19242 * Other module states are taken care by PMC.
19243 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19244 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019245 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19246 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019247
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019249 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19250 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019251 /* Call Back is not required as we are putting the DXE in FULL
19252 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019253 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19254 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19255 {
19256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019257 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019258 WDI_ASSERT(0);
19259 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019260 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019261 }
19262
Jeff Johnson295189b2012-06-20 16:38:30 -070019263 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019264 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019265
Jeff Johnsone7245742012-09-05 17:12:55 -070019266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019267}/*WDI_ProcessEnterBmpsRsp*/
19268
19269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019272
19273 @param pWDICtx: pointer to the WLAN DAL context
19274 pEventData: pointer to the event information structure
19275
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 @see
19277 @return Result of the function call
19278*/
19279WDI_Status
19280WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019281(
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 WDI_ControlBlockType* pWDICtx,
19283 WDI_EventInfoType* pEventData
19284)
19285{
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 eHalStatus halStatus;
19287 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019288 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019289 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19290 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19292
19293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 -------------------------------------------------------------------------*/
19296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19297 ( NULL == pEventData->pEventData))
19298 {
19299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 }
19304
19305 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19306
19307 /*-------------------------------------------------------------------------
19308 Extract response and send it to UMAC
19309 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019310
19311 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19312 {
19313 wpalMemoryCopy( &halExitBmpsRsp,
19314 pEventData->pEventData,
19315 sizeof(halExitBmpsRsp));
19316
19317 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19318 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19319 }
19320 else
19321 {
19322 halStatus = *((eHalStatus*)pEventData->pEventData);
19323 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19324 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019325
19326 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019327 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19328 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19329 {
19330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019331 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019332 WDI_ASSERT(0);
19333 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19335
19336 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019337 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019338
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019340}/*WDI_ProcessExitBmpsRsp*/
19341
19342/**
19343 @brief Process Enter UAPSD Rsp function (called when a response
19344 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019345
19346 @param pWDICtx: pointer to the WLAN DAL context
19347 pEventData: pointer to the event information structure
19348
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 @see
19350 @return Result of the function call
19351*/
19352WDI_Status
19353WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019354(
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 WDI_ControlBlockType* pWDICtx,
19356 WDI_EventInfoType* pEventData
19357)
19358{
Jeff Johnson295189b2012-06-20 16:38:30 -070019359 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019360 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019361 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019362 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19363
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19365
19366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 -------------------------------------------------------------------------*/
19369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19370 ( NULL == pEventData->pEventData))
19371 {
19372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 }
19377
19378 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19379
19380 /*-------------------------------------------------------------------------
19381 Extract response and send it to UMAC
19382 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019383 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19384 {
19385 wpalMemoryCopy( &halEnterUapsdRsp,
19386 pEventData->pEventData,
19387 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019388
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019389 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19390 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19391 }
19392 else
19393 {
19394 halStatus = *((eHalStatus*)pEventData->pEventData);
19395 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19396 }
19397
19398 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 {
19400 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19401 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19402 // the traffic to decide when to suspend the trigger frames when there is no traffic
19403 // activity on the trigger enabled ACs
19404 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19405
19406#ifdef WLAN_PERF
19407 // Increment the BD signature to refresh the fast path BD utilization
19408 pWDICtx->uBdSigSerialNum++;
19409#endif
19410 }
19411
19412 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019413 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019414
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019416}/*WDI_ProcessEnterUapsdRsp*/
19417
19418/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019421
19422 @param pWDICtx: pointer to the WLAN DAL context
19423 pEventData: pointer to the event information structure
19424
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 @see
19426 @return Result of the function call
19427*/
19428WDI_Status
19429WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019430(
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 WDI_ControlBlockType* pWDICtx,
19432 WDI_EventInfoType* pEventData
19433)
19434{
Jeff Johnson295189b2012-06-20 16:38:30 -070019435 eHalStatus halStatus;
19436 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019437 tHalExitUapsdRspParams halExitUapsdRsp;
19438 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19440
19441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 -------------------------------------------------------------------------*/
19444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19445 ( NULL == pEventData->pEventData))
19446 {
19447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 }
19452
19453 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19454
19455 /*-------------------------------------------------------------------------
19456 Extract response and send it to UMAC
19457 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019458 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19459 {
19460 wpalMemoryCopy( &halExitUapsdRsp,
19461 pEventData->pEventData,
19462 sizeof(halExitUapsdRsp));
19463
19464 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19465 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19466 }
19467 else
19468 {
19469 halStatus = *((eHalStatus*)pEventData->pEventData);
19470 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19471 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19473 // directly instead of the FW WQ.
19474 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19475
19476#ifdef WLAN_PERF
19477 // Increment the BD signature to refresh the fast path BD utilization
19478 pWDICtx->uBdSigSerialNum++;
19479#endif
19480
19481 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019482 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019483
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019485}/*WDI_ProcessExitUapsdRsp*/
19486
19487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019490
19491 @param pWDICtx: pointer to the WLAN DAL context
19492 pEventData: pointer to the event information structure
19493
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 @see
19495 @return Result of the function call
19496*/
19497WDI_Status
19498WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019499(
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 WDI_ControlBlockType* pWDICtx,
19501 WDI_EventInfoType* pEventData
19502)
19503{
19504 WDI_Status wdiStatus;
19505 eHalStatus halStatus;
19506 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19508
19509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 -------------------------------------------------------------------------*/
19512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19513 ( NULL == pEventData->pEventData))
19514 {
19515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 }
19520
19521 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19522
19523 /*-------------------------------------------------------------------------
19524 Extract response and send it to UMAC
19525 -------------------------------------------------------------------------*/
19526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019528
19529 /*Notify UMAC*/
19530 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19531
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533}/*WDI_ProcessSetUapsdAcParamsRsp*/
19534
19535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019538
19539 @param pWDICtx: pointer to the WLAN DAL context
19540 pEventData: pointer to the event information structure
19541
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 @see
19543 @return Result of the function call
19544*/
19545WDI_Status
19546WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019547(
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 WDI_ControlBlockType* pWDICtx,
19549 WDI_EventInfoType* pEventData
19550)
19551{
19552 WDI_Status wdiStatus;
19553 eHalStatus halStatus;
19554 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19556
19557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019559 -------------------------------------------------------------------------*/
19560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19561 ( NULL == pEventData->pEventData))
19562 {
19563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 }
19568
19569 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19570
19571 /*-------------------------------------------------------------------------
19572 Extract response and send it to UMAC
19573 -------------------------------------------------------------------------*/
19574 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019576
19577 /*Notify UMAC*/
19578 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19579
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019581}/*WDI_ProcessUpdateUapsdParamsRsp*/
19582
19583/**
19584 @brief Process Configure RXP filter Rsp function (called when a
19585 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019586
19587 @param pWDICtx: pointer to the WLAN DAL context
19588 pEventData: pointer to the event information structure
19589
Jeff Johnson295189b2012-06-20 16:38:30 -070019590 @see
19591 @return Result of the function call
19592*/
19593WDI_Status
19594WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019595(
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 WDI_ControlBlockType* pWDICtx,
19597 WDI_EventInfoType* pEventData
19598)
19599{
19600 WDI_Status wdiStatus;
19601 eHalStatus halStatus;
19602 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19604
19605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 -------------------------------------------------------------------------*/
19608 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19609 ( NULL == pEventData->pEventData))
19610 {
19611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019615 }
19616
19617 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19618
19619 /*-------------------------------------------------------------------------
19620 Extract response and send it to UMAC
19621 -------------------------------------------------------------------------*/
19622 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019624
19625 /*Notify UMAC*/
19626 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19627
Jeff Johnsone7245742012-09-05 17:12:55 -070019628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019629}/*WDI_ProcessConfigureRxpFilterRsp*/
19630
19631/**
19632 @brief Process Set beacon filter Rsp function (called when a
19633 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019634
19635 @param pWDICtx: pointer to the WLAN DAL context
19636 pEventData: pointer to the event information structure
19637
Jeff Johnson295189b2012-06-20 16:38:30 -070019638 @see
19639 @return Result of the function call
19640*/
19641WDI_Status
19642WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019643(
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 WDI_ControlBlockType* pWDICtx,
19645 WDI_EventInfoType* pEventData
19646)
19647{
19648 WDI_Status wdiStatus;
19649 eHalStatus halStatus;
19650 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19652
19653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 -------------------------------------------------------------------------*/
19656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19657 ( NULL == pEventData->pEventData))
19658 {
19659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 }
19664
19665 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19666
19667 /*-------------------------------------------------------------------------
19668 Extract response and send it to UMAC
19669 -------------------------------------------------------------------------*/
19670 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019672
19673 /*Notify UMAC*/
19674 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19675
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019677}/*WDI_ProcessSetBeaconFilterRsp*/
19678
19679/**
19680 @brief Process remove beacon filter Rsp function (called when a
19681 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019682
19683 @param pWDICtx: pointer to the WLAN DAL context
19684 pEventData: pointer to the event information structure
19685
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 @see
19687 @return Result of the function call
19688*/
19689WDI_Status
19690WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019691(
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 WDI_ControlBlockType* pWDICtx,
19693 WDI_EventInfoType* pEventData
19694)
19695{
19696 WDI_Status wdiStatus;
19697 eHalStatus halStatus;
19698 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19700
19701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 -------------------------------------------------------------------------*/
19704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19705 ( NULL == pEventData->pEventData))
19706 {
19707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 }
19712
19713 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19714
19715 /*-------------------------------------------------------------------------
19716 Extract response and send it to UMAC
19717 -------------------------------------------------------------------------*/
19718 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019720
19721 /*Notify UMAC*/
19722 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19723
Jeff Johnsone7245742012-09-05 17:12:55 -070019724 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019725}/*WDI_ProcessRemBeaconFilterRsp*/
19726
19727/**
19728 @brief Process set RSSI thresholds Rsp function (called when a
19729 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019730
19731 @param pWDICtx: pointer to the WLAN DAL context
19732 pEventData: pointer to the event information structure
19733
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 @see
19735 @return Result of the function call
19736*/
19737WDI_Status
19738WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019739(
Jeff Johnson295189b2012-06-20 16:38:30 -070019740 WDI_ControlBlockType* pWDICtx,
19741 WDI_EventInfoType* pEventData
19742)
19743{
19744 WDI_Status wdiStatus;
19745 eHalStatus halStatus;
19746 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19748
19749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019750 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 -------------------------------------------------------------------------*/
19752 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19753 ( NULL == pEventData->pEventData))
19754 {
19755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019756 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 }
19760
19761 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19762
19763 /*-------------------------------------------------------------------------
19764 Extract response and send it to UMAC
19765 -------------------------------------------------------------------------*/
19766 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019768
19769 /*Notify UMAC*/
19770 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19771
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019773}/*WDI_ProcessSetRSSIThresoldsRsp*/
19774
19775/**
19776 @brief Process host offload Rsp function (called when a
19777 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019778
19779 @param pWDICtx: pointer to the WLAN DAL context
19780 pEventData: pointer to the event information structure
19781
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 @see
19783 @return Result of the function call
19784*/
19785WDI_Status
19786WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019787(
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 WDI_ControlBlockType* pWDICtx,
19789 WDI_EventInfoType* pEventData
19790)
19791{
19792 WDI_Status wdiStatus;
19793 eHalStatus halStatus;
19794 WDI_HostOffloadCb wdiHostOffloadCb;
19795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19796
19797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 -------------------------------------------------------------------------*/
19800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19801 ( NULL == pEventData->pEventData))
19802 {
19803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019807 }
19808
19809 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19810
19811 /*-------------------------------------------------------------------------
19812 Extract response and send it to UMAC
19813 -------------------------------------------------------------------------*/
19814 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019815 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019816
19817 /*Notify UMAC*/
19818 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19819
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019821}/*WDI_ProcessHostOffloadRsp*/
19822
19823/**
19824 @brief Process keep alive Rsp function (called when a
19825 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019826
19827 @param pWDICtx: pointer to the WLAN DAL context
19828 pEventData: pointer to the event information structure
19829
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 @see
19831 @return Result of the function call
19832*/
19833WDI_Status
19834WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019835(
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 WDI_ControlBlockType* pWDICtx,
19837 WDI_EventInfoType* pEventData
19838)
19839{
19840 WDI_Status wdiStatus;
19841 eHalStatus halStatus;
19842 WDI_KeepAliveCb wdiKeepAliveCb;
19843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19845 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19846
19847
19848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 -------------------------------------------------------------------------*/
19851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19852 ( NULL == pEventData->pEventData))
19853 {
19854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 }
19859
Jeff Johnsone7245742012-09-05 17:12:55 -070019860 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19861
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 /*-------------------------------------------------------------------------
19863 Extract response and send it to UMAC
19864 -------------------------------------------------------------------------*/
19865 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019867
19868 /*Notify UMAC*/
19869 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19870
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019872}/*WDI_ProcessKeepAliveRsp*/
19873
19874/**
19875 @brief Process wowl add ptrn Rsp function (called when a
19876 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019877
19878 @param pWDICtx: pointer to the WLAN DAL context
19879 pEventData: pointer to the event information structure
19880
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 @see
19882 @return Result of the function call
19883*/
19884WDI_Status
19885WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019886(
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 WDI_ControlBlockType* pWDICtx,
19888 WDI_EventInfoType* pEventData
19889)
19890{
Jeff Johnson295189b2012-06-20 16:38:30 -070019891 eHalStatus halStatus;
19892 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019893 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19894 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19895
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19897
19898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 -------------------------------------------------------------------------*/
19901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19902 ( NULL == pEventData->pEventData))
19903 {
19904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 }
19909
19910 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19911
19912 /*-------------------------------------------------------------------------
19913 Extract response and send it to UMAC
19914 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019915 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19916 {
19917 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19918 pEventData->pEventData,
19919 sizeof(halAddWowlBcastPtrRsp));
19920
19921 wdiWowlAddBcPtrRsp.wdiStatus =
19922 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19923 }
19924 else
19925 {
19926 halStatus = *((eHalStatus*)pEventData->pEventData);
19927 wdiWowlAddBcPtrRsp.wdiStatus =
19928 WDI_HAL_2_WDI_STATUS(halStatus);
19929 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019930
19931 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019932 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019933
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019935}/*WDI_ProcessWowlAddBcPtrnRsp*/
19936
19937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019940
19941 @param pWDICtx: pointer to the WLAN DAL context
19942 pEventData: pointer to the event information structure
19943
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 @see
19945 @return Result of the function call
19946*/
19947WDI_Status
19948WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019949(
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 WDI_ControlBlockType* pWDICtx,
19951 WDI_EventInfoType* pEventData
19952)
19953{
Jeff Johnson295189b2012-06-20 16:38:30 -070019954 eHalStatus halStatus;
19955 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019956 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19957 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19959
19960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 -------------------------------------------------------------------------*/
19963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19964 ( NULL == pEventData->pEventData))
19965 {
19966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 }
19971
19972 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19973
19974 /*-------------------------------------------------------------------------
19975 Extract response and send it to UMAC
19976 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019977 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19978 {
19979 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19980 pEventData->pEventData,
19981 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019982
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019983 wdiWowlDelBcstPtrRsp.wdiStatus =
19984 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19985 }
19986 else
19987 {
19988 halStatus = *((eHalStatus*)pEventData->pEventData);
19989 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19990 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019991 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019992 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019993
Jeff Johnsone7245742012-09-05 17:12:55 -070019994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019995}/*WDI_ProcessWowlDelBcPtrnRsp*/
19996
19997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020000
20001 @param pWDICtx: pointer to the WLAN DAL context
20002 pEventData: pointer to the event information structure
20003
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 @see
20005 @return Result of the function call
20006*/
20007WDI_Status
20008WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020009(
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 WDI_ControlBlockType* pWDICtx,
20011 WDI_EventInfoType* pEventData
20012)
20013{
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 eHalStatus halStatus;
20015 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020016 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20017 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20019
20020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 -------------------------------------------------------------------------*/
20023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20024 ( NULL == pEventData->pEventData))
20025 {
20026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020030 }
20031
20032 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20033
20034 /*-------------------------------------------------------------------------
20035 Extract response and send it to UMAC
20036 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020037 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20038 {
20039 wpalMemoryCopy( &halEnterWowlRspParams,
20040 (wpt_uint8*)pEventData->pEventData,
20041 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020042
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020043 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20044 wdiwowlEnterRsp.status =
20045 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20046 }
20047 else
20048 {
20049 halStatus = *((eHalStatus*)pEventData->pEventData);
20050 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20051 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020053 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020054
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020056}/*WDI_ProcessWowlEnterRsp*/
20057
20058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020061
20062 @param pWDICtx: pointer to the WLAN DAL context
20063 pEventData: pointer to the event information structure
20064
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 @see
20066 @return Result of the function call
20067*/
20068WDI_Status
20069WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020070(
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 WDI_ControlBlockType* pWDICtx,
20072 WDI_EventInfoType* pEventData
20073)
20074{
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 eHalStatus halStatus;
20076 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020077 tHalExitWowlRspParams halExitWowlRspParams;
20078 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20079
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20081
20082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 -------------------------------------------------------------------------*/
20085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20086 ( NULL == pEventData->pEventData))
20087 {
20088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 }
20093
20094 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20095
20096 /*-------------------------------------------------------------------------
20097 Extract response and send it to UMAC
20098 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020099 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20100 {
20101 wpalMemoryCopy( &halExitWowlRspParams,
20102 pEventData->pEventData,
20103 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020104
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020105 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20106 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20107
20108 }
20109 else
20110 {
20111 halStatus = *((eHalStatus*)pEventData->pEventData);
20112 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20113 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020115 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020116
Jeff Johnsone7245742012-09-05 17:12:55 -070020117 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020118}/*WDI_ProcessWowlExitRsp*/
20119
20120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020121 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 (called when a response is being received over the bus
20123 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020124
20125 @param pWDICtx: pointer to the WLAN DAL context
20126 pEventData: pointer to the event information structure
20127
Jeff Johnson295189b2012-06-20 16:38:30 -070020128 @see
20129 @return Result of the function call
20130*/
20131WDI_Status
20132WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020133(
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 WDI_ControlBlockType* pWDICtx,
20135 WDI_EventInfoType* pEventData
20136)
20137{
20138 WDI_Status wdiStatus;
20139 eHalStatus halStatus;
20140 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20142
20143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 -------------------------------------------------------------------------*/
20146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20147 ( NULL == pEventData->pEventData))
20148 {
20149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 }
20154
20155 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20156
20157 /*-------------------------------------------------------------------------
20158 Extract response and send it to UMAC
20159 -------------------------------------------------------------------------*/
20160 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020162
20163 /*Notify UMAC*/
20164 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20165
Jeff Johnsone7245742012-09-05 17:12:55 -070020166 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020167}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20168
20169
20170/**
20171 @brief Process Nv download(called when a response
20172 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020173
20174 @param pWDICtx: pointer to the WLAN DAL context
20175 pEventData: pointer to the event information structure
20176
Jeff Johnson295189b2012-06-20 16:38:30 -070020177 @see
20178 @return Result of the function call
20179*/
20180WDI_Status
20181WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020182(
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 WDI_ControlBlockType* pWDICtx,
20184 WDI_EventInfoType* pEventData
20185)
20186{
20187
20188 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20189 tHalNvImgDownloadRspParams halNvDownloadRsp;
20190 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20191
20192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020193 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 -------------------------------------------------------------------------*/
20195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20196 ( NULL == pEventData->pEventData))
20197 {
20198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 }
20203
20204 /*-------------------------------------------------------------------------
20205 Extract response and send it to UMAC
20206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 wpalMemoryCopy( &halNvDownloadRsp,
20208 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020209 sizeof(halNvDownloadRsp));
20210
20211 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20212
20213 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20215 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 {
20217 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 }
20220 else
20221 {
20222 /*Reset the Nv related global information in WDI context information */
20223 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20224 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20225 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20226 /*call WDA callback function for last fragment */
20227 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20228 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20229 }
20230
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232}
20233#ifdef WLAN_FEATURE_VOWIFI_11R
20234/**
20235 @brief Process Add TSpec Rsp function (called when a response
20236 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020237
20238 @param pWDICtx: pointer to the WLAN DAL context
20239 pEventData: pointer to the event information structure
20240
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 @see
20242 @return Result of the function call
20243*/
20244WDI_Status
20245WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020246(
Jeff Johnson295189b2012-06-20 16:38:30 -070020247 WDI_ControlBlockType* pWDICtx,
20248 WDI_EventInfoType* pEventData
20249)
20250{
20251 WDI_Status wdiStatus;
20252 tAggrAddTsRspParams aggrAddTsRsp;
20253 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20255
20256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 -------------------------------------------------------------------------*/
20259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20260 ( NULL == pEventData->pEventData))
20261 {
20262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 }
20267
20268 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20269
20270 /*-------------------------------------------------------------------------
20271 Extract response and send it to UMAC
20272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 wpalMemoryCopy( &aggrAddTsRsp,
20274 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 sizeof(aggrAddTsRsp));
20276
20277 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020279
20280 /*Notify UMAC*/
20281 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20282
Jeff Johnsone7245742012-09-05 17:12:55 -070020283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020284}/*WDI_ProcessAddTSpecRsp*/
20285#endif /* WLAN_FEATURE_VOWIFI_11R */
20286
20287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020288 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020289 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020290
20291 @param pWDICtx: pointer to the WLAN DAL context
20292 pEventData: pointer to the event information structure
20293
Jeff Johnson295189b2012-06-20 16:38:30 -070020294 @see
20295 @return Result of the function call
20296*/
20297WDI_Status
20298WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020299(
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 WDI_ControlBlockType* pWDICtx,
20301 WDI_EventInfoType* pEventData
20302)
20303{
20304 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20305 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20306 tHalHostResumeRspParams hostResumeRspMsg;
20307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20308
20309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 -------------------------------------------------------------------------*/
20312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20313 ( NULL == pEventData->pEventData))
20314 {
20315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 }
20320
20321 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20322
20323 /*-------------------------------------------------------------------------
20324 Extract response and send it to UMAC
20325 -------------------------------------------------------------------------*/
20326
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 (wpt_uint8*)pEventData->pEventData,
20329 sizeof(hostResumeRspMsg));
20330
Jeff Johnsone7245742012-09-05 17:12:55 -070020331 wdiResumeRspParams.wdiStatus =
20332 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020333
20334 /*Notify UMAC*/
20335 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20336
20337 return WDI_STATUS_SUCCESS;
20338}
20339
20340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020341 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020343
20344 @param pWDICtx: pointer to the WLAN DAL context
20345 pEventData: pointer to the event information structure
20346
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 @see
20348 @return Result of the function call
20349*/
20350WDI_Status
20351WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020352(
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 WDI_ControlBlockType* pWDICtx,
20354 WDI_EventInfoType* pEventData
20355)
20356{
20357 WDI_Status wdiStatus;
20358 eHalStatus halStatus;
20359 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20361
20362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 -------------------------------------------------------------------------*/
20365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20366 ( NULL == pEventData->pEventData))
20367 {
20368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020373
20374 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020375
20376 /*-------------------------------------------------------------------------
20377 Extract response and send it to UMAC
20378 -------------------------------------------------------------------------*/
20379 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020380 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020381
20382 /*Notify UMAC*/
20383 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20384
Jeff Johnsone7245742012-09-05 17:12:55 -070020385 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020386}/*WDI_ProcessSetTxPerTrackingRsp*/
20387
20388/*==========================================================================
20389 Indications from HAL
20390 ==========================================================================*/
20391/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020393 indication of this kind is being received over the bus
20394 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020395
20396 @param pWDICtx: pointer to the WLAN DAL context
20397 pEventData: pointer to the event information structure
20398
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 @see
20400 @return Result of the function call
20401*/
20402WDI_Status
20403WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020404(
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 WDI_ControlBlockType* pWDICtx,
20406 WDI_EventInfoType* pEventData
20407)
20408{
20409 WDI_LowLevelIndType wdiInd;
20410 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20412
20413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 -------------------------------------------------------------------------*/
20416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20417 ( NULL == pEventData->pEventData))
20418 {
20419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 }
20424
20425 /*-------------------------------------------------------------------------
20426 Extract indication and send it to UMAC
20427 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020428 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20429 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 sizeof(tHalRSSINotification));
20431
20432 /*Fill in the indication parameters*/
20433 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20434 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20435 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20436 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20437 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20438 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20439 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20440 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20441 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20442 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20443 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20444 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20445 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020446 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20447 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020448
ltimariub77f24b2013-01-24 18:54:33 -080020449 if ( pWDICtx->wdiLowLevelIndCB )
20450 {
20451 /*Notify UMAC of indication*/
20452 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20453 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020454
20455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020456}/*WDI_ProcessLowRSSIInd*/
20457
20458
20459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020460 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 an indication of this kind is being received over the
20462 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020463
20464 @param pWDICtx: pointer to the WLAN DAL context
20465 pEventData: pointer to the event information structure
20466
Jeff Johnson295189b2012-06-20 16:38:30 -070020467 @see
20468 @return Result of the function call
20469*/
20470WDI_Status
20471WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020472(
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 WDI_ControlBlockType* pWDICtx,
20474 WDI_EventInfoType* pEventData
20475)
20476{
20477 WDI_Status wdiStatus;
20478 eHalStatus halStatus;
20479 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020480 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20482
20483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 -------------------------------------------------------------------------*/
20486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20487 ( NULL == pEventData->pEventData))
20488 {
20489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020494 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 /*-------------------------------------------------------------------------
20496 Extract indication and send it to UMAC
20497 -------------------------------------------------------------------------*/
20498 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20499 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020501
20502 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020504 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20505 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020506 if ( pWDICtx->wdiLowLevelIndCB )
20507 {
20508 /*Notify UMAC*/
20509 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20510 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020511
20512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020513}/*WDI_ProcessMissedBeaconInd*/
20514
20515
20516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 an indication of this kind is being received over the
20519 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020520
20521 @param pWDICtx: pointer to the WLAN DAL context
20522 pEventData: pointer to the event information structure
20523
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 @see
20525 @return Result of the function call
20526*/
20527WDI_Status
20528WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020529(
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 WDI_ControlBlockType* pWDICtx,
20531 WDI_EventInfoType* pEventData
20532)
20533{
20534 WDI_Status wdiStatus;
20535 eHalStatus halStatus;
20536 WDI_LowLevelIndType wdiInd;
20537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20538
20539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 -------------------------------------------------------------------------*/
20542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20543 ( NULL == pEventData->pEventData))
20544 {
20545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 }
20550
20551 /*-------------------------------------------------------------------------
20552 Extract indication and send it to UMAC
20553 -------------------------------------------------------------------------*/
20554 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20555 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020557
20558 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 /* ! TO DO - fill in from HAL struct:
20561 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20562
ltimariub77f24b2013-01-24 18:54:33 -080020563 if ( pWDICtx->wdiLowLevelIndCB )
20564 {
20565 /*Notify UMAC*/
20566 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20567 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020568
20569 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020570}/*WDI_ProcessUnkAddrFrameInd*/
20571
20572
20573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 indication of this kind is being received over the bus
20576 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020577
20578 @param pWDICtx: pointer to the WLAN DAL context
20579 pEventData: pointer to the event information structure
20580
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 @see
20582 @return Result of the function call
20583*/
20584WDI_Status
20585WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020586(
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 WDI_ControlBlockType* pWDICtx,
20588 WDI_EventInfoType* pEventData
20589)
20590{
20591 WDI_LowLevelIndType wdiInd;
20592 tpSirMicFailureInd pHalMicFailureInd;
20593
20594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20595
20596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 -------------------------------------------------------------------------*/
20599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20600 ( NULL == pEventData->pEventData))
20601 {
20602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020607
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20609 /*-------------------------------------------------------------------------
20610 Extract indication and send it to UMAC
20611 -------------------------------------------------------------------------*/
20612
20613 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20616 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20617 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20618 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20619 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20620 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20621 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20622 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020623 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020627 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 pHalMicFailureInd->info.keyId;
20629 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20630 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20631 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20632 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020633
20634 if ( pWDICtx->wdiLowLevelIndCB )
20635 {
20636 /*Notify UMAC*/
20637 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020639
20640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641}/*WDI_ProcessMicFailureInd*/
20642
20643
20644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 an indication of this kind is being received over the
20647 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020648
20649 @param pWDICtx: pointer to the WLAN DAL context
20650 pEventData: pointer to the event information structure
20651
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 @see
20653 @return Result of the function call
20654*/
20655WDI_Status
20656WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020657(
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 WDI_ControlBlockType* pWDICtx,
20659 WDI_EventInfoType* pEventData
20660)
20661{
20662 WDI_Status wdiStatus;
20663 eHalStatus halStatus;
20664 WDI_LowLevelIndType wdiInd;
20665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20666
20667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 -------------------------------------------------------------------------*/
20670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20671 ( NULL == pEventData->pEventData))
20672 {
20673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 }
20678
20679 /*-------------------------------------------------------------------------
20680 Extract indication and send it to UMAC
20681 -------------------------------------------------------------------------*/
20682
20683 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20684 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020686
20687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20688 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020689
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20692 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
ltimariub77f24b2013-01-24 18:54:33 -080020694 if ( pWDICtx->wdiLowLevelIndCB )
20695 {
20696 /*Notify UMAC*/
20697 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20698 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020699
20700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020701}/*WDI_ProcessFatalErrorInd*/
20702
20703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020704 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 an indication of this kind is being received over the
20706 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020707
20708 @param pWDICtx: pointer to the WLAN DAL context
20709 pEventData: pointer to the event information structure
20710
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 @see
20712 @return Result of the function call
20713*/
20714WDI_Status
20715WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020716(
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 WDI_ControlBlockType* pWDICtx,
20718 WDI_EventInfoType* pEventData
20719)
20720{
20721 tDeleteStaContextParams halDelSTACtx;
20722 WDI_LowLevelIndType wdiInd;
20723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20724
20725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 -------------------------------------------------------------------------*/
20728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20729 ( NULL == pEventData->pEventData))
20730 {
20731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 }
20736
20737 /*-------------------------------------------------------------------------
20738 Extract indication and send it to UMAC
20739 -------------------------------------------------------------------------*/
20740
20741 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 wpalMemoryCopy( &halDelSTACtx,
20743 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 sizeof(halDelSTACtx));
20745
20746 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020748
20749 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20750 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20751 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20752 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20753
Jeff Johnsone7245742012-09-05 17:12:55 -070020754 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20759 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020760
ltimariub77f24b2013-01-24 18:54:33 -080020761 if ( pWDICtx->wdiLowLevelIndCB )
20762 {
20763 /*Notify UMAC*/
20764 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020766
20767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020768}/*WDI_ProcessDelSTAInd*/
20769
20770/**
20771*@brief Process Coex Indication function (called when
20772 an indication of this kind is being received over the
20773 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020774
20775 @param pWDICtx: pointer to the WLAN DAL context
20776 pEventData: pointer to the event information structure
20777
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 @see
20779 @return Result of the function call
20780*/
20781WDI_Status
20782WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020783(
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 WDI_ControlBlockType* pWDICtx,
20785 WDI_EventInfoType* pEventData
20786)
20787{
20788 WDI_LowLevelIndType wdiInd;
20789 tCoexIndMsg halCoexIndMsg;
20790 wpt_uint32 index;
20791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20792
20793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020794 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 -------------------------------------------------------------------------*/
20796 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20797 ( NULL == pEventData->pEventData ))
20798 {
20799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020801 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 }
20804
20805 /*-------------------------------------------------------------------------
20806 Extract indication and send it to UMAC
20807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20809 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020810 sizeof(halCoexIndMsg.coexIndParams) );
20811
20812 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 wdiInd.wdiIndicationType = WDI_COEX_IND;
20814 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20816 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020817 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 }
20819
20820 // DEBUG
20821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20822 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20824 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20825 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20826 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20827 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020828
ltimariub77f24b2013-01-24 18:54:33 -080020829 if ( pWDICtx->wdiLowLevelIndCB )
20830 {
20831 /*Notify UMAC*/
20832 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20833 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020834
20835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020836}/*WDI_ProcessCoexInd*/
20837
20838/**
20839*@brief Process Tx Complete Indication function (called when
20840 an indication of this kind is being received over the
20841 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020842
20843 @param pWDICtx: pointer to the WLAN DAL context
20844 pEventData: pointer to the event information structure
20845
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 @see
20847 @return Result of the function call
20848*/
20849WDI_Status
20850WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020851(
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 WDI_ControlBlockType* pWDICtx,
20853 WDI_EventInfoType* pEventData
20854)
20855{
20856 WDI_LowLevelIndType wdiInd;
20857 tTxComplIndMsg halTxComplIndMsg;
20858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20859
20860 /*-------------------------------------------------------------------------
20861 Sanity check
20862 -------------------------------------------------------------------------*/
20863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20864 ( NULL == pEventData->pEventData ))
20865 {
20866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 WDI_ASSERT( 0 );
20869 return WDI_STATUS_E_FAILURE;
20870 }
20871
20872 /*-------------------------------------------------------------------------
20873 Extract indication and send it to UMAC
20874 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20876 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 sizeof(halTxComplIndMsg.txComplParams) );
20878
20879 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20881 wdiInd.wdiIndicationData.tx_complete_status
20882 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020883
ltimariub77f24b2013-01-24 18:54:33 -080020884 if ( pWDICtx->wdiLowLevelIndCB )
20885 {
20886 /*Notify UMAC*/
20887 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20888 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020889
20890 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020892#ifdef FEATURE_WLAN_TDLS
20893/**
20894*@brief Process TDLS Indication function (called when
20895 an indication of this kind is being received over the
20896 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020897
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020898 @param pWDICtx: pointer to the WLAN DAL context
20899 pEventData: pointer to the event information structure
20900
20901 @see
20902 @return Result of the function call
20903*/
20904WDI_Status
20905WDI_ProcessTdlsInd
20906(
20907 WDI_ControlBlockType* pWDICtx,
20908 WDI_EventInfoType* pEventData
20909)
20910{
20911 WDI_LowLevelIndType wdiInd;
20912 tTdlsIndMsg halTdlsIndMsg;
20913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20914
20915 /*-------------------------------------------------------------------------
20916 Sanity check
20917 -------------------------------------------------------------------------*/
20918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20919 ( NULL == pEventData->pEventData ))
20920 {
20921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20922 "%s: Invalid parameters", __func__);
20923 WDI_ASSERT( 0 );
20924 return WDI_STATUS_E_FAILURE;
20925 }
20926
20927 /*-------------------------------------------------------------------------
20928 Extract indication and send it to UMAC
20929 -------------------------------------------------------------------------*/
20930 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20931 pEventData->pEventData,
20932 sizeof(halTdlsIndMsg.tdlsIndParams) );
20933
20934 /*Fill in the indication parameters*/
20935 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20936
20937 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20938 = halTdlsIndMsg.tdlsIndParams.status;
20939
20940 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20941 = halTdlsIndMsg.tdlsIndParams.staIdx;
20942
20943 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20944 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20945
20946 /*Notify UMAC*/
20947 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20948
20949 return WDI_STATUS_SUCCESS;
20950}/*WDI_ProcessTdlsInd*/
20951#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020952/**
Viral Modid86bde22012-12-10 13:09:21 -080020953*@brief Process Noa Start Indication function (called when
20954 an indication of this kind is being received over the
20955 bus from HAL)
20956
20957 @param pWDICtx: pointer to the WLAN DAL context
20958 pEventData: pointer to the event information structure
20959
20960 @see
20961 @return Result of the function call
20962*/
20963WDI_Status
20964WDI_ProcessP2pNoaStartInd
20965(
20966 WDI_ControlBlockType* pWDICtx,
20967 WDI_EventInfoType* pEventData
20968)
20969{
20970 WDI_LowLevelIndType wdiInd;
20971 tNoaStartIndMsg halNoaStartIndMsg;
20972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20973
20974 /*-------------------------------------------------------------------------
20975 Sanity check
20976 -------------------------------------------------------------------------*/
20977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20978 ( NULL == pEventData->pEventData ))
20979 {
20980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20981 "%s: Invalid parameters", __func__);
20982 WDI_ASSERT( 0 );
20983 return WDI_STATUS_E_FAILURE;
20984 }
20985
20986 /*-------------------------------------------------------------------------
20987 Extract indication and send it to UMAC
20988 -------------------------------------------------------------------------*/
20989 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20990 pEventData->pEventData,
20991 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20992
20993 /*Fill in the indication parameters*/
20994 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20995
20996 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20997 = halNoaStartIndMsg.noaStartIndParams.status;
20998
20999 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21000 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21001
21002 /*Notify UMAC*/
21003 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21004
21005 return WDI_STATUS_SUCCESS;
21006}/*WDI_ProcessNoaAttrInd*/
21007
21008/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021009*@brief Process Noa Attr Indication function (called when
21010 an indication of this kind is being received over the
21011 bus from HAL)
21012
21013 @param pWDICtx: pointer to the WLAN DAL context
21014 pEventData: pointer to the event information structure
21015
21016 @see
21017 @return Result of the function call
21018*/
21019WDI_Status
21020WDI_ProcessP2pNoaAttrInd
21021(
21022 WDI_ControlBlockType* pWDICtx,
21023 WDI_EventInfoType* pEventData
21024)
21025{
21026 WDI_LowLevelIndType wdiInd;
21027 tNoaAttrIndMsg halNoaAttrIndMsg;
21028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21029
21030 /*-------------------------------------------------------------------------
21031 Sanity check
21032 -------------------------------------------------------------------------*/
21033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21034 ( NULL == pEventData->pEventData ))
21035 {
21036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 WDI_ASSERT( 0 );
21039 return WDI_STATUS_E_FAILURE;
21040 }
21041
21042 /*-------------------------------------------------------------------------
21043 Extract indication and send it to UMAC
21044 -------------------------------------------------------------------------*/
21045 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21046 pEventData->pEventData,
21047 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21048
21049 /*Fill in the indication parameters*/
21050 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021051
Jeff Johnson295189b2012-06-20 16:38:30 -070021052 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21053 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021054
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21056 = halNoaAttrIndMsg.noaAttrIndParams.index;
21057 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21058 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21059 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21060 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021061
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21063 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21064 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21065 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21066 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21067 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21068 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21069 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021070
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21072 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21073 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21074 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21075 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21076 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21077 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21078 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21079
ltimariub77f24b2013-01-24 18:54:33 -080021080 if ( pWDICtx->wdiLowLevelIndCB )
21081 {
21082 /*Notify UMAC*/
21083 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21084 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021085
21086 return WDI_STATUS_SUCCESS;
21087}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021088
21089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021090 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 an indication of this kind is being received over the
21092 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021093
21094 @param pWDICtx: pointer to the WLAN DAL context
21095 pEventData: pointer to the event information structure
21096
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 @see
21098 @return Result of the function call
21099*/
21100WDI_Status
21101WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021102(
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 WDI_ControlBlockType* pWDICtx,
21104 WDI_EventInfoType* pEventData
21105)
21106{
21107 WDI_LowLevelIndType wdiInd;
21108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021109
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 /*-------------------------------------------------------------------------
21111 Extract indication and send it to UMAC
21112 -------------------------------------------------------------------------*/
21113 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021114 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21115
ltimariub77f24b2013-01-24 18:54:33 -080021116 if ( pWDICtx->wdiLowLevelIndCB )
21117 {
21118 /*Notify UMAC*/
21119 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21120 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021121
Jeff Johnsone7245742012-09-05 17:12:55 -070021122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021123}/*WDI_ProcessTxPerHitInd*/
21124
Jeff Johnson295189b2012-06-20 16:38:30 -070021125/**
Yue Mab9c86f42013-08-14 15:59:08 -070021126 @brief Process Periodic Tx Pattern Fw Indication function
21127
21128 @param pWDICtx: pointer to the WLAN DAL context
21129 pEventData: pointer to the event information structure
21130
21131 @see
21132 @return Result of the function call
21133*/
21134WDI_Status
21135WDI_ProcessPeriodicTxPtrnFwInd
21136(
21137 WDI_ControlBlockType* pWDICtx,
21138 WDI_EventInfoType* pEventData
21139)
21140{
21141 WDI_LowLevelIndType wdiInd;
21142
21143 /*-------------------------------------------------------------------------
21144 Sanity check
21145 -------------------------------------------------------------------------*/
21146 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21147 (NULL == pEventData->pEventData))
21148 {
21149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21150 "%s: Invalid parameters", __func__);
21151 WDI_ASSERT(0);
21152 return WDI_STATUS_E_FAILURE;
21153 }
21154
21155 /*-------------------------------------------------------------------------
21156 Extract indication and send it to UMAC
21157 -------------------------------------------------------------------------*/
21158 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21159 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21160 sizeof(tHalPeriodicTxPtrnFwInd));
21161
21162 if (pWDICtx->wdiLowLevelIndCB)
21163 {
21164 /*Notify UMAC*/
21165 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21166 }
21167
21168 return WDI_STATUS_SUCCESS;
21169}
21170
21171/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 @brief WDI_ProcessFTMCommandReq
21173 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021174
21175 @param pWDICtx: pointer to the WLAN DAL context
21176 pEventData: pointer to the event information structure
21177
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 @see
21179 @return Result of the function call
21180*/
21181WDI_Status
21182WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021183(
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 WDI_ControlBlockType* pWDICtx,
21185 WDI_EventInfoType* pEventData
21186)
21187{
21188 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21189 wpt_uint8 *ftmCommandBuffer = NULL;
21190 wpt_uint16 dataOffset;
21191 wpt_uint16 bufferSize;
21192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 -------------------------------------------------------------------------*/
21195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21196 ( NULL == pEventData->pEventData))
21197
21198 {
21199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 }
21204
21205 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21206
21207 /* Get MSG Buffer */
21208 WDI_GetMessageBuffer(pWDICtx,
21209 WDI_FTM_CMD_REQ,
21210 ftmCommandReq->bodyLength,
21211 &ftmCommandBuffer,
21212 &dataOffset,
21213 &bufferSize);
21214
21215 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21216 ftmCommandReq->FTMCommandBody,
21217 ftmCommandReq->bodyLength);
21218
21219 /* Send MSG */
21220 return WDI_SendMsg(pWDICtx,
21221 ftmCommandBuffer,
21222 bufferSize,
21223 pEventData->pCBfnc,
21224 pEventData->pUserData,
21225 WDI_FTM_CMD_RESP);
21226}
21227
21228/**
21229 @brief WDI_ProcessFTMCommandRsp
21230 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021231
21232 @param pWDICtx: pointer to the WLAN DAL context
21233 pEventData: pointer to the event information structure
21234
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 @see
21236 @return Result of the function call
21237*/
21238WDI_Status
21239WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021240(
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 WDI_ControlBlockType* pWDICtx,
21242 WDI_EventInfoType* pEventData
21243)
21244{
21245 WDI_FTMCommandRspCb ftmCMDRspCb;
21246 tProcessPttRspParams *ftmCMDRspData = NULL;
21247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21248
21249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 -------------------------------------------------------------------------*/
21252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21253 ( NULL == pEventData->pEventData))
21254 {
21255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021259 }
21260
21261 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21262
21263 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21264
Jeff Johnsone7245742012-09-05 17:12:55 -070021265 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21266 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21268
21269 /*Notify UMAC*/
21270 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21271
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021273}
Jeff Johnson295189b2012-06-20 16:38:30 -070021274/**
21275 @brief WDI_ProcessHalDumpCmdReq
21276 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021277
21278 @param pWDICtx: pointer to the WLAN DAL context
21279 pEventData: pointer to the event information structure
21280
Jeff Johnson295189b2012-06-20 16:38:30 -070021281 @see
21282 @return Result of the function call
21283*/
21284WDI_Status
21285WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021286(
Jeff Johnson295189b2012-06-20 16:38:30 -070021287 WDI_ControlBlockType* pWDICtx,
21288 WDI_EventInfoType* pEventData
21289)
21290{
21291 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21292 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21293 wpt_uint16 usDataOffset = 0;
21294 wpt_uint16 usSendSize = 0;
21295 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297
21298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 -------------------------------------------------------------------------*/
21301 if (( NULL == pEventData ) ||
21302 ( NULL == pEventData->pEventData) ||
21303 ( NULL == pEventData->pCBfnc ))
21304 {
21305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 }
21310
21311 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21312 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21313
21314 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021325
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 /*-----------------------------------------------------------------------
21327 Get message buffer
21328 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21331 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21334 {
21335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021336 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 }
21341
Jeff Johnsone7245742012-09-05 17:12:55 -070021342 wpalMemoryCopy( pSendBuffer+usDataOffset,
21343 &halDumpCmdReqMsg.dumpCmdReqParams,
21344 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021345
21346 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021348
21349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21353 wdiHALDumpCmdRspCb, pEventData->pUserData,
21354 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021355}
21356
21357/**
21358 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 Process hal Dump Command Response from HAL, simply route to HDD
21360
21361 @param pWDICtx: pointer to the WLAN DAL context
21362 pEventData: pointer to the event information structure
21363
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 @see
21365 @return Result of the function call
21366*/
21367WDI_Status
21368WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021369(
Jeff Johnson295189b2012-06-20 16:38:30 -070021370 WDI_ControlBlockType* pWDICtx,
21371 WDI_EventInfoType* pEventData
21372)
21373{
21374 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021375 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21377
21378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 -------------------------------------------------------------------------*/
21381 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21382 ( NULL == pEventData->pEventData))
21383 {
21384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 }
21389
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021391
21392 /*Initialize the WDI Response structure */
21393 wdiHALDumpCmdRsp.usBufferLen = 0;
21394 wdiHALDumpCmdRsp.pBuffer = NULL;
21395
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021396 wpalMemoryCopy( &halDumpCmdRspParams,
21397 pEventData->pEventData,
21398 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021399
21400 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021401 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021402
21403 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021404 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021405 {
21406 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021407 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21408 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21409
21410 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21411 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021412 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021413 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021414
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 /*Notify UMAC*/
21416 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21417
21418 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21419 {
21420 /* Free the allocated buffer */
21421 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21422 }
21423 return WDI_STATUS_SUCCESS;
21424}
21425
21426/*==========================================================================
21427 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021428
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021430 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021431==========================================================================*/
21432/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021433 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021434 when it wishes to send up a notification like the ones
21435 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021436
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021438
21439 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 wctsNotifyCBData: the callback data of the user
21442
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021444
21445 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021446*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021447void
Jeff Johnson295189b2012-06-20 16:38:30 -070021448WDI_NotifyMsgCTSCB
21449(
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 WCTS_NotifyEventType wctsEvent,
21452 void* wctsNotifyCBData
21453)
21454{
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21457
21458 if (NULL == pWDICtx )
21459 {
21460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 }
21465
21466 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21467 {
21468 /* callback presumably occurred after close */
21469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021470 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 }
21473
21474 if ( WCTS_EVENT_OPEN == wctsEvent )
21475 {
21476 /*Flag must be set atomically as it is checked from incoming request
21477 functions*/
21478 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480
21481 /*Nothing to do - so try to dequeue any pending request that may have
21482 occurred while we were trying to establish this*/
21483 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021484 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 {
21488 /*Flag must be set atomically as it is checked from incoming request
21489 functions*/
21490 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492
21493 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021494 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 wpalMutexRelease(&pWDICtx->wptMutex);
21496
21497 /*Notify that the Control Channel is closed */
21498 wpalEventSet(&pWDICtx->wctsActionEvent);
21499 }
21500
21501}/*WDI_NotifyMsgCTSCB*/
21502
21503
21504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 when it wishes to send up a packet received over the
21507 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021508
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021510
21511 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 pMsg: the packet
21513 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 wctsRxMsgCBData: the callback data of the user
21515
Jeff Johnson295189b2012-06-20 16:38:30 -070021516 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021517
21518 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021519*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021520void
21521WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021522(
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 void* pMsg,
21525 wpt_uint32 uLen,
21526 void* wctsRxMsgCBData
21527)
21528{
Jeff Johnsone7245742012-09-05 17:12:55 -070021529 tHalMsgHeader *pHalMsgHeader;
21530 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21533
21534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021537 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 ( uLen < sizeof(tHalMsgHeader)))
21539 {
21540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021543 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 }
21545
21546 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21547 {
21548 /* callback presumably occurred after close */
21549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021550 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021551 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021552 }
21553
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 context - so no serialization is necessary here
21556 ! - revisit this assumption */
21557
21558 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21559
21560 if ( uLen != pHalMsgHeader->msgLen )
21561 {
21562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21563 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021565 wpalWlanReload();
21566
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 }
21569
21570 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21571
21572 /*The message itself starts after the header*/
21573 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21574 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21575 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21576 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21577
21578
21579 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21580 {
21581 /*Stop the timer as the response was received */
21582 /*!UT - check for potential race conditions between stop and response */
21583 wpalTimerStop(&pWDICtx->wptResponseTimer);
21584 }
21585 /* Check if we receive a response message which is not expected */
21586 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21587 {
21588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21589 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21590 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21593 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021594
21595 if (gWDICb.bEnableSSR == false)
21596 {
21597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21598 "SSR is not enabled on WDI timeout");
21599 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21600 return;
21601 }
21602 wpalWcnssResetIntr();
21603 /* if this timer fires, it means Riva did not receive the FIQ */
21604 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21605
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 return;
21607 }
21608
21609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21610 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21611
21612 /*Post response event to the state machine*/
21613 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21614
21615}/*WDI_RXMsgCTSCB*/
21616
21617
21618/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021620========================================================================*/
21621
21622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021623 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021625
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 @param pWDICtx - pointer to the control block
21627
21628 @return Result of the function call
21629*/
21630WPT_INLINE WDI_Status
21631WDI_CleanCB
21632(
21633 WDI_ControlBlockType* pWDICtx
21634)
21635{
21636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21637
21638 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021640
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21643 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21644
21645 WDI_ResetAssocSessions( pWDICtx );
21646
21647 return WDI_STATUS_SUCCESS;
21648}/*WDI_CleanCB*/
21649
21650
21651/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021653
Jeff Johnsone7245742012-09-05 17:12:55 -070021654
21655 @param pWDICtx: pointer to the WLAN DAL context
21656 pEventData: pointer to the event information structure
21657
Jeff Johnson295189b2012-06-20 16:38:30 -070021658 @see
21659 @return Result of the function call
21660*/
21661WPT_INLINE WDI_Status
21662WDI_ProcessRequest
21663(
21664 WDI_ControlBlockType* pWDICtx,
21665 WDI_EventInfoType* pEventData
21666)
21667{
21668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21669
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 already checked these pointers*/
21672
21673 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21674 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021677 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 WDI_getReqMsgString(pEventData->wdiRequest),
21679 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21680 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21681 }
21682 else
21683 {
21684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021685 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 pEventData->wdiRequest);
21687 return WDI_STATUS_E_NOT_IMPLEMENT;
21688 }
21689}/*WDI_ProcessRequest*/
21690
21691
21692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 prefixes it with a send message header
21696
21697 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 wdiReqType: type of the request being sent
21699 uBufferLen: message buffer len
21700 pMsgBuffer: resulting allocated buffer
21701 pusDataOffset: offset in the buffer where the caller
21702 can start copying its message data
21703 puBufferSize: the resulting buffer size (offset+buff
21704 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021705
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 @see
21707 @return Result of the function call
21708*/
21709WDI_Status
21710WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021711(
21712 WDI_ControlBlockType* pWDICtx,
21713 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021715 wpt_uint8** pMsgBuffer,
21716 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 wpt_uint16* pusBufferSize
21718)
21719{
21720 tHalMsgHeader halMsgHeader;
21721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21722
Jeff Johnsone7245742012-09-05 17:12:55 -070021723 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021724 again*/
21725
21726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021727 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21731 if ( NULL == *pMsgBuffer )
21732 {
21733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21734 "Unable to allocate message buffer for req %s (%d)",
21735 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 }
21740
21741 /*-------------------------------------------------------------------------
21742 Fill in the message header
21743 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21745 /* Fill msgVersion */
21746#ifdef WLAN_FEATURE_11AC
21747 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021748 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 else
21750#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021751 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021752
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21754 *pusDataOffset = sizeof(halMsgHeader);
21755 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21756
21757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021758}/*WDI_GetMessageBuffer*/
21759
21760
21761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 the CB
21765
21766 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021768
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 usSendSize size of the buffer to be sent
21770 pRspCb: response callback - save in the WDI
21771 CB
21772 pUserData: user data associated with the
21773 callback
21774 wdiExpectedResponse: the code of the response that is
21775 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021776
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 @see
21778 @return Result of the function call
21779*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021781WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021782(
21783 WDI_ControlBlockType* pWDICtx,
21784 wpt_uint8* pSendBuffer,
21785 wpt_uint32 usSendSize,
21786 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021787 void* pUserData,
21788 WDI_ResponseEnumType wdiExpectedResponse
21789)
21790{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021791 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021792 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21794
21795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021796 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 ------------------------------------------------------------------------*/
21798 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 pWDICtx->pfncRspCB = pRspCb;
21800 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021801
21802 /*-----------------------------------------------------------------------
21803 Call the CTS to send this message over - free message afterwards
21804 - notify transport failure
21805 Note: CTS is reponsible for freeing the message buffer.
21806 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021807 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21808 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21809 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021812 "Failed to send message with expected response %s (%d)"
21813 " over the bus - catastrophic failure",
21814 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21815 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021816
Jeff Johnsond13512a2012-07-17 11:42:19 -070021817 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021819 else
21820 {
21821 /* even when message was placed in CTS deferred Q, we will treat it
21822 success but log this info
21823 */
21824 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21825 {
21826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21827 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21828 "response %s (%d)",
21829 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21830 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021831 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021832 }
21833 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021834
Jeff Johnsond13512a2012-07-17 11:42:19 -070021835 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 if ( NULL != pWDICtx->wdiReqStatusCB )
21837 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021838 /*Inform originator whether request went through or not*/
21839 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21840 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 pWDICtx->wdiReqStatusCB = NULL;
21842 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021843 callback(wdiStatus, callbackContext);
21844
21845 /*For WDI requests which have registered a request callback,
21846 inform the WDA caller of the same via setting the return value
21847 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21848 end up repeating the functonality in the req callback for the
21849 WDI_STATUS_E_FAILURE case*/
21850 if (wdiStatus == WDI_STATUS_E_FAILURE)
21851 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 }
21853
Jeff Johnsond13512a2012-07-17 11:42:19 -070021854 if ( wdiStatus == WDI_STATUS_SUCCESS )
21855 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 /*Start timer for the expected response */
21857 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021858
21859 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021860 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021861 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021862 }
21863 else
21864 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021865 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021866 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21867 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021868
Jeff Johnsond13512a2012-07-17 11:42:19 -070021869 return wdiStatus;
21870
Jeff Johnson295189b2012-06-20 16:38:30 -070021871}/*WDI_SendMsg*/
21872
21873
21874
21875/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021876 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 the bus using the control transport and saves some info
21878 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021879
21880 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 pSendBuffer: buffer to be sent
21882 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021883
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 @see
21885 @return Result of the function call
21886*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021888WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021889(
21890 WDI_ControlBlockType* pWDICtx,
21891 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 wpt_uint32 usSendSize
21893)
21894{
21895 wpt_uint32 uStatus ;
21896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21897
21898 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021899 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021900 Note: CTS is reponsible for freeing the message buffer.
21901 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 (void*)pSendBuffer, usSendSize );
21904
21905 /*Inform Upper MAC about the outcome of the request*/
21906 if ( NULL != pWDICtx->wdiReqStatusCB )
21907 {
21908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21909 "Send indication status : %d", uStatus);
21910
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021911 /* even if CTS placed indication into its deferred Q, we treat it
21912 * as success and let CTS drain its queue as per smd interrupt to CTS
21913 */
21914 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 -070021915 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 }
21917
21918 /*If sending of the message failed - it is considered catastrophic and
21919 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021920 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21921 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21922
Jeff Johnson295189b2012-06-20 16:38:30 -070021923 {
21924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021925 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021926
21927 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21928 return WDI_STATUS_E_FAILURE;
21929 }
21930
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021932}/*WDI_SendIndication*/
21933
21934
21935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 @brief WDI_DetectedDeviceError - called internally by DAL when
21937 it has detected a failure in the device
21938
21939 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 usErrorCode: error code detected by WDI or received
21941 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021942
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021945*/
21946void
21947WDI_DetectedDeviceError
21948(
21949 WDI_ControlBlockType* pWDICtx,
21950 wpt_uint16 usErrorCode
21951)
21952{
21953 WDI_LowLevelIndType wdiInd;
21954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21955
21956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21957 "Device Error detected code: %d - transitioning to stopped state",
21958 usErrorCode);
21959
Katya Nigamf02ad012014-05-05 16:12:49 +053021960 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
21961
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 wpalMutexAcquire(&pWDICtx->wptMutex);
21963
21964 WDI_STATableStop(pWDICtx);
21965
21966 WDI_ResetAssocSessions(pWDICtx);
21967
21968 /*Set the expected state transition to stopped - because the device
21969 experienced a failure*/
21970 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21971
21972 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021974
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021976
21977 /*TO DO: - there should be an attempt to reset the device here*/
21978
21979 wpalMutexRelease(&pWDICtx->wptMutex);
21980
21981 /*------------------------------------------------------------------------
21982 Notify UMAC if a handler is registered
21983 ------------------------------------------------------------------------*/
21984 if (pWDICtx->wdiLowLevelIndCB)
21985 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21987 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021988
21989 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21990 }
21991}/*WDI_DetectedDeviceError*/
21992
21993/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 we started on send message has expire - this should
21996 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 reply - trigger catastrophic failure
21998 @param
21999
Jeff Johnson295189b2012-06-20 16:38:30 -070022000 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022001
22002 @see
22003 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022004*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022005void
Jeff Johnson295189b2012-06-20 16:38:30 -070022006WDI_ResponseTimerCB
22007(
22008 void *pUserData
22009)
22010{
22011 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22013
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022014 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 }
22021
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022022 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022023 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022024 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022025
22026 /* If response timer is running at this time that means this timer
22027 * event is not for the last request but rather last-to-last request and
22028 * this timer event has come after we recevied respone for last-to-last
22029 * message
22030 */
22031 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22032 {
22033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22034 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022035 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022036 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22038 "uArchTimeStampTmrStart: %llu seconds, "
22039 "uArchTimeStampTmrExp: %llu seconds",
22040 pWDICtx->uArchTimeStampRspTmrStart,
22041 pWDICtx->uArchTimeStampRspTmrExp);
22042
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022043 return;
22044 }
22045
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022046 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 {
22048
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022051 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022053 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22054 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22056 "uArchTimeStampTmrStart: %llu seconds, "
22057 "uArchTimeStampTmrExp: %llu seconds",
22058 pWDICtx->uArchTimeStampRspTmrStart,
22059 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022060
22061 /* WDI timeout means Riva is not responding or SMD communication to Riva
22062 * is not happening. The only possible way to recover from this error
22063 * is to initiate SSR from APPS.
22064 * There is also an option to re-enable wifi, which will eventually
22065 * trigger SSR
22066 */
22067 if (gWDICb.bEnableSSR == false)
22068 {
22069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22070 "SSR is not enabled on WDI timeout");
22071 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22072 return;
22073 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022074#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022075 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022076 if(wpalIsWDresetInProgress())
22077 {
22078 wpalDevicePanic();
22079 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022080 /* if this timer fires, it means Riva did not receive the FIQ */
22081 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022082#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022083 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22084 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022085#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 }
22087 else
22088 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022090 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022091 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022092 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22093 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22095 "uArchTimeStampTmrStart: %llu seconds, "
22096 "uArchTimeStampTmrExp: %llu seconds",
22097 pWDICtx->uArchTimeStampRspTmrStart,
22098 pWDICtx->uArchTimeStampRspTmrExp);
22099
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 }
22101
22102 return;
22103
22104}/*WDI_ResponseTimerCB*/
22105
22106
22107/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022109
Jeff Johnsone7245742012-09-05 17:12:55 -070022110
22111 @param pWDICtx: pointer to the WLAN DAL context
22112 pEventData: pointer to the event information structure
22113
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 @see
22115 @return Result of the function call
22116*/
22117WPT_INLINE WDI_Status
22118WDI_ProcessResponse
22119(
22120 WDI_ControlBlockType* pWDICtx,
22121 WDI_EventInfoType* pEventData
22122)
22123{
22124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22125
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 already checked these pointers
22128 ! - revisit this assumption */
22129 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22130 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022133 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 WDI_getRespMsgString(pEventData->wdiResponse),
22135 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22136 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22137 }
22138 else
22139 {
22140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 pEventData->wdiResponse);
22143 return WDI_STATUS_E_NOT_IMPLEMENT;
22144 }
22145}/*WDI_ProcessResponse*/
22146
22147
22148/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022150=========================================================================*/
22151
22152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 @brief Utility function used by the DAL Core to help queue a
22154 request that cannot be processed right away.
22155 @param
22156
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 pWDICtx: - pointer to the WDI control block
22158 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 queued
22160
22161 @see
22162 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022163*/
22164WDI_Status
22165WDI_QueuePendingReq
22166(
22167 WDI_ControlBlockType* pWDICtx,
22168 WDI_EventInfoType* pEventData
22169)
22170{
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22175
22176 if ( NULL == pEventDataQueue )
22177 {
22178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 WDI_ASSERT(0);
22181 return WDI_STATUS_MEM_FAILURE;
22182 }
22183
22184 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22185 pEventDataQueue->pUserData = pEventData->pUserData;
22186 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22187 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022189
22190 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22191 {
22192 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022193
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 if ( NULL == pEventInfo )
22195 {
22196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 WDI_ASSERT(0);
22199 wpalMemoryFree(pEventDataQueue);
22200 return WDI_STATUS_MEM_FAILURE;
22201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022202
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22204
22205 }
22206 pEventDataQueue->pEventData = pEventInfo;
22207
22208 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022210
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022212
22213 return WDI_STATUS_SUCCESS;
22214}/*WDI_QueuePendingReq*/
22215
22216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022219 @param
22220
22221 pMsg - pointer to the message
22222
22223 @see
22224 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022225*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022226void
Jeff Johnson295189b2012-06-20 16:38:30 -070022227WDI_PALCtrlMsgCB
22228(
22229 wpt_msg *pMsg
22230)
22231{
22232 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 WDI_ControlBlockType* pWDICtx = NULL;
22234 WDI_Status wdiStatus;
22235 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 void* pUserData;
22237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22238
22239 if (( NULL == pMsg )||
22240 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22241 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22242 {
22243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 }
22248
22249 /*Transition back to the state that we had before serialization
22250 - serialization transitions us to BUSY to stop any incomming requests
22251 ! TO DO L: possible race condition here if a request comes in between the
22252 state transition and the post function*/
22253
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022255
22256 /*-----------------------------------------------------------------------
22257 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 -----------------------------------------------------------------------*/
22260 switch ( pEventData->wdiRequest )
22261 {
22262
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22265 break;
22266
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 case WDI_NV_DOWNLOAD_REQ:
22268 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22269 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22270 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22271 {
22272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022273 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22275 }
22276 else
22277 {
22278 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22279 }
22280
22281 break;
22282
22283 default:
22284 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22285 break;
22286 }/*switch ( pEventData->wdiRequest )*/
22287
22288 if ( WDI_STATUS_SUCCESS != wdiStatus )
22289 {
22290 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22291
22292 if ( NULL != pfnReqStatusCB )
22293 {
22294 /*Fail the request*/
22295 pfnReqStatusCB( wdiStatus, pUserData);
22296 }
22297 }
22298
22299 /* Free data - that was allocated when queueing*/
22300 if( pEventData != NULL )
22301 {
22302 if( pEventData->pEventData != NULL )
22303 {
22304 wpalMemoryFree(pEventData->pEventData);
22305 }
22306 wpalMemoryFree(pEventData);
22307 }
22308
22309 if( pMsg != NULL )
22310 {
22311 wpalMemoryFree(pMsg);
22312 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022313
Jeff Johnson295189b2012-06-20 16:38:30 -070022314}/*WDI_PALCtrlMsgCB*/
22315
22316/**
22317 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 and schedule for execution a pending request
22319 @param
22320
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 pWDICtx: - pointer to the WDI control block
22322 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 queued
22324
22325 @see
22326 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022327*/
22328WDI_Status
22329WDI_DequeuePendingReq
22330(
22331 WDI_ControlBlockType* pWDICtx
22332)
22333{
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22338
Jeff Johnsone7245742012-09-05 17:12:55 -070022339 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022340
22341 if ( NULL == pNode )
22342 {
22343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022344 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 return WDI_STATUS_SUCCESS;
22346 }
22347
22348 /*The node actually points to the 1st element inside the Event Data struct -
22349 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022351
22352 /*Serialize processing in the control thread
22353 !TO DO: - check to see if these are all the messages params that need
22354 to be filled in*/
22355 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22356
22357 if ( NULL == palMsg )
22358 {
22359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 palMsg->callback = WDI_PALCtrlMsgCB;
22366 palMsg->ptr = pEventData;
22367
22368 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022370 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022371
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 /*Transition back to BUSY as we need to handle a queued request*/
22373 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022374
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22376
22377 return WDI_STATUS_PENDING;
22378}/*WDI_DequeuePendingReq*/
22379
22380
22381/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022382 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 away.- The assoc requests will be queued by BSSID
22385 @param
22386
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 pWDICtx: - pointer to the WDI control block
22388 pEventData: pointer to the evnt info that needs to be queued
22389 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022390
22391 @see
22392 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022393*/
22394WDI_Status
22395WDI_QueueNewAssocRequest
22396(
22397 WDI_ControlBlockType* pWDICtx,
22398 WDI_EventInfoType* pEventData,
22399 wpt_macAddr macBSSID
22400)
22401{
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 wpt_uint8 i;
22403 WDI_BSSSessionType* pSession = NULL;
22404 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022406 void* pEventInfo;
22407 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022409
Jeff Johnsone7245742012-09-05 17:12:55 -070022410
22411 /*------------------------------------------------------------------------
22412 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 ------------------------------------------------------------------------*/
22414 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22415 {
22416 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22417 {
22418 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 pSession = &pWDICtx->aBSSSessions[i];
22420 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 }
22422 }
22423
22424 if ( i >= WDI_MAX_BSS_SESSIONS )
22425 {
22426 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022429
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 /*------------------------------------------------------------------------
22431 Fill in the BSSID for this session and set the usage flag
22432 ------------------------------------------------------------------------*/
22433 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435
22436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022437 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 ------------------------------------------------------------------------*/
22439 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22440 if ( NULL == pEventDataQueue )
22441 {
22442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022443 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 WDI_ASSERT(0);
22445 return WDI_STATUS_MEM_FAILURE;
22446 }
22447
22448 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22449 if ( NULL == pSessionIdElement )
22450 {
22451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022452 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 WDI_ASSERT(0);
22454 wpalMemoryFree(pEventDataQueue);
22455 return WDI_STATUS_MEM_FAILURE;
22456 }
22457
22458 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22459 if ( NULL == pEventInfo )
22460 {
22461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022462 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 WDI_ASSERT(0);
22464 wpalMemoryFree(pSessionIdElement);
22465 wpalMemoryFree(pEventDataQueue);
22466 return WDI_STATUS_MEM_FAILURE;
22467 }
22468
22469 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22470 pEventDataQueue->pUserData = pEventData->pUserData;
22471 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22472 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474
22475 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22476 pEventDataQueue->pEventData = pEventInfo;
22477
22478 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480
22481 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022482 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022483
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022485
22486 /*We need to maintain a separate list that keeps track of the order in which
22487 the new assoc requests are being queued such that we can start processing
22488 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 pSessionIdElement->ucIndex = i;
22490 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022491
22492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22493 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022495
22496 /*Return pending as this is what the status of the request is since it has
22497 been queued*/
22498 return WDI_STATUS_PENDING;
22499}/*WDI_QueueNewAssocRequest*/
22500
22501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 away.- The assoc requests will be queued by BSSID
22505 @param
22506
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 pWDICtx: - pointer to the WDI control block
22508 pSession: - session in which to queue
22509 pEventData: pointer to the event info that needs to be
22510 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022511
22512 @see
22513 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022514*/
22515WDI_Status
22516WDI_QueueAssocRequest
22517(
22518 WDI_ControlBlockType* pWDICtx,
22519 WDI_BSSSessionType* pSession,
22520 WDI_EventInfoType* pEventData
22521)
22522{
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022525 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022527
22528 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 Sanity check
22530 ------------------------------------------------------------------------*/
22531 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22532 {
22533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022535
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 }
22538
22539 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022540 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 ------------------------------------------------------------------------*/
22542 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22543 if ( NULL == pEventDataQueue )
22544 {
22545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022546 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 WDI_ASSERT(0);
22548 return WDI_STATUS_MEM_FAILURE;
22549 }
22550
22551 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22552 if ( NULL == pEventInfo )
22553 {
22554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22555 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022556 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 WDI_ASSERT(0);
22558 wpalMemoryFree(pEventDataQueue);
22559 return WDI_STATUS_MEM_FAILURE;
22560 }
22561
22562 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22563 pEventDataQueue->pUserData = pEventData->pUserData;
22564 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22565 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 pEventDataQueue->pEventData = pEventInfo;
22568
22569 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22570
22571 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022573
22574 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022576
Jeff Johnsone7245742012-09-05 17:12:55 -070022577 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022578
22579 /*The result of this operation is pending because the request has been
22580 queued and it will be processed at a later moment in time */
22581 return WDI_STATUS_PENDING;
22582}/*WDI_QueueAssocRequest*/
22583
22584/**
22585 @brief Utility function used by the DAL Core to help dequeue
22586 an association request that was pending
22587 The request will be queued up in front of the main
22588 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 @param
22590
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022592
22593
22594 @see
22595 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022596*/
22597WDI_Status
22598WDI_DequeueAssocRequest
22599(
22600 WDI_ControlBlockType* pWDICtx
22601)
22602{
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 wpt_list_node* pNode = NULL;
22604 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 WDI_BSSSessionType* pSession;
22606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022607
22608 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 Sanity check
22610 ------------------------------------------------------------------------*/
22611 if ( NULL == pWDICtx )
22612 {
22613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022615
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022617 }
22618
22619 /*------------------------------------------------------------------------
22620 An association has been completed => a new association can occur
22621 Check to see if there are any pending associations ->
22622 If so , transfer all the pending requests into the busy queue for
22623 processing
22624 These requests have arrived prior to the requests in the busy queue
22625 (bc they needed to be processed in order to be placed in this queue)
22626 => they will be placed at the front of the busy queue
22627 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022629
22630 if ( NULL == pNode )
22631 {
22632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 return WDI_STATUS_SUCCESS;
22635 }
22636
22637 /*The node actually points to the 1st element inside the Session Id struct -
22638 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022640
22641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22642 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22643
22644 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22645 {
22646 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022647
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 the front of the main waiting queue for subsequent execution*/
22650 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 while ( NULL != pNode )
22652 {
22653 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22655 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 }
22659 else
22660 {
22661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 WPAL_ASSERT(0);
22664 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022667
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22669 wpalMemoryFree(pSessionIdElement);
22670 return WDI_STATUS_SUCCESS;
22671}/*WDI_DequeueAssocRequest*/
22672
22673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022674 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 pending requests - all req cb will be called with
22676 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 @param
22678
Jeff Johnson295189b2012-06-20 16:38:30 -070022679 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022680
22681 @see
22682 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022683*/
22684WDI_Status
22685WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022686(
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 WDI_ControlBlockType* pWDICtx
22688)
22689{
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 void* pUserData;
22694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22695
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022697
22698 /*------------------------------------------------------------------------
22699 Go through all the requests and fail them - this will only be called
22700 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022702 ------------------------------------------------------------------------*/
22703 while( pNode )
22704 {
22705 /*The node actually points to the 1st element inside the Event Data struct -
22706 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 pEventDataQueue = (WDI_EventInfoType*)pNode;
22708
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22710 if ( NULL != pfnReqStatusCB )
22711 {
22712 /*Fail the request*/
22713 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22714 }
22715 /* Free data - that was allocated when queueing */
22716 if ( pEventDataQueue->pEventData != NULL )
22717 {
22718 wpalMemoryFree(pEventDataQueue->pEventData);
22719 }
22720 wpalMemoryFree(pEventDataQueue);
22721
22722 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22723 {
22724 break;
22725 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 }
22727
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 return WDI_STATUS_SUCCESS;
22729}/*WDI_ClearPendingRequests*/
22730
22731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 @brief Helper routine used to init the BSS Sessions in the WDI control block
22733
22734
22735 @param pWDICtx: pointer to the WLAN DAL context
22736
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 @see
22738*/
22739void
22740WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022741(
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 WDI_ControlBlockType* pWDICtx
22743)
22744{
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22747
22748 /*-------------------------------------------------------------------------
22749 No Sanity check
22750 -------------------------------------------------------------------------*/
22751 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22752 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22755 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22756 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22757 }
22758}/*WDI_ResetAssocSessions*/
22759
22760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 @brief Helper routine used to find a session based on the BSSID
22762
22763
22764 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022766 pSession: pointer to the session (if found)
22767
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022770*/
22771wpt_uint8
22772WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022773(
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 WDI_ControlBlockType* pWDICtx,
22775 wpt_macAddr macBSSID,
22776 WDI_BSSSessionType** ppSession
22777)
22778{
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22781
22782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 -------------------------------------------------------------------------*/
22785 if ( NULL == ppSession )
22786 {
22787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022788 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 }
22791
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022793
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 /*------------------------------------------------------------------------
22795 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 ------------------------------------------------------------------------*/
22797 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22798 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022799 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22800 (eWLAN_PAL_TRUE ==
22801 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22802 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 {
22804 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 return i;
22807 }
22808 }
22809
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022811}/*WDI_FindAssocSession*/
22812
22813/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 @brief Helper routine used to find a session based on the BSSID
22815
22816
22817 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 ucBSSIdx: BSS Index of the session
22819 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022820
Jeff Johnson295189b2012-06-20 16:38:30 -070022821 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022822 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022823*/
22824wpt_uint8
22825WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022826(
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 WDI_ControlBlockType* pWDICtx,
22828 wpt_uint16 ucBSSIdx,
22829 WDI_BSSSessionType** ppSession
22830)
22831{
Jeff Johnsone7245742012-09-05 17:12:55 -070022832 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22834
22835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 -------------------------------------------------------------------------*/
22838 if ( NULL == ppSession )
22839 {
22840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022841 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 }
22844
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022846
Jeff Johnsone7245742012-09-05 17:12:55 -070022847 /*------------------------------------------------------------------------
22848 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 ------------------------------------------------------------------------*/
22850 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22851 {
22852 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22853 {
22854 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 return i;
22857 }
22858 }
22859
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022861}/*WDI_FindAssocSessionByBSSIdx*/
22862
22863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 @brief Helper routine used to find a session based on the BSSID
22865
22866
22867 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 ucBSSIdx: BSS Index of the session
22869 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022870
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022872 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022873*/
22874wpt_uint8
22875WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022876(
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 WDI_ControlBlockType* pWDICtx,
22878 wpt_uint16 usIdx,
22879 WDI_BSSSessionType** ppSession
22880)
22881{
22882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22883
22884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022886 -------------------------------------------------------------------------*/
22887 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22888 {
22889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022890 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022891 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 }
22893
22894 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022896
22897 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022898
Jeff Johnson295189b2012-06-20 16:38:30 -070022899}/*WDI_FindAssocSessionByBSSIdx*/
22900
22901/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022903 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022904
22905
22906 @param pWDICtx: pointer to the WLAN DAL context
22907 pSession: pointer to the session (if found)
22908
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022911*/
22912wpt_uint8
22913WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022914(
Jeff Johnson295189b2012-06-20 16:38:30 -070022915 WDI_ControlBlockType* pWDICtx,
22916 WDI_BSSSessionType** ppSession
22917)
22918{
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022923 -------------------------------------------------------------------------*/
22924 if ( NULL == ppSession )
22925 {
22926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022927 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022928 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 }
22930
Jeff Johnsone7245742012-09-05 17:12:55 -070022931 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022932
Jeff Johnsone7245742012-09-05 17:12:55 -070022933 /*------------------------------------------------------------------------
22934 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 ------------------------------------------------------------------------*/
22936 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22937 {
22938 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22939 {
22940 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 return i;
22943 }
22944 }
22945
Jeff Johnsone7245742012-09-05 17:12:55 -070022946 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022947}/*WDI_FindEmptySession*/
22948
22949
22950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022951 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022952 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022953
22954
22955 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022956 macBSSID: pointer to BSSID. If NULL, get all the session.
22957 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22958 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22959 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 @see
22961 @return Number of sessions in use
22962*/
22963wpt_uint8
22964WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022965(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022966 WDI_ControlBlockType* pWDICtx,
22967 wpt_macAddr macBSSID,
22968 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022969)
22970{
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022973
22974 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 Count all sessions in use
22976 ------------------------------------------------------------------------*/
22977 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22978 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022979 if ( macBSSID && skipBSSID &&
22980 (eWLAN_PAL_TRUE ==
22981 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22982 WDI_MAC_ADDR_LEN)))
22983 {
22984 continue;
22985 }
22986 else if ( pWDICtx->aBSSSessions[i].bInUse )
22987 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022989 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 }
22991
Jeff Johnsone7245742012-09-05 17:12:55 -070022992 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022993}/*WDI_GetActiveSessionsCount*/
22994
22995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022998
22999
23000 @param pWDICtx: pointer to the WLAN DAL context
23001 pSession: pointer to the session (if found)
23002
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023005*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023006void
Jeff Johnson295189b2012-06-20 16:38:30 -070023007WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023008(
Jeff Johnson295189b2012-06-20 16:38:30 -070023009 WDI_ControlBlockType* pWDICtx,
23010 WDI_BSSSessionType* ppSession
23011)
23012{
23013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 -------------------------------------------------------------------------*/
23016 if ( NULL == ppSession )
23017 {
23018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023019 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023021 }
23022
Jeff Johnsone7245742012-09-05 17:12:55 -070023023 /*------------------------------------------------------------------------
23024 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 ------------------------------------------------------------------------*/
23026 wpal_list_destroy(&ppSession->wptPendingQueue);
23027 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23029 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023030 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23031 wpal_list_init(&ppSession->wptPendingQueue);
23032
23033}/*WDI_DeleteSession*/
23034
23035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023036 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 @param
23039
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 WDI_AddStaParams: - pointer to the WDI Add STA params
23041 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023042
23043 @see
23044 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023045*/
23046void
23047WDI_AddBcastSTAtoSTATable
23048(
23049 WDI_ControlBlockType* pWDICtx,
23050 WDI_AddStaParams * staParams,
23051 wpt_uint16 usBcastStaIdx
23052)
23053{
23054 WDI_AddStaParams wdiAddSTAParam = {0};
23055 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23057
23058 /*---------------------------------------------------------------------
23059 Sanity check
23060 ---------------------------------------------------------------------*/
23061 if ( NULL == staParams )
23062 {
23063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023065
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 }
23068
23069 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23070 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23071 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23072 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23073 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23074 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23075 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23076 WDI_MAC_ADDR_LEN );
23077 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23078 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23079 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23080 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23081 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23082 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23083 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023084
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23086}
23087
23088/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 @brief NV blob will be divided into fragments of size 4kb and
23090 Sent to HAL
23091
23092 @param pWDICtx: pointer to the WLAN DAL context
23093 pEventData: pointer to the event information structure
23094
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 @see
23096 @return Result of the function call
23097 */
23098
23099WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023100(
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 WDI_ControlBlockType* pWDICtx,
23102 WDI_EventInfoType* pEventData
23103)
23104{
23105
23106 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23107 wpt_uint8* pSendBuffer = NULL;
23108 wpt_uint16 usDataOffset = 0;
23109 wpt_uint16 usSendSize = 0;
23110 wpt_uint16 usCurrentFragmentSize =0;
23111 wpt_uint8* pSrcBuffer = NULL;
23112 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23113 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23114
23115 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23116 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23117 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23118
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23121
23122 /* Update the current Fragment Number */
23123 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23124
23125 /*Update the HAL REQ structure */
23126 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23127 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23128 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23129
23130 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023132 image will be sent to HAL*/
23133
Jeff Johnsone7245742012-09-05 17:12:55 -070023134 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023136 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23140 usCurrentFragmentSize = FRAGMENT_SIZE;
23141
23142 /*Update the HAL REQ structure */
23143 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23144 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23145
23146 }
23147 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 usCurrentFragmentSize = FRAGMENT_SIZE;
23150
23151 /*Update the HAL REQ structure */
23152 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23153 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23154 }
23155
23156 /*-----------------------------------------------------------------------
23157 Get message buffer
23158 -----------------------------------------------------------------------*/
23159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23160 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23161 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023162 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023163 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23164 {
23165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023166 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023167 pEventData, pwdiNvDownloadReqParams);
23168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 }
23171
23172 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23175
23176 /* Appending the NV image fragment */
23177 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23178 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23179 usCurrentFragmentSize);
23180
23181 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023183
Jeff Johnsone7245742012-09-05 17:12:55 -070023184 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23185 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 WDI_NV_DOWNLOAD_RESP);
23187
23188}
Jeff Johnsone7245742012-09-05 17:12:55 -070023189/*============================================================================
23190 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023191 ============================================================================*/
23192/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 @brief Helper routine used to find a session based on the BSSID
23194 @param pContext: pointer to the WLAN DAL context
23195 @param pDPContext: pointer to the Datapath context
23196
Jeff Johnson295189b2012-06-20 16:38:30 -070023197 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023199*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023200WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023201WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23202{
23203 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23204
23205 pCB->pDPContext = pDPContext;
23206 return;
23207}
23208
23209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 @brief Helper routine used to find a session based on the BSSID
23211
23212
23213 @param pContext: pointer to the WLAN DAL context
23214
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 @see
23216 @return pointer to Datapath context
23217*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023218WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023219WDI_DS_GetDatapathContext (void *pContext)
23220{
23221 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23222 return pCB->pDPContext;
23223}
23224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 @brief Helper routine used to find a session based on the BSSID
23226
23227
23228 @param pContext: pointer to the WLAN DAL context
23229 @param pDTDriverContext: pointer to the Transport Driver context
23230
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 @see
23232 @return void
23233*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023234WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023235WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23236{
23237 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23238
23239 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023241}
23242
23243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023244 @brief Helper routine used to find a session based on the BSSID
23245
23246
23247 @param pWDICtx: pointer to the WLAN DAL context
23248
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023251*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023252WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023253WDT_GetTransportDriverContext (void *pContext)
23254{
23255 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023257}
23258
Jeff Johnsone7245742012-09-05 17:12:55 -070023259/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023260 Helper inline converters
23261 ============================================================================*/
23262/*Convert WDI driver type into HAL driver type*/
23263WPT_STATIC WPT_INLINE WDI_Status
23264WDI_HAL_2_WDI_STATUS
23265(
23266 eHalStatus halStatus
23267)
23268{
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 the chances of getting inlined*/
23271 switch( halStatus )
23272 {
23273 case eHAL_STATUS_SUCCESS:
23274 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23275 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23276 return WDI_STATUS_SUCCESS;
23277 case eHAL_STATUS_FAILURE:
23278 return WDI_STATUS_E_FAILURE;
23279 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 return WDI_STATUS_MEM_FAILURE;
23281 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 default:
23284 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23285 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023286
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023288}/*WDI_HAL_2_WDI_STATUS*/
23289
23290/*Convert WDI request type into HAL request type*/
23291WPT_STATIC WPT_INLINE tHalHostMsgType
23292WDI_2_HAL_REQ_TYPE
23293(
23294 WDI_RequestEnumType wdiReqType
23295)
23296{
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 the chances of getting inlined*/
23299 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023307 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023318 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023320 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023328 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 return WLAN_HAL_RMV_STAKEY_REQ;
23336 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023338 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023343 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 case WDI_DEL_BA_REQ:
23345 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023346#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 case WDI_TSM_STATS_REQ:
23348 return WLAN_HAL_TSM_STATS_REQ;
23349#endif
23350 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023351 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 case WDI_ADD_BA_SESSION_REQ:
23361 return WLAN_HAL_ADD_BA_SESSION_REQ;
23362 case WDI_TRIGGER_BA_REQ:
23363 return WLAN_HAL_TRIGGER_BA_REQ;
23364 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23369 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23370 case WDI_SET_MAX_TX_POWER_REQ:
23371 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023372 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23373 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023374 case WDI_SET_TX_POWER_REQ:
23375 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23377 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023378#ifdef FEATURE_WLAN_TDLS
23379 case WDI_TDLS_LINK_ESTABLISH_REQ:
23380 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23381#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023399 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 case WDI_REM_BEACON_FILTER_REQ:
23403 return WLAN_HAL_REM_BCN_FILTER_REQ;
23404 case WDI_SET_RSSI_THRESHOLDS_REQ:
23405 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23406 case WDI_HOST_OFFLOAD_REQ:
23407 return WLAN_HAL_HOST_OFFLOAD_REQ;
23408 case WDI_WOWL_ADD_BC_PTRN_REQ:
23409 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23410 case WDI_WOWL_DEL_BC_PTRN_REQ:
23411 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23412 case WDI_WOWL_ENTER_REQ:
23413 return WLAN_HAL_ENTER_WOWL_REQ;
23414 case WDI_WOWL_EXIT_REQ:
23415 return WLAN_HAL_EXIT_WOWL_REQ;
23416 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23417 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23418 case WDI_NV_DOWNLOAD_REQ:
23419 return WLAN_HAL_DOWNLOAD_NV_REQ;
23420 case WDI_FLUSH_AC_REQ:
23421 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23422 case WDI_BTAMP_EVENT_REQ:
23423 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23424#ifdef WLAN_FEATURE_VOWIFI_11R
23425 case WDI_AGGR_ADD_TS_REQ:
23426 return WLAN_HAL_AGGR_ADD_TS_REQ;
23427#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 case WDI_FTM_CMD_REQ:
23429 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 case WDI_ADD_STA_SELF_REQ:
23431 return WLAN_HAL_ADD_STA_SELF_REQ;
23432 case WDI_DEL_STA_SELF_REQ:
23433 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023434#ifdef FEATURE_OEM_DATA_SUPPORT
23435 case WDI_START_OEM_DATA_REQ:
23436 return WLAN_HAL_START_OEM_DATA_REQ;
23437#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 case WDI_HOST_RESUME_REQ:
23439 return WLAN_HAL_HOST_RESUME_REQ;
23440 case WDI_HOST_SUSPEND_IND:
23441 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023442 case WDI_TRAFFIC_STATS_IND:
23443 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023444#ifdef WLAN_FEATURE_11W
23445 case WDI_EXCLUDE_UNENCRYPTED_IND:
23446 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23447#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 case WDI_KEEP_ALIVE_REQ:
23449 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023450#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023451 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23452 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023453#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023454#ifdef FEATURE_WLAN_SCAN_PNO
23455 case WDI_SET_PREF_NETWORK_REQ:
23456 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23457 case WDI_SET_RSSI_FILTER_REQ:
23458 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23459 case WDI_UPDATE_SCAN_PARAMS_REQ:
23460 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23461#endif // FEATURE_WLAN_SCAN_PNO
23462 case WDI_SET_TX_PER_TRACKING_REQ:
23463 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23464#ifdef WLAN_FEATURE_PACKET_FILTERING
23465 case WDI_8023_MULTICAST_LIST_REQ:
23466 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23467 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23470 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23471 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23472 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23473#endif // WLAN_FEATURE_PACKET_FILTERING
23474 case WDI_HAL_DUMP_CMD_REQ:
23475 return WLAN_HAL_DUMP_COMMAND_REQ;
23476#ifdef WLAN_FEATURE_GTK_OFFLOAD
23477 case WDI_GTK_OFFLOAD_REQ:
23478 return WLAN_HAL_GTK_OFFLOAD_REQ;
23479 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23480 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23481#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23482
23483 case WDI_INIT_SCAN_CON_REQ:
23484 return WLAN_HAL_INIT_SCAN_CON_REQ;
23485 case WDI_SET_POWER_PARAMS_REQ:
23486 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23487 case WDI_SET_TM_LEVEL_REQ:
23488 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23489 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23490 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023491#ifdef WLAN_FEATURE_11AC
23492 case WDI_UPDATE_VHT_OP_MODE_REQ:
23493 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23494#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023495 case WDI_GET_ROAM_RSSI_REQ:
23496 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023497 case WDI_DHCP_START_IND:
23498 return WLAN_HAL_DHCP_START_IND;
23499 case WDI_DHCP_STOP_IND:
23500 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023501#ifdef FEATURE_WLAN_LPHB
23502 case WDI_LPHB_CFG_REQ:
23503 return WLAN_HAL_LPHB_CFG_REQ;
23504#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023505 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23506 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23507 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23508 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23509
Rajeev79dbe4c2013-10-05 11:03:42 +053023510#ifdef FEATURE_WLAN_BATCH_SCAN
23511 case WDI_SET_BATCH_SCAN_REQ:
23512 return WLAN_HAL_BATCHSCAN_SET_REQ;
23513 case WDI_STOP_BATCH_SCAN_IND:
23514 return WLAN_HAL_BATCHSCAN_STOP_IND;
23515 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23516 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23517#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023518 case WDI_RATE_UPDATE_IND:
23519 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023520 case WDI_START_HT40_OBSS_SCAN_IND:
23521 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23522 case WDI_STOP_HT40_OBSS_SCAN_IND:
23523 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023524 case WDI_UPDATE_CHAN_REQ:
23525 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023526 case WDI_CH_SWITCH_REQ_V1:
23527 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023528 case WDI_GET_BCN_MISS_RATE_REQ:
23529 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023530
23531#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23532 case WDI_LL_STATS_SET_REQ:
23533 return WLAN_HAL_LL_SET_STATS_REQ;
23534 case WDI_LL_STATS_GET_REQ:
23535 return WLAN_HAL_LL_GET_STATS_REQ;
23536 case WDI_LL_STATS_CLEAR_REQ:
23537 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23538#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023539#ifdef WLAN_FEATURE_EXTSCAN
23540 case WDI_EXTSCAN_START_REQ:
23541 return WLAN_HAL_EXT_SCAN_START_REQ;
23542 case WDI_EXTSCAN_STOP_REQ:
23543 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23544 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23545 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23546 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23547 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23548 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23549 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23550 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23551 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23552 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23553 return WLAN_HAL_SIG_RSSI_SET_REQ;
23554 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23555 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23556#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023559 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023560
Jeff Johnson295189b2012-06-20 16:38:30 -070023561}/*WDI_2_HAL_REQ_TYPE*/
23562
23563/*Convert WDI response type into HAL response type*/
23564WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23565HAL_2_WDI_RSP_TYPE
23566(
23567 tHalHostMsgType halMsg
23568)
23569{
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023571 the chances of getting inlined*/
23572 switch( halMsg )
23573 {
23574 case WLAN_HAL_START_RSP:
23575 return WDI_START_RESP;
23576 case WLAN_HAL_STOP_RSP:
23577 return WDI_STOP_RESP;
23578 case WLAN_HAL_INIT_SCAN_RSP:
23579 return WDI_INIT_SCAN_RESP;
23580 case WLAN_HAL_START_SCAN_RSP:
23581 return WDI_START_SCAN_RESP;
23582 case WLAN_HAL_END_SCAN_RSP:
23583 return WDI_END_SCAN_RESP;
23584 case WLAN_HAL_FINISH_SCAN_RSP:
23585 return WDI_FINISH_SCAN_RESP;
23586 case WLAN_HAL_CONFIG_STA_RSP:
23587 return WDI_CONFIG_STA_RESP;
23588 case WLAN_HAL_DELETE_STA_RSP:
23589 return WDI_DEL_STA_RESP;
23590 case WLAN_HAL_CONFIG_BSS_RSP:
23591 return WDI_CONFIG_BSS_RESP;
23592 case WLAN_HAL_DELETE_BSS_RSP:
23593 return WDI_DEL_BSS_RESP;
23594 case WLAN_HAL_JOIN_RSP:
23595 return WDI_JOIN_RESP;
23596 case WLAN_HAL_POST_ASSOC_RSP:
23597 return WDI_POST_ASSOC_RESP;
23598 case WLAN_HAL_SET_BSSKEY_RSP:
23599 return WDI_SET_BSS_KEY_RESP;
23600 case WLAN_HAL_SET_STAKEY_RSP:
23601 return WDI_SET_STA_KEY_RESP;
23602 case WLAN_HAL_RMV_BSSKEY_RSP:
23603 return WDI_RMV_BSS_KEY_RESP;
23604 case WLAN_HAL_RMV_STAKEY_RSP:
23605 return WDI_RMV_STA_KEY_RESP;
23606 case WLAN_HAL_SET_BCASTKEY_RSP:
23607 return WDI_SET_STA_BCAST_KEY_RESP;
23608 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23609 // return WDI_RMV_STA_BCAST_KEY_RESP;
23610 case WLAN_HAL_ADD_TS_RSP:
23611 return WDI_ADD_TS_RESP;
23612 case WLAN_HAL_DEL_TS_RSP:
23613 return WDI_DEL_TS_RESP;
23614 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23615 return WDI_UPD_EDCA_PRMS_RESP;
23616 case WLAN_HAL_ADD_BA_RSP:
23617 return WDI_ADD_BA_RESP;
23618 case WLAN_HAL_DEL_BA_RSP:
23619 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023620#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 case WLAN_HAL_TSM_STATS_RSP:
23622 return WDI_TSM_STATS_RESP;
23623#endif
23624 case WLAN_HAL_CH_SWITCH_RSP:
23625 return WDI_CH_SWITCH_RESP;
23626 case WLAN_HAL_SET_LINK_ST_RSP:
23627 return WDI_SET_LINK_ST_RESP;
23628 case WLAN_HAL_GET_STATS_RSP:
23629 return WDI_GET_STATS_RESP;
23630 case WLAN_HAL_UPDATE_CFG_RSP:
23631 return WDI_UPDATE_CFG_RESP;
23632 case WLAN_HAL_ADD_BA_SESSION_RSP:
23633 return WDI_ADD_BA_SESSION_RESP;
23634 case WLAN_HAL_TRIGGER_BA_RSP:
23635 return WDI_TRIGGER_BA_RESP;
23636 case WLAN_HAL_UPDATE_BEACON_RSP:
23637 return WDI_UPD_BCON_PRMS_RESP;
23638 case WLAN_HAL_SEND_BEACON_RSP:
23639 return WDI_SND_BCON_RESP;
23640 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23641 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23642 /*Indications*/
23643 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23644 return WDI_HAL_RSSI_NOTIFICATION_IND;
23645 case WLAN_HAL_MISSED_BEACON_IND:
23646 return WDI_HAL_MISSED_BEACON_IND;
23647 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23648 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23649 case WLAN_HAL_MIC_FAILURE_IND:
23650 return WDI_HAL_MIC_FAILURE_IND;
23651 case WLAN_HAL_FATAL_ERROR_IND:
23652 return WDI_HAL_FATAL_ERROR_IND;
23653 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23654 return WDI_HAL_DEL_STA_IND;
23655 case WLAN_HAL_COEX_IND:
23656 return WDI_HAL_COEX_IND;
23657 case WLAN_HAL_OTA_TX_COMPL_IND:
23658 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659 case WLAN_HAL_P2P_NOA_ATTR_IND:
23660 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023661 case WLAN_HAL_P2P_NOA_START_IND:
23662 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 case WLAN_HAL_TX_PER_HIT_IND:
23664 return WDI_HAL_TX_PER_HIT_IND;
23665 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23666 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023667 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23668 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023669 case WLAN_HAL_SET_TX_POWER_RSP:
23670 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 case WLAN_HAL_SET_P2P_GONOA_RSP:
23672 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023673#ifdef FEATURE_WLAN_TDLS
23674 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23675 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23676 case WLAN_HAL_TDLS_IND:
23677 return WDI_HAL_TDLS_IND;
23678#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023684 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023685 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023687 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023697 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23698 return WDI_SET_BEACON_FILTER_RESP;
23699 case WLAN_HAL_REM_BCN_FILTER_RSP:
23700 return WDI_REM_BEACON_FILTER_RESP;
23701 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23702 return WDI_SET_RSSI_THRESHOLDS_RESP;
23703 case WLAN_HAL_HOST_OFFLOAD_RSP:
23704 return WDI_HOST_OFFLOAD_RESP;
23705 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23706 return WDI_WOWL_ADD_BC_PTRN_RESP;
23707 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23708 return WDI_WOWL_DEL_BC_PTRN_RESP;
23709 case WLAN_HAL_ENTER_WOWL_RSP:
23710 return WDI_WOWL_ENTER_RESP;
23711 case WLAN_HAL_EXIT_WOWL_RSP:
23712 return WDI_WOWL_EXIT_RESP;
23713 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23714 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23715 case WLAN_HAL_DOWNLOAD_NV_RSP:
23716 return WDI_NV_DOWNLOAD_RESP;
23717 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23718 return WDI_FLUSH_AC_RESP;
23719 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23720 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 case WLAN_HAL_PROCESS_PTT_RSP:
23722 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 case WLAN_HAL_ADD_STA_SELF_RSP:
23724 return WDI_ADD_STA_SELF_RESP;
23725case WLAN_HAL_DEL_STA_SELF_RSP:
23726 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023727#ifdef FEATURE_OEM_DATA_SUPPORT
23728 case WLAN_HAL_START_OEM_DATA_RSP:
23729 return WDI_START_OEM_DATA_RESP;
23730#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WLAN_HAL_HOST_RESUME_RSP:
23732 return WDI_HOST_RESUME_RESP;
23733 case WLAN_HAL_KEEP_ALIVE_RSP:
23734 return WDI_KEEP_ALIVE_RESP;
23735#ifdef FEATURE_WLAN_SCAN_PNO
23736 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23737 return WDI_SET_PREF_NETWORK_RESP;
23738 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23741 return WDI_UPDATE_SCAN_PARAMS_RESP;
23742 case WLAN_HAL_PREF_NETW_FOUND_IND:
23743 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23744#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023745#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023746 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23747 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023748#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23750 return WDI_SET_TX_PER_TRACKING_RESP;
23751#ifdef WLAN_FEATURE_PACKET_FILTERING
23752 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23753 return WDI_8023_MULTICAST_LIST_RESP;
23754 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23755 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23756 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23757 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23758 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23759 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23760#endif // WLAN_FEATURE_PACKET_FILTERING
23761
23762 case WLAN_HAL_DUMP_COMMAND_RSP:
23763 return WDI_HAL_DUMP_CMD_RESP;
23764 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23765 return WDI_SET_POWER_PARAMS_RESP;
23766#ifdef WLAN_FEATURE_VOWIFI_11R
23767 case WLAN_HAL_AGGR_ADD_TS_RSP:
23768 return WDI_AGGR_ADD_TS_RESP;
23769#endif
23770
23771#ifdef WLAN_FEATURE_GTK_OFFLOAD
23772 case WLAN_HAL_GTK_OFFLOAD_RSP:
23773 return WDI_GTK_OFFLOAD_RESP;
23774 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23775 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23776#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23777#ifdef WLAN_WAKEUP_EVENTS
23778 case WLAN_HAL_WAKE_REASON_IND:
23779 return WDI_HAL_WAKE_REASON_IND;
23780#endif // WLAN_WAKEUP_EVENTS
23781
23782 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23783 return WDI_SET_TM_LEVEL_RESP;
23784 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23785 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023786#ifdef WLAN_FEATURE_11AC
23787 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23788 return WDI_UPDATE_VHT_OP_MODE_RESP;
23789#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023790#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023791 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23792 return WDI_GET_ROAM_RSSI_RESP;
23793#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023794
Leo Chang9056f462013-08-01 19:21:11 -070023795#ifdef FEATURE_WLAN_LPHB
23796 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023797 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023798 case WLAN_HAL_LPHB_CFG_RSP:
23799 return WDI_LPHB_CFG_RESP;
23800#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023801
23802 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23803 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023804 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23805 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023806
Rajeev79dbe4c2013-10-05 11:03:42 +053023807#ifdef FEATURE_WLAN_BATCH_SCAN
23808 case WLAN_HAL_BATCHSCAN_SET_RSP:
23809 return WDI_SET_BATCH_SCAN_RESP;
23810 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23811 return WDI_BATCHSCAN_RESULT_IND;
23812#endif // FEATURE_WLAN_BATCH_SCAN
23813
Leo Chang0b0e45a2013-12-15 15:18:55 -080023814#ifdef FEATURE_WLAN_CH_AVOID
23815 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23816 return WDI_HAL_CH_AVOID_IND;
23817#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023818 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23819 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053023820 case WLAN_HAL_PRINT_REG_INFO_IND:
23821 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053023822 case WLAN_HAL_CH_SWITCH_V1_RSP:
23823 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053023824 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
23825 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023826#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23827 case WLAN_HAL_LL_SET_STATS_RSP:
23828 return WDI_LL_STATS_SET_RSP;
23829 case WLAN_HAL_LL_GET_STATS_RSP:
23830 return WDI_LL_STATS_GET_RSP;
23831 case WLAN_HAL_LL_CLEAR_STATS_RSP:
23832 return WDI_LL_STATS_CLEAR_RSP;
23833 case WLAN_HAL_LL_NOTIFY_STATS:
23834 return WDI_HAL_LL_STATS_RESULTS_IND;
23835#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023836#ifdef WLAN_FEATURE_EXTSCAN
23837 case WLAN_HAL_EXT_SCAN_START_RSP:
23838 return WDI_EXTSCAN_START_RSP;
23839 case WLAN_HAL_EXT_SCAN_STOP_RSP:
23840 return WDI_EXTSCAN_STOP_RSP;
23841 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
23842 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
23843 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
23844 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
23845 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
23846 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
23847 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
23848 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
23849 case WLAN_HAL_SIG_RSSI_SET_RSP:
23850 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
23851 case WLAN_HAL_SIG_RSSI_RESET_RSP:
23852 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
23853 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
23854 return WDI_HAL_EXTSCAN_PROGRESS_IND;
23855 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
23856 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
23857 case WLAN_HAL_EXT_SCAN_RESULT_IND:
23858 return WDI_HAL_EXTSCAN_RESULT_IND;
23859 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
23860 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
23861 case WLAN_HAL_SIG_RSSI_RESULT_IND:
23862 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
23863#endif /* WLAN_FEATURE_EXTSCAN */
23864
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 }
23868
23869}/*HAL_2_WDI_RSP_TYPE*/
23870
23871
23872/*Convert WDI driver type into HAL driver type*/
23873WPT_STATIC WPT_INLINE tDriverType
23874WDI_2_HAL_DRV_TYPE
23875(
23876 WDI_DriverType wdiDriverType
23877)
23878{
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 the chances of getting inlined*/
23881 switch( wdiDriverType )
23882 {
23883 case WDI_DRIVER_TYPE_PRODUCTION:
23884 return eDRIVER_TYPE_PRODUCTION;
23885 case WDI_DRIVER_TYPE_MFG:
23886 return eDRIVER_TYPE_MFG;
23887 case WDI_DRIVER_TYPE_DVT:
23888 return eDRIVER_TYPE_DVT;
23889 }
23890
Jeff Johnsone7245742012-09-05 17:12:55 -070023891 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023892}/*WDI_2_HAL_DRV_TYPE*/
23893
23894
23895/*Convert WDI stop reason into HAL stop reason*/
23896WPT_STATIC WPT_INLINE tHalStopType
23897WDI_2_HAL_STOP_REASON
23898(
23899 WDI_StopType wdiDriverType
23900)
23901{
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 the chances of getting inlined*/
23904 switch( wdiDriverType )
23905 {
23906 case WDI_STOP_TYPE_SYS_RESET:
23907 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023908 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23909 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 case WDI_STOP_TYPE_RF_KILL:
23911 return HAL_STOP_TYPE_RF_KILL;
23912 }
23913
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915}/*WDI_2_HAL_STOP_REASON*/
23916
23917
23918/*Convert WDI scan mode type into HAL scan mode type*/
23919WPT_STATIC WPT_INLINE eHalSysMode
23920WDI_2_HAL_SCAN_MODE
23921(
23922 WDI_ScanMode wdiScanMode
23923)
23924{
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 the chances of getting inlined*/
23927 switch( wdiScanMode )
23928 {
23929 case WDI_SCAN_MODE_NORMAL:
23930 return eHAL_SYS_MODE_NORMAL;
23931 case WDI_SCAN_MODE_LEARN:
23932 return eHAL_SYS_MODE_LEARN;
23933 case WDI_SCAN_MODE_SCAN:
23934 return eHAL_SYS_MODE_SCAN;
23935 case WDI_SCAN_MODE_PROMISC:
23936 return eHAL_SYS_MODE_PROMISC;
23937 case WDI_SCAN_MODE_SUSPEND_LINK:
23938 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023939 case WDI_SCAN_MODE_ROAM_SCAN:
23940 return eHAL_SYS_MODE_ROAM_SCAN;
23941 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23942 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 }
23944
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023946}/*WDI_2_HAL_SCAN_MODE*/
23947
23948/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023949WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023950WDI_2_HAL_SEC_CH_OFFSET
23951(
23952 WDI_HTSecondaryChannelOffset wdiSecChOffset
23953)
23954{
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 the chances of getting inlined*/
23957 switch( wdiSecChOffset )
23958 {
23959 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23965#ifdef WLAN_FEATURE_11AC
23966 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23967 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23968 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23969 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23970 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23971 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23972 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23973 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23974 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23975 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23976 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23977 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23978 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23979 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23980#endif
23981 default:
23982 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 }
23984
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023986}/*WDI_2_HAL_SEC_CH_OFFSET*/
23987
23988/*Convert WDI BSS type into HAL BSS type*/
23989WPT_STATIC WPT_INLINE tSirBssType
23990WDI_2_HAL_BSS_TYPE
23991(
23992 WDI_BssType wdiBSSType
23993)
23994{
Jeff Johnsone7245742012-09-05 17:12:55 -070023995 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 the chances of getting inlined*/
23997 switch( wdiBSSType )
23998 {
23999 case WDI_INFRASTRUCTURE_MODE:
24000 return eSIR_INFRASTRUCTURE_MODE;
24001 case WDI_INFRA_AP_MODE:
24002 return eSIR_INFRA_AP_MODE;
24003 case WDI_IBSS_MODE:
24004 return eSIR_IBSS_MODE;
24005 case WDI_BTAMP_STA_MODE:
24006 return eSIR_BTAMP_STA_MODE;
24007 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 case WDI_BSS_AUTO_MODE:
24010 return eSIR_AUTO_MODE;
24011 }
24012
Jeff Johnsone7245742012-09-05 17:12:55 -070024013 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024014}/*WDI_2_HAL_BSS_TYPE*/
24015
24016/*Convert WDI NW type into HAL NW type*/
24017WPT_STATIC WPT_INLINE tSirNwType
24018WDI_2_HAL_NW_TYPE
24019(
24020 WDI_NwType wdiNWType
24021)
24022{
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 the chances of getting inlined*/
24025 switch( wdiNWType )
24026 {
24027 case WDI_11A_NW_TYPE:
24028 return eSIR_11A_NW_TYPE;
24029 case WDI_11B_NW_TYPE:
24030 return eSIR_11B_NW_TYPE;
24031 case WDI_11G_NW_TYPE:
24032 return eSIR_11G_NW_TYPE;
24033 case WDI_11N_NW_TYPE:
24034 return eSIR_11N_NW_TYPE;
24035 }
24036
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038}/*WDI_2_HAL_NW_TYPE*/
24039
24040/*Convert WDI chanel bonding type into HAL cb type*/
24041WPT_STATIC WPT_INLINE ePhyChanBondState
24042WDI_2_HAL_CB_STATE
24043(
24044 WDI_PhyChanBondState wdiCbState
24045)
24046{
Jeff Johnsone7245742012-09-05 17:12:55 -070024047 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024048 the chances of getting inlined*/
24049 switch ( wdiCbState )
24050 {
24051 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24052 return PHY_SINGLE_CHANNEL_CENTERED;
24053 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24054 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24055 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24056 return PHY_DOUBLE_CHANNEL_CENTERED;
24057 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24058 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024059#ifdef WLAN_FEATURE_11AC
24060 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24061 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24062 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24063 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24064 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24065 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24066 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24067 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24068 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24069 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24070 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24071 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24072 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24073 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24074#endif
24075 case WDI_MAX_CB_STATE:
24076 default:
24077 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024079
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 return PHY_CHANNEL_BONDING_STATE_MAX;
24081}/*WDI_2_HAL_CB_STATE*/
24082
24083/*Convert WDI chanel bonding type into HAL cb type*/
24084WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24085WDI_2_HAL_HT_OPER_MODE
24086(
24087 WDI_HTOperatingMode wdiHTOperMode
24088)
24089{
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 the chances of getting inlined*/
24092 switch ( wdiHTOperMode )
24093 {
24094 case WDI_HT_OP_MODE_PURE:
24095 return eSIR_HT_OP_MODE_PURE;
24096 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24097 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24098 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24099 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24100 case WDI_HT_OP_MODE_MIXED:
24101 return eSIR_HT_OP_MODE_MIXED;
24102 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024103
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 return eSIR_HT_OP_MODE_MAX;
24105}/*WDI_2_HAL_HT_OPER_MODE*/
24106
24107/*Convert WDI mimo PS type into HAL mimo PS type*/
24108WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24109WDI_2_HAL_MIMO_PS
24110(
24111 WDI_HTMIMOPowerSaveState wdiHTOperMode
24112)
24113{
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 the chances of getting inlined*/
24116 switch ( wdiHTOperMode )
24117 {
24118 case WDI_HT_MIMO_PS_STATIC:
24119 return eSIR_HT_MIMO_PS_STATIC;
24120 case WDI_HT_MIMO_PS_DYNAMIC:
24121 return eSIR_HT_MIMO_PS_DYNAMIC;
24122 case WDI_HT_MIMO_PS_NA:
24123 return eSIR_HT_MIMO_PS_NA;
24124 case WDI_HT_MIMO_PS_NO_LIMIT:
24125 return eSIR_HT_MIMO_PS_NO_LIMIT;
24126 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024127
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 return eSIR_HT_MIMO_PS_MAX;
24129}/*WDI_2_HAL_MIMO_PS*/
24130
24131/*Convert WDI ENC type into HAL ENC type*/
24132WPT_STATIC WPT_INLINE tAniEdType
24133WDI_2_HAL_ENC_TYPE
24134(
24135 WDI_EncryptType wdiEncType
24136)
24137{
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024139 the chances of getting inlined*/
24140 switch ( wdiEncType )
24141 {
24142 case WDI_ENCR_NONE:
24143 return eSIR_ED_NONE;
24144
24145 case WDI_ENCR_WEP40:
24146 return eSIR_ED_WEP40;
24147
24148 case WDI_ENCR_WEP104:
24149 return eSIR_ED_WEP104;
24150
24151 case WDI_ENCR_TKIP:
24152 return eSIR_ED_TKIP;
24153
24154 case WDI_ENCR_CCMP:
24155 return eSIR_ED_CCMP;
24156
24157 case WDI_ENCR_AES_128_CMAC:
24158 return eSIR_ED_AES_128_CMAC;
24159#if defined(FEATURE_WLAN_WAPI)
24160 case WDI_ENCR_WPI:
24161 return eSIR_ED_WPI;
24162#endif
24163 default:
24164 return eSIR_ED_NOT_IMPLEMENTED;
24165 }
24166
24167}/*WDI_2_HAL_ENC_TYPE*/
24168
24169/*Convert WDI WEP type into HAL WEP type*/
24170WPT_STATIC WPT_INLINE tAniWepType
24171WDI_2_HAL_WEP_TYPE
24172(
24173 WDI_WepType wdiWEPType
24174)
24175{
Jeff Johnsone7245742012-09-05 17:12:55 -070024176 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 the chances of getting inlined*/
24178 switch ( wdiWEPType )
24179 {
24180 case WDI_WEP_STATIC:
24181 return eSIR_WEP_STATIC;
24182
24183 case WDI_WEP_DYNAMIC:
24184 return eSIR_WEP_DYNAMIC;
24185 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024186
Jeff Johnson295189b2012-06-20 16:38:30 -070024187 return eSIR_WEP_MAX;
24188}/*WDI_2_HAL_WEP_TYPE*/
24189
24190WPT_STATIC WPT_INLINE tSirLinkState
24191WDI_2_HAL_LINK_STATE
24192(
24193 WDI_LinkStateType wdiLinkState
24194)
24195{
Jeff Johnsone7245742012-09-05 17:12:55 -070024196 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 the chances of getting inlined*/
24198 switch ( wdiLinkState )
24199 {
24200 case WDI_LINK_IDLE_STATE:
24201 return eSIR_LINK_IDLE_STATE;
24202
24203 case WDI_LINK_PREASSOC_STATE:
24204 return eSIR_LINK_PREASSOC_STATE;
24205
24206 case WDI_LINK_POSTASSOC_STATE:
24207 return eSIR_LINK_POSTASSOC_STATE;
24208
24209 case WDI_LINK_AP_STATE:
24210 return eSIR_LINK_AP_STATE;
24211
24212 case WDI_LINK_IBSS_STATE:
24213 return eSIR_LINK_IBSS_STATE;
24214
24215 case WDI_LINK_BTAMP_PREASSOC_STATE:
24216 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24217
24218 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24219 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24220
24221 case WDI_LINK_BTAMP_AP_STATE:
24222 return eSIR_LINK_BTAMP_AP_STATE;
24223
24224 case WDI_LINK_BTAMP_STA_STATE:
24225 return eSIR_LINK_BTAMP_STA_STATE;
24226
24227 case WDI_LINK_LEARN_STATE:
24228 return eSIR_LINK_LEARN_STATE;
24229
24230 case WDI_LINK_SCAN_STATE:
24231 return eSIR_LINK_SCAN_STATE;
24232
24233 case WDI_LINK_FINISH_SCAN_STATE:
24234 return eSIR_LINK_FINISH_SCAN_STATE;
24235
24236 case WDI_LINK_INIT_CAL_STATE:
24237 return eSIR_LINK_INIT_CAL_STATE;
24238
24239 case WDI_LINK_FINISH_CAL_STATE:
24240 return eSIR_LINK_FINISH_CAL_STATE;
24241
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 case WDI_LINK_LISTEN_STATE:
24243 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024244
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024245 case WDI_LINK_SEND_ACTION_STATE:
24246 return eSIR_LINK_SEND_ACTION_STATE;
24247
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 default:
24249 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024251}
24252
Jeff Johnsone7245742012-09-05 17:12:55 -070024253/*Translate a STA Context from WDI into HAL*/
24254WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024255void
24256WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024257(
Jeff Johnson295189b2012-06-20 16:38:30 -070024258 tConfigStaParams* phalConfigSta,
24259 WDI_ConfigStaReqInfoType* pwdiConfigSta
24260)
24261{
24262 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024263#ifdef WLAN_FEATURE_11AC
24264 /* Get the Version 1 Handler */
24265 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24266 if (WDI_getFwWlanFeatCaps(DOT11AC))
24267 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024268 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 }
24270#endif
24271 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 the chances of getting inlined*/
24273
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 wpalMemoryCopy(phalConfigSta->bssId,
24275 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24276
24277 wpalMemoryCopy(phalConfigSta->staMac,
24278 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024279
24280 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24281 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24282 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24283 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24284 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24285 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24286 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24287 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24288 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24289 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24290 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24291 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24292 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24293 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24294 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24295 phalConfigSta->action = pwdiConfigSta->wdiAction;
24296 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24297 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24298 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24299 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24300 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24301 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24302 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024303
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24305
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 pwdiConfigSta->wdiSupportedRates.opRateMode;
24308 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24309 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24312 }
24313 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24314 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24317 }
24318 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24319 {
24320 phalConfigSta->supportedRates.aniLegacyRates[i] =
24321 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24322 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024323 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024324 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24325 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24326 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024327 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24329 }
24330 phalConfigSta->supportedRates.rxHighestDataRate =
24331 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24332
Jeff Johnsone7245742012-09-05 17:12:55 -070024333#ifdef WLAN_FEATURE_11AC
24334 if(phalConfigSta_V1 != NULL)
24335 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024336 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24337 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24338 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24339 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 }
24341#endif
24342
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344
Jeff Johnsone7245742012-09-05 17:12:55 -070024345#ifdef WLAN_FEATURE_11AC
24346 if(phalConfigSta_V1 != NULL)
24347 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024348 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24349 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024350 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024351 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24352 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24353
Jeff Johnsone7245742012-09-05 17:12:55 -070024354 }
24355#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024356}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024357
24358/*Translate a Rate set info from WDI into HAL*/
24359WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024360WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024361(
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 tSirMacRateSet* pHalRateSet,
24363 WDI_RateSet* pwdiRateSet
24364)
24365{
Jeff Johnsone7245742012-09-05 17:12:55 -070024366 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24368
24369 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24370 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24371
24372 for ( i = 0; i < pHalRateSet->numRates; i++ )
24373 {
24374 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24375 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024376
Jeff Johnson295189b2012-06-20 16:38:30 -070024377}/*WDI_CopyWDIRateSetToHALRateSet*/
24378
24379
24380/*Translate an EDCA Parameter Record from WDI into HAL*/
24381WPT_STATIC WPT_INLINE void
24382WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024383(
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 tSirMacEdcaParamRecord* phalEdcaParam,
24385 WDI_EdcaParamRecord* pWDIEdcaParam
24386)
24387{
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 the chances of getting inlined*/
24390
24391 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24392 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24393 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24394 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24395
24396 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24397 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24398 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24399}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24400
24401
24402/*Copy a management frame header from WDI fmt into HAL fmt*/
24403WPT_STATIC WPT_INLINE void
24404WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24405(
24406 tSirMacMgmtHdr* pmacMgmtHdr,
24407 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24408)
24409{
24410 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24411 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24412 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24413 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24414 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24415 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24416 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24417 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24418 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24419 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24420 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24421
24422 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24423 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24424
Jeff Johnsone7245742012-09-05 17:12:55 -070024425 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024426 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024427 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024429 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 pwdiMacMgmtHdr->bssId, 6);
24431
24432 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24433 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24434 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24435
24436}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24437
24438
24439/*Copy config bss parameters from WDI fmt into HAL fmt*/
24440WPT_STATIC WPT_INLINE void
24441WDI_CopyWDIConfigBSSToHALConfigBSS
24442(
24443 tConfigBssParams* phalConfigBSS,
24444 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24445)
24446{
24447
24448 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024449#ifdef WLAN_FEATURE_11AC
24450 /* Get the Version 1 Handler */
24451 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24452 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024453 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024454#endif
24455
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 wpalMemoryCopy( phalConfigBSS->bssId,
24457 pwdiConfigBSS->macBSSID,
24458 WDI_MAC_ADDR_LEN);
24459
24460#ifdef HAL_SELF_STA_PER_BSS
24461 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24462 pwdiConfigBSS->macSelfAddr,
24463 WDI_MAC_ADDR_LEN);
24464#endif
24465
24466 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24467
24468 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24469 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24470
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 pwdiConfigBSS->ucShortSlotTimeSupported;
24473 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24474 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24475 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24476 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24477 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24480 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24481 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24482 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24483 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24484 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24485 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24486 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24487 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24488 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24489 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24490
Jeff Johnsone7245742012-09-05 17:12:55 -070024491 phalConfigBSS->htOperMode =
24492 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024493
24494 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24495 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24496 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24497 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24498
24499#ifdef WLAN_FEATURE_VOWIFI
24500 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24501#endif
24502
24503 /*! Used 32 as magic number because that is how the ssid is declared inside the
24504 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024505 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24507 pwdiConfigBSS->wdiSSID.ucLength : 32;
24508 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024509 pwdiConfigBSS->wdiSSID.sSSID,
24510 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024511
24512 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24513 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024514
Jeff Johnson295189b2012-06-20 16:38:30 -070024515 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24516 &pwdiConfigBSS->wdiRateSet);
24517
24518 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24519
24520 if(phalConfigBSS->edcaParamsValid)
24521 {
24522 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24523 &pwdiConfigBSS->wdiBEEDCAParams);
24524 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24525 &pwdiConfigBSS->wdiBKEDCAParams);
24526 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24527 &pwdiConfigBSS->wdiVIEDCAParams);
24528 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24529 &pwdiConfigBSS->wdiVOEDCAParams);
24530 }
24531
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024533
24534 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24535
24536#ifdef WLAN_FEATURE_VOWIFI_11R
24537
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024540
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 if( phalConfigBSS->extSetStaKeyParamValid )
24542 {
24543 /*-----------------------------------------------------------------------
24544 Copy the STA Key parameters into the HAL message
24545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24548
Jeff Johnsone7245742012-09-05 17:12:55 -070024549 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024550 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24551
24552 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24553
24554 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24555
24556 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24557
Jeff Johnson295189b2012-06-20 16:38:30 -070024558 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24559 keyIndex++)
24560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024561 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24563 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24564 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24565 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24566 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24567 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024568 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024569 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024570 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024572 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24574 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024575 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 WDI_MAX_KEY_LENGTH);
24577 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024578 }
24579 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 sizeof(phalConfigBSS->extSetStaKeyParam) );
24583 }
24584
24585#endif /*WLAN_FEATURE_VOWIFI_11R*/
24586
Jeff Johnsone7245742012-09-05 17:12:55 -070024587#ifdef WLAN_FEATURE_11AC
24588 if(phalConfigBSS_V1 != NULL)
24589 {
24590 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24591 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24592 }
24593#endif
24594
Jeff Johnson295189b2012-06-20 16:38:30 -070024595}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24596
24597
Jeff Johnsone7245742012-09-05 17:12:55 -070024598/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 pointed to by user data */
24600WPT_STATIC WPT_INLINE void
24601WDI_ExtractRequestCBFromEvent
24602(
24603 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 void** ppUserData
24606)
24607{
24608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24609 switch ( pEvent->wdiRequest )
24610 {
24611 case WDI_START_REQ:
24612 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24613 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24614 break;
24615 case WDI_STOP_REQ:
24616 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24617 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24618 break;
24619 case WDI_INIT_SCAN_REQ:
24620 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24621 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24622 break;
24623 case WDI_START_SCAN_REQ:
24624 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24625 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24626 break;
24627 case WDI_END_SCAN_REQ:
24628 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24629 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24630 break;
24631 case WDI_FINISH_SCAN_REQ:
24632 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24633 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24634 break;
24635 case WDI_JOIN_REQ:
24636 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24637 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24638 break;
24639 case WDI_CONFIG_BSS_REQ:
24640 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24641 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24642 break;
24643 case WDI_DEL_BSS_REQ:
24644 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24645 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24646 break;
24647 case WDI_POST_ASSOC_REQ:
24648 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24649 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24650 break;
24651 case WDI_DEL_STA_REQ:
24652 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24653 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24654 break;
24655 case WDI_DEL_STA_SELF_REQ:
24656 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24657 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24658 break;
24659
24660 case WDI_SET_BSS_KEY_REQ:
24661 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24662 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24663 break;
24664 case WDI_RMV_BSS_KEY_REQ:
24665 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24666 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24667 break;
24668 case WDI_SET_STA_KEY_REQ:
24669 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24670 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24671 break;
24672 case WDI_RMV_STA_KEY_REQ:
24673 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24674 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24675 break;
24676 case WDI_ADD_TS_REQ:
24677 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24678 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24679 break;
24680 case WDI_DEL_TS_REQ:
24681 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24682 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24683 break;
24684 case WDI_UPD_EDCA_PRMS_REQ:
24685 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24686 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24687 break;
24688 case WDI_ADD_BA_SESSION_REQ:
24689 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24690 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24691 break;
24692 case WDI_DEL_BA_REQ:
24693 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24694 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24695 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024696#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 case WDI_TSM_STATS_REQ:
24698 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24699 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24700 break;
24701#endif
24702 case WDI_CH_SWITCH_REQ:
24703 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24704 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24705 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024706 case WDI_CH_SWITCH_REQ_V1:
24707 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24708 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24709 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 case WDI_CONFIG_STA_REQ:
24711 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24712 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24713 break;
24714 case WDI_SET_LINK_ST_REQ:
24715 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24716 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24717 break;
24718 case WDI_GET_STATS_REQ:
24719 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24720 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24721 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024722#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024723 case WDI_GET_ROAM_RSSI_REQ:
24724 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24725 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24726 break;
24727#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024728 case WDI_UPDATE_CFG_REQ:
24729 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24730 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24731 break;
24732 case WDI_ADD_BA_REQ:
24733 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24734 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24735 break;
24736 case WDI_TRIGGER_BA_REQ:
24737 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24738 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24739 break;
24740 case WDI_UPD_BCON_PRMS_REQ:
24741 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24742 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24743 break;
24744 case WDI_SND_BCON_REQ:
24745 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24746 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24747 break;
24748 case WDI_ENTER_BMPS_REQ:
24749 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24750 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24751 break;
24752 case WDI_EXIT_BMPS_REQ:
24753 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24754 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24755 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024756 case WDI_ENTER_IMPS_REQ:
24757 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24758 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24759 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 case WDI_ENTER_UAPSD_REQ:
24761 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24762 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24763 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024764 case WDI_EXIT_UAPSD_REQ:
24765 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24766 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24767 break;
24768 case WDI_SET_UAPSD_PARAM_REQ:
24769 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24770 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24771 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024772 case WDI_UPDATE_UAPSD_PARAM_REQ:
24773 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24774 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24775 break;
24776 case WDI_CONFIGURE_RXP_FILTER_REQ:
24777 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24778 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24779 break;
24780 case WDI_SET_BEACON_FILTER_REQ:
24781 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24782 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24783 break;
24784 case WDI_REM_BEACON_FILTER_REQ:
24785 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24786 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024787 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 case WDI_SET_RSSI_THRESHOLDS_REQ:
24789 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24790 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24791 break;
24792 case WDI_HOST_OFFLOAD_REQ:
24793 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24794 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24795 break;
24796 case WDI_WOWL_ADD_BC_PTRN_REQ:
24797 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24798 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24799 break;
24800 case WDI_WOWL_DEL_BC_PTRN_REQ:
24801 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24802 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24803 break;
24804 case WDI_WOWL_ENTER_REQ:
24805 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24806 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24807 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024808 case WDI_WOWL_EXIT_REQ:
24809 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24810 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24811 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024812 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24813 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24814 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24815 break;
24816 case WDI_FLUSH_AC_REQ:
24817 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24818 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24819 break;
24820 case WDI_BTAMP_EVENT_REQ:
24821 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24822 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24823 break;
24824 case WDI_KEEP_ALIVE_REQ:
24825 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24826 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24827 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024828#if defined FEATURE_WLAN_SCAN_PNO
24829 case WDI_SET_PREF_NETWORK_REQ:
24830 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24831 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24832 break;
24833 case WDI_SET_RSSI_FILTER_REQ:
24834 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24835 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24836 break;
24837 case WDI_UPDATE_SCAN_PARAMS_REQ:
24838 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24839 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24840 break;
24841#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024842 case WDI_SET_TX_PER_TRACKING_REQ:
24843 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24844 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024845 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024846#if defined WLAN_FEATURE_PACKET_FILTERING
24847 case WDI_8023_MULTICAST_LIST_REQ:
24848 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24849 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24850 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024851 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24852 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24853 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24854 break;
24855 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24856 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24857 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24858 break;
24859 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24860 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24861 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24862 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024863#endif
24864 case WDI_SET_POWER_PARAMS_REQ:
24865 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24866 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24867 break;
24868#if defined WLAN_FEATURE_GTK_OFFLOAD
24869 case WDI_GTK_OFFLOAD_REQ:
24870 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24871 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24872 break;
24873 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24874 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24875 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24876 break;
24877#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024878
Jeff Johnson295189b2012-06-20 16:38:30 -070024879 default:
24880 *ppfnReqCB = NULL;
24881 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024882 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 }
24884}/*WDI_ExtractRequestCBFromEvent*/
24885
24886
24887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024888 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024889 frame xtl is enabled for a particular STA.
24890
24891 WDI_PostAssocReq must have been called.
24892
Jeff Johnsone7245742012-09-05 17:12:55 -070024893 @param uSTAIdx: STA index
24894
Jeff Johnson295189b2012-06-20 16:38:30 -070024895 @see WDI_PostAssocReq
24896 @return Result of the function call
24897*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024898wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024899WDI_IsHwFrameTxTranslationCapable
24900(
24901 wpt_uint8 uSTAIdx
24902)
24903{
Jeff Johnsone7245742012-09-05 17:12:55 -070024904 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024905 uma value*/
24906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 ------------------------------------------------------------------------*/
24909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24910 {
24911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24912 "WDI API call before module is initialized - Fail request");
24913
Jeff Johnsone7245742012-09-05 17:12:55 -070024914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024915 }
24916
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024917#ifdef WLAN_SOFTAP_VSTA_FEATURE
24918 if (IS_VSTA_IDX(uSTAIdx))
24919 {
24920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24921 "STA %d is a Virtual STA, "
24922 "HW frame translation disabled", uSTAIdx);
24923 return eWLAN_PAL_FALSE;
24924 }
24925#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024926
Jeff Johnson295189b2012-06-20 16:38:30 -070024927 return gWDICb.bFrameTransEnabled;
24928}/*WDI_IsHwFrameTxTranslationCapable*/
24929
Katya Nigam6201c3e2014-05-27 17:51:42 +053024930
24931/**
24932 @brief WDI_IsSelfSTA - check if staid is self sta index
24933
24934
24935 @param pWDICtx: pointer to the WLAN DAL context
24936 ucSTAIdx: station index
24937
24938 @return Result of the function call
24939*/
24940wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
24941{
24942 wpt_uint8 ucSTAType;
24943
24944 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
24945 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
24946 {
24947 if( ucSTAType == WDI_STA_ENTRY_SELF )
24948 return eWLAN_PAL_TRUE;
24949 }
24950
24951 return eWLAN_PAL_FALSE;
24952}
24953
24954
24955
Jeff Johnson295189b2012-06-20 16:38:30 -070024956#ifdef FEATURE_WLAN_SCAN_PNO
24957/**
24958 @brief WDI_SetPreferredNetworkList
24959
Jeff Johnsone7245742012-09-05 17:12:55 -070024960 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024961 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024962
Jeff Johnson295189b2012-06-20 16:38:30 -070024963 wdiPNOScanCb: callback for passing back the response
24964 of the Set PNO operation received from the
24965 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024966
Jeff Johnson295189b2012-06-20 16:38:30 -070024967 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024968 callback
24969
Jeff Johnson295189b2012-06-20 16:38:30 -070024970 @return Result of the function call
24971*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024973WDI_SetPreferredNetworkReq
24974(
24975 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24976 WDI_PNOScanCb wdiPNOScanCb,
24977 void* pUserData
24978)
24979{
24980 WDI_EventInfoType wdiEventData = {{0}};
24981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24982
24983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024985 ------------------------------------------------------------------------*/
24986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24987 {
24988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24989 "WDI API call before module is initialized - Fail request");
24990
Jeff Johnsone7245742012-09-05 17:12:55 -070024991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 }
24993
24994 /*------------------------------------------------------------------------
24995 Fill in Event data and post to the Main FSM
24996 ------------------------------------------------------------------------*/
24997 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024998 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025000 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025001 wdiEventData.pUserData = pUserData;
25002
25003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25004}
25005
25006
25007/**
25008 @brief WDI_SetRssiFilterReq
25009
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025012
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 wdiRssiFilterCb: callback for passing back the response
25014 of the Set RSSI Filter operation received from the
25015 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025016
Jeff Johnson295189b2012-06-20 16:38:30 -070025017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 callback
25019
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 @return Result of the function call
25021*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025022WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025023WDI_SetRssiFilterReq
25024(
25025 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25026 WDI_RssiFilterCb wdiRssiFilterCb,
25027 void* pUserData
25028)
25029{
25030 WDI_EventInfoType wdiEventData = {{0}};
25031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25032
25033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025035 ------------------------------------------------------------------------*/
25036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25037 {
25038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25039 "WDI API call before module is initialized - Fail request");
25040
Jeff Johnsone7245742012-09-05 17:12:55 -070025041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025042 }
25043
25044 /*------------------------------------------------------------------------
25045 Fill in Event data and post to the Main FSM
25046 ------------------------------------------------------------------------*/
25047 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025048 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025050 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 wdiEventData.pUserData = pUserData;
25052
25053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25054}/*WDI_SetRssiFilterReq*/
25055
25056/**
25057 @brief WDI_UpdateScanParamsReq
25058
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025061
Jeff Johnson295189b2012-06-20 16:38:30 -070025062 wdiUpdateScanParamsCb: callback for passing back the response
25063 of the Set PNO operation received from the
25064 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025065
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 callback
25068
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 @return Result of the function call
25070*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025071WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025072WDI_UpdateScanParamsReq
25073(
25074 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25075 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25076 void* pUserData
25077)
25078{
25079 WDI_EventInfoType wdiEventData = {{0}};
25080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25081
25082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025083 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 ------------------------------------------------------------------------*/
25085 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25086 {
25087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25088 "WDI API call before module is initialized - Fail request");
25089
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 }
25092
25093 /*------------------------------------------------------------------------
25094 Fill in Event data and post to the Main FSM
25095 ------------------------------------------------------------------------*/
25096 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 wdiEventData.pUserData = pUserData;
25101
25102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25103}
25104
25105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025108
25109 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 pwdiPNOScanReqParams: pointer to the info received
25111 from upper layers
25112 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 and its size
25114
Jeff Johnson295189b2012-06-20 16:38:30 -070025115 @return Result of the function call
25116*/
25117
25118WDI_Status
25119WDI_PackPreferredNetworkList
25120(
25121 WDI_ControlBlockType* pWDICtx,
25122 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25123 wpt_uint8** ppSendBuffer,
25124 wpt_uint16* pSize
25125)
25126{
Jeff Johnsone7245742012-09-05 17:12:55 -070025127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 wpt_uint16 usDataOffset = 0;
25129 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025130 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025131 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025132 /*-----------------------------------------------------------------------
25133 Get message buffer
25134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025136 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025138 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 {
25140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025141 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025142 pwdiPNOScanReqParams);
25143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 }
25146
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025147 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25148
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 /*-------------------------------------------------------------------------
25150 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25151 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025152 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025154 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025155 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25156
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025157 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025158 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025159 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25162
25163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25166 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25167 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25168
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025169 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025170 {
25171 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025172 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25174
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025175 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025177 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025178
25179 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025180 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025181 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025182
25183 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025184 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025185 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025186
Jeff Johnsone7245742012-09-05 17:12:55 -070025187 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025189 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025190 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25191 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25192 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25193 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025194
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025195 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025196 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025197 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025198
25199 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025200 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25202
25203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025204 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025205 pPrefNetwListParams->aNetworks[i].ssId.length,
25206 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 }
25208
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025209 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25212 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25213 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25214
25215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025216 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025217 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025218 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25219 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25220
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025221 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025223 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025224 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025225 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025226 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25227 }
25228
25229 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025230 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025231 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25232 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25233 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025234 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025235
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025236 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025238 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025239
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025240 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25242 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25243 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025244 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025245
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025246 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025247 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025248 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025249
25250 /*Set the output values*/
25251 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025252 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025253
25254 return WDI_STATUS_SUCCESS;
25255}/*WDI_PackPreferredNetworkList*/
25256
25257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025258 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025259 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025260
25261 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025262 pwdiPNOScanReqParams: pointer to the info received
25263 from upper layers
25264 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025265 and its size
25266
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 @return Result of the function call
25268*/
25269
25270WDI_Status
25271WDI_PackPreferredNetworkListNew
25272(
25273 WDI_ControlBlockType* pWDICtx,
25274 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25275 wpt_uint8** ppSendBuffer,
25276 wpt_uint16* pSize
25277)
25278{
Jeff Johnsone7245742012-09-05 17:12:55 -070025279 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 wpt_uint16 usDataOffset = 0;
25281 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025282 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025284
25285 /*-----------------------------------------------------------------------
25286 Get message buffer
25287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025289 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025290 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025291 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 {
25293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025294 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 pwdiPNOScanReqParams);
25296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 }
25299
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025300 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25301
Jeff Johnson295189b2012-06-20 16:38:30 -070025302 /*-------------------------------------------------------------------------
25303 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25304 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025305 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025307 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25309
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025310 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025311 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025313 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025314 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25315
25316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25319 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25320 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25321
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025322 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 {
25324 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025325 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025326 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25327
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025328 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025329 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025330 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025331
25332 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025333 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025334 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025335
25336 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025337 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025338 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025339
25340 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025341 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025342 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025343
Jeff Johnsone7245742012-09-05 17:12:55 -070025344 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025345 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025346 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25348
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025349 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025351 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025352
25353 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025354 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025355 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25356
25357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025358 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025359 pPrefNetwListParams->aNetworks[i].ssId.length,
25360 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 }
25362
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025363 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025364 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25366 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25367 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25368
25369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025370 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025371 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25373 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25374
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025375 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025377 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025378 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025379 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025380 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25381 }
25382
25383 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025384 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025385 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25386 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25387 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025388 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025389
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025390 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025391 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025392 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025393
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025394 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25396 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25397 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025398 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025399
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025400 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025401 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025402 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025403
Jeff Johnson295189b2012-06-20 16:38:30 -070025404
25405 /*Set the output values*/
25406 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025407 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025408
25409 return WDI_STATUS_SUCCESS;
25410}/*WDI_PackPreferredNetworkListNew*/
25411
25412/**
25413 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025414
25415 @param pWDICtx: pointer to the WLAN DAL context
25416 pEventData: pointer to the event information structure
25417
Jeff Johnson295189b2012-06-20 16:38:30 -070025418 @return Result of the function call
25419*/
25420WDI_Status
25421WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025422(
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 WDI_ControlBlockType* pWDICtx,
25424 WDI_EventInfoType* pEventData
25425)
25426{
25427 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25428 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025429 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025431 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025432
25433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 -------------------------------------------------------------------------*/
25436 if (( NULL == pEventData ) ||
25437 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25438 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25439 {
25440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025444 }
25445
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025446 /*----------------------------------------------------------------------
25447 Avoid Enable PNO during any active session or an ongoing session
25448 ----------------------------------------------------------------------*/
25449 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25450 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25451 {
25452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25453 "%s:(Active/Ongoing Session) - Fail request", __func__);
25454
25455 return WDI_STATUS_E_FAILURE;
25456 }
25457
Jeff Johnson295189b2012-06-20 16:38:30 -070025458 /*-------------------------------------------------------------------------
25459 Pack the PNO request structure based on version
25460 -------------------------------------------------------------------------*/
25461 if ( pWDICtx->wdiPNOVersion > 0 )
25462 {
25463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025464 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025465 pWDICtx->wdiPNOVersion);
25466
25467 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25468 &pSendBuffer, &usSendSize);
25469 }
25470 else
25471 {
25472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025473 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 pWDICtx->wdiPNOVersion);
25475
25476 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25477 &pSendBuffer, &usSendSize);
25478 }
25479
25480 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25481 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25482 {
25483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025484 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025486 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 }
25488
25489 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025490 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025491
25492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25496 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025497}
25498
25499/**
25500 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025501
25502 @param pWDICtx: pointer to the WLAN DAL context
25503 pEventData: pointer to the event information structure
25504
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 @see
25506 @return Result of the function call
25507*/
25508WDI_Status
25509WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025510(
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 WDI_ControlBlockType* pWDICtx,
25512 WDI_EventInfoType* pEventData
25513)
25514{
25515 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25516 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 wpt_uint16 usDataOffset = 0;
25519 wpt_uint16 usSendSize = 0;
25520 wpt_uint8 ucRssiThreshold;
25521
25522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025524 -------------------------------------------------------------------------*/
25525 if (( NULL == pEventData ) ||
25526 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25527 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25528 {
25529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025533 }
25534
25535 /*-----------------------------------------------------------------------
25536 Get message buffer
25537 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 sizeof(ucRssiThreshold),
25540 &pSendBuffer, &usDataOffset, &usSendSize))||
25541 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25542 {
25543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025544 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025548 }
25549
25550 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25551
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 wpalMemoryCopy( pSendBuffer+usDataOffset,
25553 &ucRssiThreshold,
25554 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025555
25556 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025558
25559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25563 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025564}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025565#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25566/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025567 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025568
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025569 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025570 by the Device Interface
25571
25572 wdiRoamOffloadScancb: callback for passing back the response
25573 of the Roam Candidate Lookup Req operation received from the
25574 device
25575
25576 pUserData: user data will be passed back with the
25577 callback
25578 @return Result of the function call
25579*/
25580WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025581WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025582(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025583 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025584 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25585 void* pUserData
25586)
25587{
25588 WDI_EventInfoType wdiEventData = {{0}};
25589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25590
25591 /*------------------------------------------------------------------------
25592 Sanity Check
25593 ------------------------------------------------------------------------*/
25594 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25595 {
25596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25597 "WDI API call before module is initialized - Fail request");
25598
25599 return WDI_STATUS_E_NOT_ALLOWED;
25600 }
25601
25602 /*------------------------------------------------------------------------
25603 Fill in Event data and post to the Main FSM
25604 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025605 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25606 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25607 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025608 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25609 wdiEventData.pUserData = pUserData;
25610
25611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25612}
25613
25614void
25615WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25616{
25617 switch (wdiEdType)
25618 {
25619 case WDI_ED_NONE:
25620 *EdType = eED_NONE;
25621 break;
25622 case WDI_ED_WEP40:
25623 case WDI_ED_WEP104:
25624 *EdType = eED_WEP;
25625 break;
25626 case WDI_ED_TKIP:
25627 *EdType = eED_TKIP;
25628 break;
25629 case WDI_ED_CCMP:
25630#ifdef WLAN_FEATURE_11W
25631 case WDI_ED_AES_128_CMAC:
25632#endif
25633 *EdType = eED_CCMP;
25634 break;
25635#ifdef FEATURE_WLAN_WAPI
25636 case WDI_ED_WPI:
25637 *EdType = eED_WPI;
25638 break;
25639#endif
25640 case WDI_ED_ANY:
25641 *EdType = eED_ANY;
25642 break;
25643
25644 default:
25645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25646 "%s: Unknown Encryption Type", __func__);
25647 break;
25648 }
25649}
25650
25651/**
25652 @brief Helper function to pack Start Roam Candidate Lookup
25653 Request parameters
25654
25655 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025656 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025657 from upper layers
25658 ppSendBuffer, pSize - out pointers of the packed buffer
25659 and its size
25660
25661 @return Result of the function call
25662*/
25663
25664WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025665WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025666(
25667 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025668 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025669 wpt_uint8** ppSendBuffer,
25670 wpt_uint16* pSize
25671)
25672{
25673 wpt_uint8* pSendBuffer = NULL;
25674 wpt_uint16 usDataOffset = 0;
25675 wpt_uint16 usSendSize = 0;
25676 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25677 wpt_uint8 i;
25678 /*-----------------------------------------------------------------------
25679 Get message buffer
25680 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025682 sizeof(tRoamCandidateListParams),
25683 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025684 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025685 {
25686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025687 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025688 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025689 WDI_ASSERT(0);
25690 return WDI_STATUS_E_FAILURE;
25691 }
25692 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025693 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025694 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025695 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025696 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025697 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025698 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025699 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025700 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025701 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025702 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025703
25704 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025705 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025706 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025707 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025708 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25709 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025710 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25711 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25712 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25713 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25714 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025715 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025716 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025717 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025718 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25719 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25720 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25721 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25722 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25723 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25724 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025725 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025726 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025727 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25728 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25729 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025730
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25732 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25733 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25734 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25735 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25736 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025737 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025738 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25739 pRoamCandidateListParams->RoamScanOffloadEnabled,
25740 pRoamCandidateListParams->Command,
25741 pRoamCandidateListParams->StartScanReason,
25742 pRoamCandidateListParams->NeighborScanTimerPeriod,
25743 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25744 pRoamCandidateListParams->NeighborScanChannelMinTime,
25745 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25746 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25747 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25748 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25749 pRoamCandidateListParams->ConnectedNetwork.authentication,
25750 pRoamCandidateListParams->ConnectedNetwork.encryption,
25751 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25752 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25753 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025754 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025755 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025756 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025757 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025758 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25759 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025760 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025761 pRoamCandidateListParams->us24GProbeSize);
25762 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025763 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025764 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025765 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025766 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25767 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025768 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025769 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025770 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25771 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25772 pRoamCandidateListParams->nProbes =
25773 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25774 pRoamCandidateListParams->HomeAwayTime =
25775 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025777 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25778 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025780 }
25781
25782
25783 /*Set the output values*/
25784 *ppSendBuffer = pSendBuffer;
25785 *pSize = usSendSize;
25786 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025787}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025788
25789/**
25790 @brief Process Start Roam Candidate Lookup Request function
25791
25792 @param pWDICtx: pointer to the WLAN DAL context
25793 pEventData: pointer to the event information structure
25794
25795 @return Result of the function call
25796*/
25797WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025798WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025799(
25800 WDI_ControlBlockType* pWDICtx,
25801 WDI_EventInfoType* pEventData
25802)
25803{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025804 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025805 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25806 wpt_uint8* pSendBuffer = NULL;
25807 wpt_uint16 usSendSize = 0;
25808 WDI_Status wdiStatus;
25809 /*-------------------------------------------------------------------------
25810 Sanity check
25811 -------------------------------------------------------------------------*/
25812 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025813 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025814 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25815 {
25816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25817 "%s: Invalid parameters", __func__);
25818 WDI_ASSERT(0);
25819 return WDI_STATUS_E_FAILURE;
25820 }
25821
25822 /*-------------------------------------------------------------------------
25823 Pack the Start Roam Candidate Lookup request structure based on version
25824 -------------------------------------------------------------------------*/
25825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25826 "%s: Packing Roam Candidate Lookup request ", __func__);
25827
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025828 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025829 &pSendBuffer, &usSendSize);
25830
25831 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25832 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25833 {
25834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25835 "%s: failed to pack request parameters", __func__);
25836 WDI_ASSERT(0);
25837 return wdiStatus;
25838 }
25839
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025840 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25841 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025842
25843 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025844 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025845 -------------------------------------------------------------------------*/
25846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025847 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025848}
25849
25850/**
25851 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25852 response is being received over the bus from HAL)
25853
25854 @param pWDICtx: pointer to the WLAN DAL context
25855 pEventData: pointer to the event information structure
25856
25857 @see
25858 @return Result of the function call
25859*/
25860WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025861WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025862(
25863 WDI_ControlBlockType* pWDICtx,
25864 WDI_EventInfoType* pEventData
25865)
25866{
25867 WDI_Status wdiStatus;
25868 eHalStatus halStatus;
25869 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25870
25871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25872
25873 /*-------------------------------------------------------------------------
25874 Sanity check
25875 -------------------------------------------------------------------------*/
25876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25877 ( NULL == pEventData->pEventData ))
25878 {
25879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25880 "%s: Invalid parameters", __func__);
25881 WDI_ASSERT(0);
25882 return WDI_STATUS_E_FAILURE;
25883 }
25884
25885 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25886
25887 /*-------------------------------------------------------------------------
25888 Extract response and send it to UMAC
25889 -------------------------------------------------------------------------*/
25890 halStatus = *((eHalStatus*)pEventData->pEventData);
25891 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25892
25893 /*Notify UMAC*/
25894 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25895
25896 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025897}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025898#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025899
25900/**
25901 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025902
25903 @param pWDICtx: pointer to the WLAN DAL context
25904 pEventData: pointer to the event information structure
25905
Jeff Johnson295189b2012-06-20 16:38:30 -070025906 @see
25907 @return Result of the function call
25908*/
25909WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025910WDI_PackUpdateScanParamsReq
25911(
25912 WDI_ControlBlockType* pWDICtx,
25913 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25914 wpt_uint8** ppSendBuffer,
25915 wpt_uint16* pSize
25916)
25917{
25918 wpt_uint8* pSendBuffer = NULL;
25919 wpt_uint16 usDataOffset = 0;
25920 wpt_uint16 usSendSize = 0;
25921 tUpdateScanParams updateScanParams = {0};
25922
25923
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025925 "Begin WDI Update Scan Parameters Old Style Params");
25926 /*-----------------------------------------------------------------------
25927 Get message buffer
25928 -----------------------------------------------------------------------*/
25929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25930 sizeof(updateScanParams),
25931 &pSendBuffer, &usDataOffset, &usSendSize))||
25932 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25933 {
25934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025935 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025936 pwdiUpdateScanParams);
25937 WDI_ASSERT(0);
25938 return WDI_STATUS_E_FAILURE;
25939 }
25940
25941 //
25942 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25943 //
25944
25945 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25946 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25947
25948 updateScanParams.ucChannelCount =
25949 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25950 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25951 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25952 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25953
25954 wpalMemoryCopy( updateScanParams.aChannels,
25955 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25956 updateScanParams.ucChannelCount);
25957
25958
25959 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25960 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25961 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25962 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25963 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25964
25965 wpalMemoryCopy( pSendBuffer+usDataOffset,
25966 &updateScanParams,
25967 sizeof(updateScanParams));
25968
25969 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25970 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25971
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025973 "End Update Scan Parameters Old Style");
25974
25975 /*Set the output values*/
25976 *ppSendBuffer = pSendBuffer;
25977 *pSize = usSendSize;
25978
25979 return WDI_STATUS_SUCCESS;
25980}
25981
25982/**
25983 @brief Process Update Scan Params function
25984
25985 @param pWDICtx: pointer to the WLAN DAL context
25986 pEventData: pointer to the event information structure
25987
25988 @see
25989 @return Result of the function call
25990*/
25991WDI_Status
25992WDI_PackUpdateScanParamsReqEx
25993(
25994 WDI_ControlBlockType* pWDICtx,
25995 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25996 wpt_uint8** ppSendBuffer,
25997 wpt_uint16* pSize
25998)
25999{
26000 wpt_uint8* pSendBuffer = NULL;
26001 wpt_uint16 usDataOffset = 0;
26002 wpt_uint16 usSendSize = 0;
26003 tUpdateScanParamsEx updateScanParams = {0};
26004
26005
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026006 /*-----------------------------------------------------------------------
26007 Get message buffer
26008 -----------------------------------------------------------------------*/
26009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26010 sizeof(updateScanParams),
26011 &pSendBuffer, &usDataOffset, &usSendSize))||
26012 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26013 {
26014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026015 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026016 pwdiUpdateScanParams);
26017 WDI_ASSERT(0);
26018 return WDI_STATUS_E_FAILURE;
26019 }
26020
26021 //
26022 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26023 //
26024
26025 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26026 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26027
26028 updateScanParams.ucChannelCount =
26029 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26030 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26031 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26032 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26033
26034 wpalMemoryCopy( updateScanParams.aChannels,
26035 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26036 updateScanParams.ucChannelCount);
26037
26038
26039 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26040 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26041 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26042 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26043 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26044
26045 wpalMemoryCopy( pSendBuffer+usDataOffset,
26046 &updateScanParams,
26047 sizeof(updateScanParams));
26048
26049 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26050 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26051
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026052 /*Set the output values*/
26053 *ppSendBuffer = pSendBuffer;
26054 *pSize = usSendSize;
26055
26056 return WDI_STATUS_SUCCESS;
26057}
26058
26059/**
26060 @brief Process Update Scan Params function
26061
26062 @param pWDICtx: pointer to the WLAN DAL context
26063 pEventData: pointer to the event information structure
26064
26065 @see
26066 @return Result of the function call
26067*/
26068WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026069WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026070(
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 WDI_ControlBlockType* pWDICtx,
26072 WDI_EventInfoType* pEventData
26073)
26074{
26075 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26076 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026077 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026078 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026079 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026080
26081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 -------------------------------------------------------------------------*/
26084 if (( NULL == pEventData ) ||
26085 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26086 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26087 {
26088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 }
26093
26094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26095 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026096
26097 //
26098 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26099 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026100 if ( pWDICtx->wlanVersion.revision < 1 )
26101 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026102 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026103 &pSendBuffer, &usSendSize);
26104 }
26105 else
26106 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026107 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26108 &pSendBuffer, &usSendSize);
26109 }
26110
26111 if(WDI_STATUS_SUCCESS != wdiStatus)
26112 {
26113 //memory allocation failed
26114 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026115 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026116
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026121 wdiUpdateScanParamsCb, pEventData->pUserData,
26122 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026123}
26124
26125/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026126 @brief Process Update Channel Params function
26127
26128 @param pWDICtx: pointer to the WLAN DAL context
26129 pEventData: pointer to the event information structure
26130
26131 @see
26132 @return Result of the function call
26133*/
26134WDI_Status
26135WDI_ProcessUpdateChannelParamsReq
26136(
26137 WDI_ControlBlockType* pWDICtx,
26138 WDI_EventInfoType* pEventData
26139)
26140{
26141 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26142 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26143 wpt_uint8* pSendBuffer = NULL;
26144 wpt_uint16 usDataOffset = 0;
26145 wpt_uint16 usSendSize = 0;
26146 tUpdateChannelReqType *updateChannelParams;
26147 wpt_uint32 usUpdateChanParamSize;
26148 wpt_uint8 num_channels = 0;
26149
26150 /*-------------------------------------------------------------------------
26151 Sanity check
26152 -------------------------------------------------------------------------*/
26153 if (( NULL == pEventData ) ||
26154 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26155 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26156 {
26157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26158 "%s: Invalid parameters", __func__);
26159 WDI_ASSERT(0);
26160 return WDI_STATUS_E_FAILURE;
26161 }
26162 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
26163 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
26164 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
26165 sizeof(tUpdateChannelParam)));
26166
26167 /*-----------------------------------------------------------------------
26168 Get message buffer
26169 -----------------------------------------------------------------------*/
26170 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26171 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26172 &pSendBuffer, &usDataOffset, &usSendSize))||
26173 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26174 {
26175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26176 "Unable to get send buffer in Update Channel Params req %p",
26177 pwdiUpdateChanListParams);
26178 WDI_ASSERT(0);
26179 return WDI_STATUS_E_FAILURE;
26180 }
26181 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26182
26183 updateChannelParams->numChan = num_channels;
26184 wpalMemoryCopy(&updateChannelParams->chanParam,
26185 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26186 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26187
26188 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26189 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26190
26191 /*-------------------------------------------------------------------------
26192 Send Update channel request to fw
26193 -------------------------------------------------------------------------*/
26194 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26195 wdiUpdateChanParamsCb, pEventData->pUserData,
26196 WDI_UPDATE_CHAN_RESP);
26197}
26198
26199/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026200 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026201
26202 @param pWDICtx: pointer to the WLAN DAL context
26203 pEventData: pointer to the event information structure
26204
Jeff Johnson295189b2012-06-20 16:38:30 -070026205 @see
26206 @return Result of the function call
26207*/
26208WDI_Status
26209WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026210(
Jeff Johnson295189b2012-06-20 16:38:30 -070026211 WDI_ControlBlockType* pWDICtx,
26212 WDI_EventInfoType* pEventData
26213)
26214{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026215 WDI_LowLevelIndType wdiInd;
26216 tpPrefNetwFoundParams pNetwFoundParams;
26217 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026218
26219
26220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 -------------------------------------------------------------------------*/
26223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26224 ( NULL == pEventData->pEventData ))
26225 {
26226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026228 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 }
26231
26232 /*-------------------------------------------------------------------------
26233 Extract indication and send it to UMAC
26234 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026235 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26236
26237 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26238 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26239 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26240
26241 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26242 {
26243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26244 "%s: fail to allocate memory", __func__);
26245 return WDI_STATUS_MEM_FAILURE;
26246 }
26247
26248 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26249 (pNetwFoundParams->ssId.length < 32 )?
26250 pNetwFoundParams->ssId.length : 32;
26251 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26252 pNetwFoundParams->ssId.ssId,
26253 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26254 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26255 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26256 pNetwFoundParams->frameLength;
26257 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26258 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26259 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026260
26261 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026262 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026263
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 // DEBUG
26265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070026266 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026268 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026270 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026271 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26272
ltimariub77f24b2013-01-24 18:54:33 -080026273 if ( pWDICtx->wdiLowLevelIndCB )
26274 {
26275 /*Notify UMAC*/
26276 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26277 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026278
26279 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026280}
26281
26282/**
26283 @brief Process PNO Rsp function (called when a
26284 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026285
26286 @param pWDICtx: pointer to the WLAN DAL context
26287 pEventData: pointer to the event information structure
26288
Jeff Johnson295189b2012-06-20 16:38:30 -070026289 @see
26290 @return Result of the function call
26291*/
26292WDI_Status
26293WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026294(
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 WDI_ControlBlockType* pWDICtx,
26296 WDI_EventInfoType* pEventData
26297)
26298{
26299 WDI_Status wdiStatus;
26300 eHalStatus halStatus;
26301 WDI_PNOScanCb wdiPNOScanCb = NULL;
26302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26303
26304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026306 -------------------------------------------------------------------------*/
26307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26308 ( NULL == pEventData->pEventData ))
26309 {
26310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 }
26315
26316
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026318
26319 /*-------------------------------------------------------------------------
26320 Extract response and send it to UMAC
26321 -------------------------------------------------------------------------*/
26322 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026324
26325 /*Notify UMAC*/
26326 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26327
Jeff Johnsone7245742012-09-05 17:12:55 -070026328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026329}/*WDI_ProcessSetPreferredNetworkRsp*/
26330
26331/**
26332 @brief Process RSSI Filter Rsp function (called when a
26333 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026334
26335 @param pWDICtx: pointer to the WLAN DAL context
26336 pEventData: pointer to the event information structure
26337
Jeff Johnson295189b2012-06-20 16:38:30 -070026338 @see
26339 @return Result of the function call
26340*/
26341WDI_Status
26342WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026343(
Jeff Johnson295189b2012-06-20 16:38:30 -070026344 WDI_ControlBlockType* pWDICtx,
26345 WDI_EventInfoType* pEventData
26346)
26347{
26348 WDI_Status wdiStatus;
26349 eHalStatus halStatus;
26350 WDI_RssiFilterCb wdiRssiFilterCb;
26351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26352
26353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 -------------------------------------------------------------------------*/
26356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26357 ( NULL == pEventData->pEventData ))
26358 {
26359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026363 }
26364
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026366
26367 /*-------------------------------------------------------------------------
26368 Extract response and send it to UMAC
26369 -------------------------------------------------------------------------*/
26370 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026371 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026372
26373 /*Notify UMAC*/
26374 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26375
Jeff Johnsone7245742012-09-05 17:12:55 -070026376 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026377}/*WDI_ProcessSetRssiFilterRsp*/
26378
26379/**
26380 @brief Process Update Scan Params Rsp function (called when a
26381 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026382
26383 @param pWDICtx: pointer to the WLAN DAL context
26384 pEventData: pointer to the event information structure
26385
Jeff Johnson295189b2012-06-20 16:38:30 -070026386 @see
26387 @return Result of the function call
26388*/
26389WDI_Status
26390WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026391(
Jeff Johnson295189b2012-06-20 16:38:30 -070026392 WDI_ControlBlockType* pWDICtx,
26393 WDI_EventInfoType* pEventData
26394)
26395{
26396 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026397 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026398 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026399 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26401
26402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 -------------------------------------------------------------------------*/
26405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26406 ( NULL == pEventData->pEventData ))
26407 {
26408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026412 }
26413
26414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026415 "%s: Process UPD scan params ptr : %p",
26416 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026417
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026419
26420 /*-------------------------------------------------------------------------
26421 Extract response and send it to UMAC
26422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026423 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26424 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 sizeof(halUpdScanParams.status));
26426
26427 uStatus = halUpdScanParams.status;
26428
26429 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026430 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026431
26432 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026433 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026434
Jeff Johnsone7245742012-09-05 17:12:55 -070026435 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026436
26437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026438 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026439 halUpdScanParams.status);
26440
26441 /*Notify UMAC*/
26442 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26443
Jeff Johnsone7245742012-09-05 17:12:55 -070026444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026445}
26446#endif // FEATURE_WLAN_SCAN_PNO
26447
26448#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026449WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026450WDI_8023MulticastListReq
26451(
26452 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26453 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26454 void* pUserData
26455)
26456{
26457 WDI_EventInfoType wdiEventData;
26458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26459
26460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026461 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026462
26463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026465 ------------------------------------------------------------------------*/
26466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26467 {
26468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26469 "WDI API call before module is initialized - Fail request");
26470
Jeff Johnsone7245742012-09-05 17:12:55 -070026471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 }
26473
26474 /*------------------------------------------------------------------------
26475 Fill in Event data and post to the Main FSM
26476 ------------------------------------------------------------------------*/
26477 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026480 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 wdiEventData.pUserData = pUserData;
26482
26483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26484}
26485
Jeff Johnsone7245742012-09-05 17:12:55 -070026486WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026487WDI_ReceiveFilterSetFilterReq
26488(
26489 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26490 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26491 void* pUserData
26492)
26493{
26494 WDI_EventInfoType wdiEventData;
26495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26496
26497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026498 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026499
26500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026502 ------------------------------------------------------------------------*/
26503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26504 {
26505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26506 "WDI API call before module is initialized - Fail request");
26507
Jeff Johnsone7245742012-09-05 17:12:55 -070026508 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026509 }
26510
26511 /*------------------------------------------------------------------------
26512 Fill in Event data and post to the Main FSM
26513 ------------------------------------------------------------------------*/
26514 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026515 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26516 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026517 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26518 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026519 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026520 wdiEventData.pUserData = pUserData;
26521
26522
26523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26524}
26525
Jeff Johnsone7245742012-09-05 17:12:55 -070026526WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026527WDI_FilterMatchCountReq
26528(
26529 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26530 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26531 void* pUserData
26532)
26533{
26534 WDI_EventInfoType wdiEventData;
26535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26536
26537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026538 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026539
26540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 ------------------------------------------------------------------------*/
26543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26544 {
26545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26546 "WDI API call before module is initialized - Fail request");
26547
Jeff Johnsone7245742012-09-05 17:12:55 -070026548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026549 }
26550
26551 /*------------------------------------------------------------------------
26552 Fill in Event data and post to the Main FSM
26553 ------------------------------------------------------------------------*/
26554 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026555 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026556 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026557 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 wdiEventData.pUserData = pUserData;
26559
26560
26561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26562}
26563
Jeff Johnsone7245742012-09-05 17:12:55 -070026564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026565WDI_ReceiveFilterClearFilterReq
26566(
26567 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26568 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26569 void* pUserData
26570)
26571{
26572 WDI_EventInfoType wdiEventData;
26573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26574
26575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026576 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026577
26578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026579 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026580 ------------------------------------------------------------------------*/
26581 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26582 {
26583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26584 "WDI API call before module is initialized - Fail request");
26585
Jeff Johnsone7245742012-09-05 17:12:55 -070026586 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026587 }
26588
26589 /*------------------------------------------------------------------------
26590 Fill in Event data and post to the Main FSM
26591 ------------------------------------------------------------------------*/
26592 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026593 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026594 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026595 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026596 wdiEventData.pUserData = pUserData;
26597
26598
26599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26600}
26601
26602/**
26603 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026604
26605 @param pWDICtx: pointer to the WLAN DAL context
26606 pEventData: pointer to the event information structure
26607
Jeff Johnson295189b2012-06-20 16:38:30 -070026608 @see
26609 @return Result of the function call
26610*/
26611WDI_Status
26612WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026613(
Jeff Johnson295189b2012-06-20 16:38:30 -070026614 WDI_ControlBlockType* pWDICtx,
26615 WDI_EventInfoType* pEventData
26616)
26617{
26618 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26619 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026620 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026621 wpt_uint16 usDataOffset = 0;
26622 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026623 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026624 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026625 wpt_uint8 ucCurrentBSSSesIdx = 0;
26626 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026627
26628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026629 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026630
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026631 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26632 if( NULL == pRcvFltMcAddrListType )
26633 {
26634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26635 "Failed to alloc in WDI_Process8023MulticastListReq");
26636 return WDI_STATUS_E_FAILURE;
26637 }
26638
Jeff Johnson295189b2012-06-20 16:38:30 -070026639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026641 -------------------------------------------------------------------------*/
26642 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026643 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026644 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026645 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026646 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26647 {
26648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026649 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026650 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026652 return WDI_STATUS_E_FAILURE;
26653 }
26654
26655 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26656 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26657 &pBSSSes);
26658 if ( NULL == pBSSSes )
26659 {
26660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026661 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026662 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026664 }
26665
26666 /*-----------------------------------------------------------------------
26667 Get message buffer
26668 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26670 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026671 sizeof(tHalRcvFltMcAddrListType),
26672 &pSendBuffer, &usDataOffset, &usSendSize))||
26673 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26674 {
26675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26676 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026677 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 pEventData, pwdiFltPktSetMcListReqParamsType,
26679 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026680 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026683 }
26684
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026685 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026686 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026687 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026688 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026689 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026690 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26691 sizeof(tSirMacAddr));
26692 }
26693
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026694 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026695 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026696 pRcvFltMcAddrListType,
26697 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026698
26699 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026700 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026701
26702
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026703 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026705 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026708 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026709 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026710}
26711
26712/**
26713 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026714
26715 @param pWDICtx: pointer to the WLAN DAL context
26716 pEventData: pointer to the event information structure
26717
Jeff Johnson295189b2012-06-20 16:38:30 -070026718 @see
26719 @return Result of the function call
26720*/
26721WDI_Status
26722WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026723(
Jeff Johnson295189b2012-06-20 16:38:30 -070026724 WDI_ControlBlockType* pWDICtx,
26725 WDI_EventInfoType* pEventData
26726)
26727{
26728 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26729 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026730 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026731 wpt_uint16 usDataOffset = 0;
26732 wpt_uint16 usSendSize = 0;
26733 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026734 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026735 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026736 wpt_uint8 ucCurrentBSSSesIdx = 0;
26737 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026738 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26739 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026740
26741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026742 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026743
26744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026746 -------------------------------------------------------------------------*/
26747 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026748 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026749 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026750 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026751 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26752 {
26753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026756 return WDI_STATUS_E_FAILURE;
26757 }
26758
26759 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26760 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26761 &pBSSSes);
26762 if ( NULL == pBSSSes )
26763 {
26764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026765 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026767 }
26768
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026769 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26770 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026771
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026772 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26773 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26774 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26775
26776 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26777 usSessRcvPktFilterCfgSize);
26778
26779 if(NULL == pSessRcvPktFilterCfg)
26780 {
26781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26782 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026783 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026784 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026785 WDI_ASSERT(0);
26786 return WDI_STATUS_E_FAILURE;
26787 }
26788
26789 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26790
26791 /*-----------------------------------------------------------------------
26792 Get message buffer
26793 -----------------------------------------------------------------------*/
26794
26795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26796 usSessRcvPktFilterCfgSize,
26797 &pSendBuffer, &usDataOffset, &usSendSize))||
26798 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26799 {
26800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26801 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026802 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026803 pEventData, pwdiSetRcvPktFilterReqInfo,
26804 wdiReceiveFilterSetFilterCb);
26805 WDI_ASSERT(0);
26806 wpalMemoryFree(pSessRcvPktFilterCfg);
26807 return WDI_STATUS_E_FAILURE;
26808 }
26809
26810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026811 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026812 usSendSize,pSessRcvPktFilterCfg);
26813
26814 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26815 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26816 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26817 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26818
26819 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26820
26821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26822 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26823 pSessRcvPktFilterCfg->filterType);
26824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26825 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26826 pSessRcvPktFilterCfg->coleasceTime);
26827
26828 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26829 {
26830 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26831 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26832 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26833 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26834 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26835 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26836 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26837 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26838
26839 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26840 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26841 8);
26842 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26843 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26844 8);
26845
26846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026847 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026848 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26849 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26850
26851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026852 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026853 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26854 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26855
26856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026857 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026858 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26859 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26860 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26861 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26862 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26863 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26864
26865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026866 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026867 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26868 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26869 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26870 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26871 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26872 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26873 }
26874
26875 wpalMemoryCopy( pSendBuffer+usDataOffset,
26876 pSessRcvPktFilterCfg,
26877 usSessRcvPktFilterCfgSize);
26878
26879
26880 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26881 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26882
26883 wpalMemoryFree(pSessRcvPktFilterCfg);
26884
26885 }
26886 /*If SLM_SESSIONIZATION is not supported then do this */
26887 else
26888 {
26889 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26890 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26891 * sizeof(tHalRcvPktFilterParams));
26892
26893 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026894 usRcvPktFilterCfgSize);
26895
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026896 if(NULL == pRcvPktFilterCfg)
26897 {
26898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26899 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026900 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026901 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026902 WDI_ASSERT(0);
26903 return WDI_STATUS_E_FAILURE;
26904 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026905
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026906 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026907
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026908 /*-----------------------------------------------------------------------
26909 Get message buffer
26910 -----------------------------------------------------------------------*/
26911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026912 usRcvPktFilterCfgSize,
26913 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026914 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26915 {
26916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026917 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026918 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026919 pEventData, pwdiSetRcvPktFilterReqInfo,
26920 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026921 WDI_ASSERT(0);
26922 wpalMemoryFree(pRcvPktFilterCfg);
26923 return WDI_STATUS_E_FAILURE;
26924 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026925
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026927 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026928 usSendSize,usRcvPktFilterCfgSize);
26929
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026930 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26931 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26932 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26933 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026934
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026936 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026937 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026939 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026940 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026942 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26943 {
26944 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26945 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26946 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26947 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26948 pRcvPktFilterCfg->paramsData[i].dataOffset =
26949 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26950 pRcvPktFilterCfg->paramsData[i].dataLength =
26951 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026952
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026953 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026954 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26955 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026956 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026957 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26958 8);
26959
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026961 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026962 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026966 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026967 pRcvPktFilterCfg->paramsData[i].dataOffset,
26968 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026969
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026971 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026972 pRcvPktFilterCfg->paramsData[i].compareData[0],
26973 pRcvPktFilterCfg->paramsData[i].compareData[1],
26974 pRcvPktFilterCfg->paramsData[i].compareData[2],
26975 pRcvPktFilterCfg->paramsData[i].compareData[3],
26976 pRcvPktFilterCfg->paramsData[i].compareData[4],
26977 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026980 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026981 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26982 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26983 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26984 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26985 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26986 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26987 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026988
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026989 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026990 pRcvPktFilterCfg,
26991 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026992
26993
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026994 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26995 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026996
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026998 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026999 wpalMemoryFree(pRcvPktFilterCfg);
27000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027002 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027005 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027006 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027007}
27008
27009/**
27010 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027011
27012 @param pWDICtx: pointer to the WLAN DAL context
27013 pEventData: pointer to the event information structure
27014
Jeff Johnson295189b2012-06-20 16:38:30 -070027015 @see
27016 @return Result of the function call
27017*/
27018WDI_Status
27019WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027020(
Jeff Johnson295189b2012-06-20 16:38:30 -070027021 WDI_ControlBlockType* pWDICtx,
27022 WDI_EventInfoType* pEventData
27023)
27024{
27025 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27026 NULL;
27027 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27028 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027029 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027030 wpt_uint16 usDataOffset = 0;
27031 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027032 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27033 wpt_uint8 ucCurrentBSSSesIdx = 0;
27034 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027035
27036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027037 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027038
27039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 -------------------------------------------------------------------------*/
27042 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027043 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027044 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027045 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027046 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27047 {
27048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027052 }
27053
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027054 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27055 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27056 &pBSSSes);
27057 if ( NULL == pBSSSes )
27058 {
27059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027060 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027061 return WDI_STATUS_E_FAILURE;
27062 }
27063
Jeff Johnson295189b2012-06-20 16:38:30 -070027064 /*-----------------------------------------------------------------------
27065 Get message buffer
27066 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027067 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27068 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027069 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027070 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027071 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027072 {
27073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27074 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027075 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027076 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27077 wdiFilterMatchCountCb);
27078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027080 }
27081
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027082 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27083 wpalMemoryCopy( pSendBuffer+usDataOffset,
27084 &rcvFltPktMatchCntReqParam,
27085 sizeof(rcvFltPktMatchCntReqParam));
27086
Jeff Johnson295189b2012-06-20 16:38:30 -070027087 //
27088 // Don't need to fill send buffer other than header
27089 //
27090 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027091 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027092
27093
27094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027095 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27098 wdiFilterMatchCountCb,
27099 pEventData->pUserData,
27100 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027101}
27102
27103/**
27104 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027105
27106 @param pWDICtx: pointer to the WLAN DAL context
27107 pEventData: pointer to the event information structure
27108
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 @see
27110 @return Result of the function call
27111*/
27112WDI_Status
27113WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027114(
Jeff Johnson295189b2012-06-20 16:38:30 -070027115 WDI_ControlBlockType* pWDICtx,
27116 WDI_EventInfoType* pEventData
27117)
Jeff Johnsone7245742012-09-05 17:12:55 -070027118{
Jeff Johnson295189b2012-06-20 16:38:30 -070027119 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27120 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027122 wpt_uint16 usDataOffset = 0;
27123 wpt_uint16 usSendSize = 0;
27124 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027125 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027126 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027127
27128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027129 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027130
27131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027133 -------------------------------------------------------------------------*/
27134 if (( NULL == pEventData ) ||
27135 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27136 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027137 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027138 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27139 {
27140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027143 return WDI_STATUS_E_FAILURE;
27144 }
27145
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027146 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27148 &pBSSSes);
27149 if ( NULL == pBSSSes )
27150 {
27151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027152 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 }
27155
27156 /*-----------------------------------------------------------------------
27157 Get message buffer
27158 -----------------------------------------------------------------------*/
27159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027160 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027161 sizeof(tHalRcvFltPktClearParam),
27162 &pSendBuffer, &usDataOffset, &usSendSize))||
27163 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27164 {
27165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27166 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027167 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027168 pEventData, pwdiRcvFltPktClearReqParamsType,
27169 wdiRcvFltPktClearFilterCb);
27170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027172 }
27173
27174
27175 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027176 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027177 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027178 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027179
Jeff Johnsone7245742012-09-05 17:12:55 -070027180 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27181 wpalMemoryCopy( pSendBuffer+usDataOffset,
27182 &rcvFltPktClearParam,
27183 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027184
27185 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027186 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027187
27188
27189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027190 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027193 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027194 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027195}
27196
27197/**
27198 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027199
27200 @param pWDICtx: pointer to the WLAN DAL context
27201 pEventData: pointer to the event information structure
27202
Jeff Johnson295189b2012-06-20 16:38:30 -070027203 @see
27204 @return Result of the function call
27205*/
27206WDI_Status
27207WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027208(
Jeff Johnson295189b2012-06-20 16:38:30 -070027209 WDI_ControlBlockType* pWDICtx,
27210 WDI_EventInfoType* pEventData
27211)
27212{
Jeff Johnson295189b2012-06-20 16:38:30 -070027213 eHalStatus halStatus;
27214 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027215 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27216 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27218
27219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027220 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027221
27222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 -------------------------------------------------------------------------*/
27225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27226 ( NULL == pEventData->pEventData ))
27227 {
27228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027232 }
27233
Jeff Johnsone7245742012-09-05 17:12:55 -070027234 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027235
27236 /*-------------------------------------------------------------------------
27237 Extract response and send it to UMAC
27238 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027239 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27240 {
27241 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27242 pEventData->pEventData,
27243 sizeof(halRcvFltPktSetMcListRsp));
27244
27245 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27246 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27247 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27248 halRcvFltPktSetMcListRsp.bssIdx;
27249 }
27250 else
27251 {
27252 halStatus = *((eHalStatus*)pEventData->pEventData);
27253 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27254 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027255
27256 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027257 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027258
Jeff Johnsone7245742012-09-05 17:12:55 -070027259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027260}
27261
27262/**
27263 @brief Process Set Rsp function (called when a
27264 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027265
27266 @param pWDICtx: pointer to the WLAN DAL context
27267 pEventData: pointer to the event information structure
27268
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 @see
27270 @return Result of the function call
27271*/
27272WDI_Status
27273WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027274(
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 WDI_ControlBlockType* pWDICtx,
27276 WDI_EventInfoType* pEventData
27277)
27278{
Jeff Johnson295189b2012-06-20 16:38:30 -070027279 eHalStatus halStatus;
27280 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027281 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27282 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27284
27285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027286 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027287
27288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 -------------------------------------------------------------------------*/
27291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27292 ( NULL == pEventData->pEventData ))
27293 {
27294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027298 }
27299
27300 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027301 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027302
27303 /*-------------------------------------------------------------------------
27304 Extract response and send it to UMAC
27305 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027306 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27307 {
27308 wpalMemoryCopy( &halSetPktFilterRspParams,
27309 pEventData->pEventData,
27310 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027312 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27313 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27314 }
27315 else
27316 {
27317 halStatus = *((eHalStatus*)pEventData->pEventData);
27318 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27319 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027320 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027321 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027322
Jeff Johnsone7245742012-09-05 17:12:55 -070027323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027324}
27325
27326/**
27327 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027328
27329 @param pWDICtx: pointer to the WLAN DAL context
27330 pEventData: pointer to the event information structure
27331
Jeff Johnson295189b2012-06-20 16:38:30 -070027332 @see
27333 @return Result of the function call
27334*/
27335WDI_Status
27336WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027337(
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 WDI_ControlBlockType* pWDICtx,
27339 WDI_EventInfoType* pEventData
27340)
27341{
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027343 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027344 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27345 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027346
27347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27348
27349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027350 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027351
27352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 -------------------------------------------------------------------------*/
27355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27356 ( NULL == pEventData->pEventData ))
27357 {
27358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 }
27363
Jeff Johnsone7245742012-09-05 17:12:55 -070027364 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027365
27366 /*-------------------------------------------------------------------------
27367 Extract response and send it to UMAC
27368 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027369 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27370 {
27371 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27372 pEventData->pEventData,
27373 sizeof(halRcvFltrPktMatachRsp));
27374
27375 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27376 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27377 }
27378 else
27379 {
27380 halStatus = *((eHalStatus*)pEventData->pEventData);
27381 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27382 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027383
27384 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027385 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027386
Jeff Johnsone7245742012-09-05 17:12:55 -070027387 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027388}
27389
27390/**
27391 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027392
27393 @param pWDICtx: pointer to the WLAN DAL context
27394 pEventData: pointer to the event information structure
27395
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 @see
27397 @return Result of the function call
27398*/
27399WDI_Status
27400WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027401(
Jeff Johnson295189b2012-06-20 16:38:30 -070027402 WDI_ControlBlockType* pWDICtx,
27403 WDI_EventInfoType* pEventData
27404)
27405{
Jeff Johnson295189b2012-06-20 16:38:30 -070027406 eHalStatus halStatus;
27407 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027408 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27409 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27411
27412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027413 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027414
27415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027417 -------------------------------------------------------------------------*/
27418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27419 ( NULL == pEventData->pEventData ))
27420 {
27421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027425 }
27426
27427 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027428 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027429
27430 /*-------------------------------------------------------------------------
27431 Extract response and send it to UMAC
27432 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027433 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27434 {
27435 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27436 pEventData->pEventData,
27437 sizeof(halRcvFltPktClearRspMsg));
27438
27439 wdiRcvFltPktClearRspParamsType.wdiStatus =
27440 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27441 wdiRcvFltPktClearRspParamsType.bssIdx =
27442 halRcvFltPktClearRspMsg.bssIdx;
27443 }
27444 else
27445 {
27446 halStatus = *((eHalStatus*)pEventData->pEventData);
27447 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027449
27450 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027451 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027452
Jeff Johnsone7245742012-09-05 17:12:55 -070027453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027454}
27455#endif // WLAN_FEATURE_PACKET_FILTERING
27456
27457/**
27458 @brief Process Shutdown Rsp function
27459 There is no shutdown response comming from HAL
27460 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027461
Jeff Johnson295189b2012-06-20 16:38:30 -070027462 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027463 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027464
27465 @see
27466 @return Result of the function call
27467*/
27468WDI_Status
27469WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027470(
Jeff Johnson295189b2012-06-20 16:38:30 -070027471 WDI_ControlBlockType* pWDICtx,
27472 WDI_EventInfoType* pEventData
27473)
27474{
27475 /*There is no shutdown response comming from HAL - function just kept for
27476 simmetry */
27477 WDI_ASSERT(0);
27478 return WDI_STATUS_SUCCESS;
27479}/*WDI_ProcessShutdownRsp*/
27480
27481/**
27482 @brief WDI_SetPowerParamsReq
27483
Jeff Johnsone7245742012-09-05 17:12:55 -070027484 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027485 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027486
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 wdiPowerParamsCb: callback for passing back the response
27488 of the Set Power Params operation received from the
27489 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027490
Jeff Johnson295189b2012-06-20 16:38:30 -070027491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027492 callback
27493
Jeff Johnson295189b2012-06-20 16:38:30 -070027494 @return Result of the function call
27495*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027497WDI_SetPowerParamsReq
27498(
27499 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27500 WDI_SetPowerParamsCb wdiPowerParamsCb,
27501 void* pUserData
27502)
27503{
27504 WDI_EventInfoType wdiEventData;
27505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27506
27507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027509 ------------------------------------------------------------------------*/
27510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27511 {
27512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27513 "WDI API call before module is initialized - Fail request");
27514
Jeff Johnsone7245742012-09-05 17:12:55 -070027515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027516 }
27517
27518 /*------------------------------------------------------------------------
27519 Fill in Event data and post to the Main FSM
27520 ------------------------------------------------------------------------*/
27521 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027522 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027523 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027524 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027525 wdiEventData.pUserData = pUserData;
27526
27527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27528}/*WDI_SetPowerParamsReq*/
27529
27530/**
27531 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027532
27533 @param pWDICtx: pointer to the WLAN DAL context
27534 pEventData: pointer to the event information structure
27535
Jeff Johnson295189b2012-06-20 16:38:30 -070027536 @see
27537 @return Result of the function call
27538*/
27539WDI_Status
27540WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027541(
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 WDI_ControlBlockType* pWDICtx,
27543 WDI_EventInfoType* pEventData
27544)
27545{
27546 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27547 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 wpt_uint16 usDataOffset = 0;
27550 wpt_uint16 usSendSize = 0;
27551 tSetPowerParamsType powerParams;
27552
27553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027555 -------------------------------------------------------------------------*/
27556 if (( NULL == pEventData ) ||
27557 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27558 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27559 {
27560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027561 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027564 }
27565
27566 /*-----------------------------------------------------------------------
27567 Get message buffer
27568 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027570 sizeof(powerParams),
27571 &pSendBuffer, &usDataOffset, &usSendSize))||
27572 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27573 {
27574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027575 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027576 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027579 }
27580
27581 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027582 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027583 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27584
27585 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027586 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27588
27589 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027590 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027591 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27592
27593 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027594 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027595 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27596
27597 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027598 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027599 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27600
27601 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027602 powerParams.uBETInterval =
27603 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027604
Yue Mac24062f2013-05-13 17:01:29 -070027605 /* MAX LI for modulated DTIM */
27606 powerParams.uMaxLIModulatedDTIM =
27607 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027608
27609 wpalMemoryCopy( pSendBuffer+usDataOffset,
27610 &powerParams,
27611 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027612
27613 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027614 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027615
27616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27620 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027621}
27622
27623/**
27624 @brief Process Power Params Rsp function (called when a
27625 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027626
27627 @param pWDICtx: pointer to the WLAN DAL context
27628 pEventData: pointer to the event information structure
27629
Jeff Johnson295189b2012-06-20 16:38:30 -070027630 @see
27631 @return Result of the function call
27632*/
27633WDI_Status
27634WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027635(
Jeff Johnson295189b2012-06-20 16:38:30 -070027636 WDI_ControlBlockType* pWDICtx,
27637 WDI_EventInfoType* pEventData
27638)
27639{
27640 WDI_Status wdiStatus;
27641 eHalStatus halStatus;
27642 WDI_SetPowerParamsCb wdiPowerParamsCb;
27643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27644
27645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027647 -------------------------------------------------------------------------*/
27648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27649 ( NULL == pEventData->pEventData ))
27650 {
27651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 }
27656
Jeff Johnsone7245742012-09-05 17:12:55 -070027657 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027658
27659 /*-------------------------------------------------------------------------
27660 Extract response and send it to UMAC
27661 -------------------------------------------------------------------------*/
27662 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027663 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027664
27665 /*Notify UMAC*/
27666 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27667
Jeff Johnsone7245742012-09-05 17:12:55 -070027668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027669}/*WDI_ProcessSetPowerParamsRsp*/
27670
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027671/**
27672 @brief WDI_dhcpStartInd
27673 Host will send an event to the FW when DHCP is initiated
27674
27675 @param
27676 WDI_DHCPInd: DHCP Indication
27677 @see
27678 @return Result of the function call
27679*/
27680WDI_Status
27681WDI_dhcpStartInd
27682(
27683 WDI_DHCPInd *wdiDHCPInd
27684)
27685{
27686 WDI_EventInfoType wdiEventData;
27687
27688 /*------------------------------------------------------------------------
27689 Sanity Check
27690 ------------------------------------------------------------------------*/
27691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27692 {
27693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27694 "WDI API call before module is initialized - Fail request");
27695
27696 return WDI_STATUS_E_NOT_ALLOWED;
27697 }
27698
27699 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27700 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027701 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027702 wdiEventData.pCBfnc = NULL;
27703 wdiEventData.pUserData = NULL;
27704
27705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27706}
27707
27708
27709/**
27710 @brief WDI_dhcpStopInd
27711 Host will send an event to the FW when DHCP is completed
27712
27713 @param
27714 WDI_DHCPInd: DHCP Indication
27715 @see
27716 @return Result of the function call
27717*/
27718WDI_Status
27719WDI_dhcpStopInd
27720(
27721 WDI_DHCPInd *wdiDHCPInd
27722)
27723{
27724 WDI_EventInfoType wdiEventData;
27725
27726 /*------------------------------------------------------------------------
27727 Sanity Check
27728 ------------------------------------------------------------------------*/
27729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27730 {
27731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27732 "WDI API call before module is initialized - Fail request");
27733
27734 return WDI_STATUS_E_NOT_ALLOWED;
27735 }
27736
27737 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27738 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027739 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027740 wdiEventData.pCBfnc = NULL;
27741 wdiEventData.pUserData = NULL;
27742
27743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27744}
27745
27746
27747/**
27748 @brief Process DHCP Start Indication message and post it to HAL
27749
27750 @param pWDICtx: pointer to the WLAN DAL context
27751 pEventData: pointer to the event information structure
27752
27753 @see
27754 @return Result of the function call
27755*/
27756WDI_Status
27757WDI_ProcessDHCPStartInd
27758(
27759 WDI_ControlBlockType* pWDICtx,
27760 WDI_EventInfoType* pEventData
27761)
27762{
27763 wpt_uint8* pSendBuffer = NULL;
27764 wpt_uint16 usDataOffset = 0;
27765 wpt_uint16 usSendSize = 0;
27766 wpt_uint16 usLen = 0;
27767 WDI_DHCPInd* pwdiDHCPInd = NULL;
27768 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027769 WDI_Status wdiStatus;
27770
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027771
27772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27773
27774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27775 "%s", __func__);
27776
27777 /*-------------------------------------------------------------------------
27778 Sanity check
27779 -------------------------------------------------------------------------*/
27780 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27781 {
27782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27783 "%s: Invalid parameters", __func__);
27784 WDI_ASSERT(0);
27785 return WDI_STATUS_E_FAILURE;
27786 }
27787 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27788 /*-----------------------------------------------------------------------
27789 Get message buffer
27790 -----------------------------------------------------------------------*/
27791
27792 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27793 WDI_DHCP_START_IND,
27794 sizeof(tDHCPInfo),
27795 &pSendBuffer, &usDataOffset, &usSendSize))||
27796 ( usSendSize < (usDataOffset + usLen )))
27797 {
27798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27799 "Unable to get send buffer in DHCP Start req %p ",
27800 pEventData);
27801 WDI_ASSERT(0);
27802 return WDI_STATUS_E_FAILURE;
27803 }
27804
Sandeep Puligillaee789512014-02-13 19:14:52 +053027805 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027806 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27807 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27808 WDI_MAC_ADDR_LEN);
27809
27810 pWDICtx->pReqStatusUserData = NULL;
27811 pWDICtx->pfncRspCB = NULL;
27812
27813 /*-------------------------------------------------------------------------
27814 Send DHCP Start Indication to HAL
27815 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027816 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27817 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027818}/*WDI_ProcessDHCPStartInd*/
27819
27820/**
27821 @brief Process DHCP Stop indication message and post it to HAL
27822
27823 @param pWDICtx: pointer to the WLAN DAL context
27824 pEventData: pointer to the event information structure
27825
27826 @see
27827 @return Result of the function call
27828*/
27829WDI_Status
27830WDI_ProcessDHCPStopInd
27831(
27832 WDI_ControlBlockType* pWDICtx,
27833 WDI_EventInfoType* pEventData
27834)
27835{
27836 wpt_uint8* pSendBuffer = NULL;
27837 wpt_uint16 usDataOffset = 0;
27838 wpt_uint16 usSendSize = 0;
27839 wpt_uint16 usLen = 0;
27840 WDI_DHCPInd* pwdiDHCPInd = NULL;
27841 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027842 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027843
27844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27845
27846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27847 "%s", __func__);
27848
27849 /*-------------------------------------------------------------------------
27850 Sanity check
27851 -------------------------------------------------------------------------*/
27852
27853 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27854 {
27855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27856 "%s: Invalid parameters", __func__);
27857 WDI_ASSERT(0);
27858 return WDI_STATUS_E_FAILURE;
27859 }
27860 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27861 /*-----------------------------------------------------------------------
27862 Get message buffer
27863 -----------------------------------------------------------------------*/
27864
27865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27866 WDI_DHCP_STOP_IND,
27867 sizeof(tDHCPInfo),
27868 &pSendBuffer, &usDataOffset, &usSendSize))||
27869 ( usSendSize < (usDataOffset + usLen )))
27870 {
27871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27872 "Unable to get send buffer in DHCP Start req %p ",
27873 pEventData);
27874 WDI_ASSERT(0);
27875 return WDI_STATUS_E_FAILURE;
27876 }
27877
Sandeep Puligillaee789512014-02-13 19:14:52 +053027878 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027879 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27880 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27881 WDI_MAC_ADDR_LEN);
27882
27883 pWDICtx->pReqStatusUserData = NULL;
27884 pWDICtx->pfncRspCB = NULL;
27885 /*-------------------------------------------------------------------------
27886 Send DHCP Stop indication to HAL
27887 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027888 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27889 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027890
27891}/*WDI_ProcessDHCPStopInd*/
27892
27893
Jeff Johnson295189b2012-06-20 16:38:30 -070027894#ifdef WLAN_FEATURE_GTK_OFFLOAD
27895/**
27896 @brief WDI_GTKOffloadReq will be called when the upper MAC
27897 wants to set GTK Rekey Counter while in power save. Upon
27898 the call of this API the WLAN DAL will pack and send a
27899 HAL GTK offload request message to the lower RIVA
27900 sub-system if DAL is in state STARTED.
27901
27902 In state BUSY this request will be queued. Request won't
27903 be allowed in any other state.
27904
27905 WDI_PostAssocReq must have been called.
27906
27907 @param pwdiGtkOffloadParams: the GTK offload as specified
27908 by the Device Interface
27909
27910 wdiGtkOffloadCb: callback for passing back the response
27911 of the GTK offload operation received from the device
27912
27913 pUserData: user data will be passed back with the
27914 callback
27915
27916 @see WDI_PostAssocReq
27917 @return Result of the function call
27918*/
27919WDI_Status
27920WDI_GTKOffloadReq
27921(
27922 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27923 WDI_GtkOffloadCb wdiGtkOffloadCb,
27924 void* pUserData
27925)
27926{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027927 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27929
27930 /*------------------------------------------------------------------------
27931 Sanity Check
27932 ------------------------------------------------------------------------*/
27933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27934 {
27935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27936 "WDI API call before module is initialized - Fail request");
27937
27938 return WDI_STATUS_E_NOT_ALLOWED;
27939 }
27940
27941 /*------------------------------------------------------------------------
27942 Fill in Event data and post to the Main FSM
27943 ------------------------------------------------------------------------*/
27944 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27945 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027946 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027947 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27948 wdiEventData.pUserData = pUserData;
27949
27950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27951}
27952
27953
27954/**
27955 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27956 MAC wants to get GTK Rekey Counter while in power save.
27957 Upon the call of this API the WLAN DAL will pack and
27958 send a HAL GTK offload request message to the lower RIVA
27959 sub-system if DAL is in state STARTED.
27960
27961 In state BUSY this request will be queued. Request won't
27962 be allowed in any other state.
27963
27964 WDI_PostAssocReq must have been called.
27965
27966 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27967 Information Message as specified by the
27968 Device Interface
27969
27970 wdiGtkOffloadGetInfoCb: callback for passing back the
27971 response of the GTK offload operation received from the
27972 device
27973
27974 pUserData: user data will be passed back with the
27975 callback
27976
27977 @see WDI_PostAssocReq
27978 @return Result of the function call
27979*/
27980WDI_Status
27981WDI_GTKOffloadGetInfoReq
27982(
27983 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27984 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27985 void* pUserData
27986)
27987{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027988 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27990
27991 /*------------------------------------------------------------------------
27992 Sanity Check
27993 ------------------------------------------------------------------------*/
27994 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27995 {
27996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27997 "WDI API call before module is initialized - Fail request");
27998
27999 return WDI_STATUS_E_NOT_ALLOWED;
28000 }
28001
28002 /*------------------------------------------------------------------------
28003 Fill in Event data and post to the Main FSM
28004 ------------------------------------------------------------------------*/
28005 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28006 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28007 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28008 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28009 wdiEventData.pUserData = pUserData;
28010
28011 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28012}
28013
28014
28015/**
28016 @brief Process set GTK Offload Request function
28017
28018 @param pWDICtx: pointer to the WLAN DAL context
28019 pEventData: pointer to the event information structure
28020
28021 @see
28022 @return Result of the function call
28023*/
28024WDI_Status
28025WDI_ProcessGTKOffloadReq
28026(
28027 WDI_ControlBlockType* pWDICtx,
28028 WDI_EventInfoType* pEventData
28029)
28030{
28031 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28032 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28033 wpt_uint8* pSendBuffer = NULL;
28034 wpt_uint16 usDataOffset = 0;
28035 wpt_uint16 usSendSize = 0;
28036 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028037 wpt_uint8 ucCurrentSessionId = 0;
28038 WDI_BSSSessionType* pBSSSes = NULL;
28039
Jeff Johnson295189b2012-06-20 16:38:30 -070028040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28041
28042 /*-------------------------------------------------------------------------
28043 Sanity check
28044 -------------------------------------------------------------------------*/
28045 if (( NULL == pEventData ) ||
28046 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28047 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28048 {
28049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028051 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028052 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028053 }
28054
28055 /*-----------------------------------------------------------------------
28056 Get message buffer
28057 -----------------------------------------------------------------------*/
28058 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28059 sizeof(gtkOffloadReqParams),
28060 &pSendBuffer, &usDataOffset, &usSendSize))||
28061 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28062 {
28063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028064 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028065 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28066 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028067 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028068 }
28069
28070 //
28071 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28072 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028073 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28074 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28075 &pBSSSes);
28076 if ( NULL == pBSSSes )
28077 {
28078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028079 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028080 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028081 }
28082
28083 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28084
Jeff Johnson295189b2012-06-20 16:38:30 -070028085 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28086 // Copy KCK
28087 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28088 // Copy KEK
28089 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28090 // Copy KeyReplayCounter
28091 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28092
28093 wpalMemoryCopy( pSendBuffer+usDataOffset,
28094 &gtkOffloadReqParams,
28095 sizeof(gtkOffloadReqParams));
28096
28097 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28098 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28099
28100 /*-------------------------------------------------------------------------
28101 Send Get STA Request to HAL
28102 -------------------------------------------------------------------------*/
28103 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28104 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028105
28106fail:
28107 // Release the message buffer so we don't leak
28108 wpalMemoryFree(pSendBuffer);
28109
28110failRequest:
28111 //WDA should have failure check to avoid the memory leak
28112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028113}
28114
28115
28116/**
28117 @brief Process GTK Offload Get Information Request function
28118
28119 @param pWDICtx: pointer to the WLAN DAL context
28120 pEventData: pointer to the event information structure
28121
28122 @see
28123 @return Result of the function call
28124*/
28125WDI_Status
28126WDI_ProcessGTKOffloadGetInfoReq
28127(
28128 WDI_ControlBlockType* pWDICtx,
28129 WDI_EventInfoType* pEventData
28130)
28131{
28132 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28133 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28134 wpt_uint8* pSendBuffer = NULL;
28135 wpt_uint16 usDataOffset = 0;
28136 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028137 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28138 wpt_uint8 ucCurrentSessionId = 0;
28139 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028140
28141 /*-------------------------------------------------------------------------
28142 Sanity check
28143 -------------------------------------------------------------------------*/
28144 if (( NULL == pEventData ) ||
28145 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28146 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28147 {
28148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028150 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028151 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028152 }
28153
28154 /*-----------------------------------------------------------------------
28155 Get message buffer
28156 -----------------------------------------------------------------------*/
28157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028158 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028159 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028160 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 {
28162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028163 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028164 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28165 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028166 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028167 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028168 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28169 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28170 &pBSSSes);
28171 if ( NULL == pBSSSes )
28172 {
28173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028174 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028175 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028176 }
28177 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028178
28179 //
28180 // Don't need to fill send buffer other than header
28181 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028182 wpalMemoryCopy( pSendBuffer+usDataOffset,
28183 &halGtkOffloadGetInfoReqParams,
28184 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028185
28186 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28187 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28188
28189 /*-------------------------------------------------------------------------
28190 Send Get STA Request to HAL
28191 -------------------------------------------------------------------------*/
28192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28193 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028194fail:
28195 // Release the message buffer so we don't leak
28196 wpalMemoryFree(pSendBuffer);
28197
28198failRequest:
28199 //WDA should have failure check to avoid the memory leak
28200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028201}
28202
28203/**
28204 @brief Process host offload Rsp function (called when a
28205 response is being received over the bus from HAL)
28206
28207 @param pWDICtx: pointer to the WLAN DAL context
28208 pEventData: pointer to the event information structure
28209
28210 @see
28211 @return Result of the function call
28212*/
28213WDI_Status
28214WDI_ProcessGtkOffloadRsp
28215(
28216 WDI_ControlBlockType* pWDICtx,
28217 WDI_EventInfoType* pEventData
28218)
28219{
Jeff Johnson295189b2012-06-20 16:38:30 -070028220 eHalStatus halStatus;
28221 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028222 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28223 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028224
28225 /*-------------------------------------------------------------------------
28226 Sanity check
28227 -------------------------------------------------------------------------*/
28228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28229 ( NULL == pEventData->pEventData))
28230 {
28231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028233 WDI_ASSERT(0);
28234 return WDI_STATUS_E_FAILURE;
28235 }
28236
Wilson Yang00256342013-10-10 23:13:38 -070028237 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28238
Jeff Johnson295189b2012-06-20 16:38:30 -070028239 /*-------------------------------------------------------------------------
28240 Extract response and send it to UMAC
28241 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028242 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28243 {
28244 wpalMemoryCopy( &halGtkOffloadRspParams,
28245 pEventData->pEventData,
28246 sizeof(halGtkOffloadRspParams));
28247
28248 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028249 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028250 wdiGtkOffloadRsparams.bssIdx =
28251 halGtkOffloadRspParams.bssIdx;
28252 }
28253 else
28254 {
28255 halStatus = *((eHalStatus*)pEventData->pEventData);
28256 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28257 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028258
28259 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028260 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028261
28262 return WDI_STATUS_SUCCESS;
28263}
28264
28265/**
28266 @brief Process GTK Offload Get Information Response function
28267
28268 @param pWDICtx: pointer to the WLAN DAL context
28269 pEventData: pointer to the event information structure
28270
28271 @see
28272 @return Result of the function call
28273*/
28274WDI_Status
28275WDI_ProcessGTKOffloadGetInfoRsp
28276(
28277 WDI_ControlBlockType* pWDICtx,
28278 WDI_EventInfoType* pEventData
28279)
28280{
Jeff Johnson295189b2012-06-20 16:38:30 -070028281 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028282 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028283 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28284 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028285 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028286
Jeff Johnson295189b2012-06-20 16:38:30 -070028287
28288 /*-------------------------------------------------------------------------
28289 Sanity check
28290 -------------------------------------------------------------------------*/
28291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28292 ( NULL == pEventData->pEventData ))
28293 {
28294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028296 WDI_ASSERT(0);
28297 return WDI_STATUS_E_FAILURE;
28298 }
28299
Wilson Yang00256342013-10-10 23:13:38 -070028300 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28301
28302 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028303 Extract response and send it to UMAC
28304 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028305 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28306 {
28307 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28308 pEventData->pEventData,
28309 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028310
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028311 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028312 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028313 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28314 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28315 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28316 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28317 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28318 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28319 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28320 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028321
28322 wpalMutexAcquire(&pWDICtx->wptMutex);
28323 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28324 &pBSSSes);
28325
28326 if ( NULL == pBSSSes )
28327 {
28328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28329 "Association sequence for this BSS does not exist or "
28330 "association no longer in progress - mysterious HAL response");
28331 wpalMutexRelease(&pWDICtx->wptMutex);
28332 return WDI_STATUS_E_NOT_ALLOWED;
28333 }
28334
28335 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28336 sizeof (wpt_macAddr));
28337 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028338 }
28339 else
28340 {
28341 halStatus = *((eHalStatus*)pEventData->pEventData);
28342 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28343 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028344 /*Notify UMAC*/
28345 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28346 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028347 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028348
28349 return WDI_STATUS_SUCCESS;
28350}
28351#endif // WLAN_FEATURE_GTK_OFFLOAD
28352
28353#ifdef WLAN_WAKEUP_EVENTS
28354WDI_Status
28355WDI_ProcessWakeReasonInd
28356(
28357 WDI_ControlBlockType* pWDICtx,
28358 WDI_EventInfoType* pEventData
28359)
28360{
28361 WDI_LowLevelIndType *pWdiInd;
28362 tpWakeReasonParams pWakeReasonParams;
28363 wpt_uint32 allocSize = 0;
28364
28365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028366 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028367
28368 /*-------------------------------------------------------------------------
28369 Sanity check
28370 -------------------------------------------------------------------------*/
28371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28372 ( NULL == pEventData->pEventData ))
28373 {
28374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028376 WDI_ASSERT( 0 );
28377 return WDI_STATUS_E_FAILURE;
28378 }
28379
28380 /*-------------------------------------------------------------------------
28381 Extract indication and send it to UMAC
28382 -------------------------------------------------------------------------*/
28383 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28384
28385 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28386
28387 //Allocate memory for WDI_WakeReasonIndType structure
28388 pWdiInd = wpalMemoryAllocate(allocSize) ;
28389
28390 if(NULL == pWdiInd)
28391 {
28392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028393 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028394 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028395 WDI_ASSERT(0);
28396 return WDI_STATUS_E_FAILURE;
28397 }
28398
28399 wpalMemoryZero(pWdiInd, allocSize);
28400
28401 /* Fill in the indication parameters*/
28402 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28403 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28404 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28405 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28406 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28407 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28408 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28409 &(pWakeReasonParams->aDataStart[0]),
28410 pWakeReasonParams->ulStoredDataLen);
28411
ltimariub77f24b2013-01-24 18:54:33 -080028412
28413 if ( pWDICtx->wdiLowLevelIndCB )
28414 {
28415 /*Notify UMAC*/
28416 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28417 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028418
28419 //Free memory allocated for WDI_WakeReasonIndType structure
28420 wpalMemoryFree(pWdiInd);
28421
28422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028423 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028424
28425 return WDI_STATUS_SUCCESS;
28426}
28427#endif // WLAN_WAKEUP_EVENTS
28428
28429void WDI_GetWcnssCompiledApiVersion
28430(
28431 WDI_WlanVersionType *pWcnssApiVersion
28432)
28433{
28434 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28435 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28436 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28437 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28438}
28439
28440/**
28441 @brief Process Set TM Level Rsp function (called when a
28442 response is being received over the bus from HAL)
28443
28444 @param pWDICtx: pointer to the WLAN DAL context
28445 pEventData: pointer to the event information structure
28446
28447 @see
28448 @return Result of the function call
28449*/
28450WDI_Status
28451WDI_ProcessSetTmLevelRsp
28452(
28453 WDI_ControlBlockType* pWDICtx,
28454 WDI_EventInfoType* pEventData
28455)
28456{
28457 WDI_Status wdiStatus;
28458 eHalStatus halStatus;
28459 WDI_SetTmLevelCb wdiSetTmLevelCb;
28460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28461
28462 /*-------------------------------------------------------------------------
28463 Sanity check
28464 -------------------------------------------------------------------------*/
28465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28466 ( NULL == pEventData->pEventData ))
28467 {
28468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028470 WDI_ASSERT(0);
28471 return WDI_STATUS_E_FAILURE;
28472 }
28473
28474 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28475
28476 /*-------------------------------------------------------------------------
28477 Extract response and send it to UMAC
28478 -------------------------------------------------------------------------*/
28479 halStatus = *((eHalStatus*)pEventData->pEventData);
28480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28481
28482 /*Notify UMAC*/
28483 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28484
28485 return WDI_STATUS_SUCCESS;
28486}/*WDI_ProcessSetTmLevelRsp*/
28487
28488/**
28489 @brief Process Set Thermal Mitigation level Changed request
28490
28491 @param pWDICtx: pointer to the WLAN DAL context
28492 pEventData: pointer to the event information structure
28493
28494 @see
28495 @return Result of the function call
28496*/
28497WDI_Status
28498WDI_ProcessSetTmLevelReq
28499(
28500 WDI_ControlBlockType* pWDICtx,
28501 WDI_EventInfoType* pEventData
28502)
28503{
28504 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28505 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28506 wpt_uint8* pSendBuffer = NULL;
28507 wpt_uint16 usDataOffset = 0;
28508 wpt_uint16 usSendSize = 0;
28509 tSetThermalMitgationType halTmMsg;
28510
28511 /*-------------------------------------------------------------------------
28512 Sanity check
28513 -------------------------------------------------------------------------*/
28514 if (( NULL == pEventData ) ||
28515 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28516 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28517 {
28518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028520 WDI_ASSERT(0);
28521 return WDI_STATUS_E_FAILURE;
28522 }
28523
28524 /*-----------------------------------------------------------------------
28525 Get message buffer
28526 -----------------------------------------------------------------------*/
28527 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28528 sizeof(halTmMsg),
28529 &pSendBuffer, &usDataOffset, &usSendSize))||
28530 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28531 {
28532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028533 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028534 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28535 WDI_ASSERT(0);
28536 return WDI_STATUS_E_FAILURE;
28537 }
28538
28539 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28540 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28541
28542 wpalMemoryCopy( pSendBuffer+usDataOffset,
28543 &halTmMsg,
28544 sizeof(halTmMsg));
28545
28546 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28547 pWDICtx->pfncRspCB = NULL;
28548 /*-------------------------------------------------------------------------
28549 Send Get STA Request to HAL
28550 -------------------------------------------------------------------------*/
28551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28552 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28553}
28554
28555/* Fill the value from the global features enabled array to the global capabilities
28556 * bitmap struct
28557 */
28558static void
28559FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28560{
28561 wpt_int8 i;
28562 for (i=0; i<len; i++)
28563 {
28564 setFeatCaps(fCaps, enabledFeat[i]);
28565 }
28566}
28567
28568/**
28569 @brief WDI_featureCapsExchangeReq
28570 Post feature capability bitmap exchange event.
28571 Host will send its own capability to FW in this req and
28572 expect FW to send its capability back as a bitmap in Response
28573
28574 @param
28575
28576 wdiFeatureCapsExchangeCb: callback called on getting the response.
28577 It is kept to mantain similarity between WDI reqs and if needed, can
28578 be used in future. Currently, It is set to NULL
28579
28580 pUserData: user data will be passed back with the
28581 callback
28582
28583 @see
28584 @return Result of the function call
28585*/
28586WDI_Status
28587WDI_featureCapsExchangeReq
28588(
28589 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28590 void* pUserData
28591)
28592{
28593 WDI_EventInfoType wdiEventData;
28594 wpt_int32 fCapsStructSize;
28595
28596 /*------------------------------------------------------------------------
28597 Sanity Check
28598 ------------------------------------------------------------------------*/
28599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28600 {
28601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28602 "WDI API call before module is initialized - Fail request");
28603
28604 return WDI_STATUS_E_NOT_ALLOWED;
28605 }
28606
28607 /* Allocate memory separately for global variable carrying FW caps */
28608 fCapsStructSize = sizeof(tWlanFeatCaps);
28609 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28610 if ( NULL == gpHostWlanFeatCaps )
28611 {
28612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028613 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028614 WDI_ASSERT(0);
28615 return WDI_STATUS_MEM_FAILURE;
28616 }
28617
28618 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28619
28620 /*------------------------------------------------------------------------
28621 Fill in Event data and post to the Main FSM
28622 ------------------------------------------------------------------------*/
28623 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28624 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028626 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028627 gpHostWlanFeatCaps->featCaps[0],
28628 gpHostWlanFeatCaps->featCaps[1],
28629 gpHostWlanFeatCaps->featCaps[2],
28630 gpHostWlanFeatCaps->featCaps[3]
28631 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28633 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028634 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28635 wdiEventData.pEventData = gpHostWlanFeatCaps;
28636 wdiEventData.uEventDataSize = fCapsStructSize;
28637 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28638 wdiEventData.pUserData = pUserData;
28639
28640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28641}
28642
28643/**
Yathish9f22e662012-12-10 14:21:35 -080028644 @brief Disable Active mode offload in Host
28645
28646 @param void
28647 @see
28648 @return void
28649*/
28650void
28651WDI_disableCapablityFeature(wpt_uint8 feature_index)
28652{
28653 supportEnabledFeatures[feature_index] = 0;
28654 return;
28655}
28656
28657/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028658 @brief Process Host-FW Capability Exchange Request function
28659
28660 @param pWDICtx: pointer to the WLAN DAL context
28661 pEventData: pointer to the event information structure
28662
28663 @see
28664 @return Result of the function call
28665*/
28666WDI_Status
28667WDI_ProcessFeatureCapsExchangeReq
28668(
28669 WDI_ControlBlockType* pWDICtx,
28670 WDI_EventInfoType* pEventData
28671)
28672{
28673 wpt_uint8* pSendBuffer = NULL;
28674 wpt_uint16 usDataOffset = 0;
28675 wpt_uint16 usSendSize = 0;
28676 wpt_uint16 usLen = 0;
28677
28678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28679
28680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028681 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028682
28683 /*-------------------------------------------------------------------------
28684 Sanity check
28685 -------------------------------------------------------------------------*/
28686 /* Call back function is NULL since not required for cap exchange req */
28687 if (( NULL == pEventData ) ||
28688 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28689 {
28690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028692 WDI_ASSERT(0);
28693 return WDI_STATUS_E_FAILURE;
28694 }
28695
28696 /*-----------------------------------------------------------------------
28697 Get message buffer
28698 -----------------------------------------------------------------------*/
28699 usLen = sizeof(tWlanFeatCaps);
28700
28701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28702 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28703 usLen,
28704 &pSendBuffer, &usDataOffset, &usSendSize))||
28705 ( usSendSize < (usDataOffset + usLen )))
28706 {
28707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028708 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028709 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28710 WDI_ASSERT(0);
28711 return WDI_STATUS_E_FAILURE;
28712 }
28713
28714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028715 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028716 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28717 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28718 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28719 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28720 );
28721
28722 /* Copy host caps after the offset in the send buffer */
28723 wpalMemoryCopy( pSendBuffer+usDataOffset,
28724 (tWlanFeatCaps *)pEventData->pEventData,
28725 usLen);
28726
28727 /*-------------------------------------------------------------------------
28728 Send Start Request to HAL
28729 -------------------------------------------------------------------------*/
28730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28731 (WDI_StartRspCb)pEventData->pCBfnc,
28732 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28733
28734}/*WDI_ProcessFeatureCapsExchangeReq*/
28735
28736/**
28737 @brief Process Host-FW Capability Exchange Response function
28738
28739 @param pWDICtx: pointer to the WLAN DAL context
28740 pEventData: pointer to the event information structure
28741
28742 @see
28743 @return Result of the function call
28744*/
28745WDI_Status
28746WDI_ProcessFeatureCapsExchangeRsp
28747(
28748 WDI_ControlBlockType* pWDICtx,
28749 WDI_EventInfoType* pEventData
28750)
28751{
28752 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28753 wpt_int32 fCapsStructSize;
28754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28755
28756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028757 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028758
28759 /*-------------------------------------------------------------------------
28760 Sanity check
28761 -------------------------------------------------------------------------*/
28762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28763 ( NULL == pEventData->pEventData ))
28764 {
28765 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028768 WDI_ASSERT(0);
28769 return WDI_STATUS_E_FAILURE;
28770 }
28771
28772 /* Allocate memory separately for global variable carrying FW caps */
28773 fCapsStructSize = sizeof(tWlanFeatCaps);
28774 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28775 if ( NULL == gpFwWlanFeatCaps )
28776 {
28777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028778 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028779 WDI_ASSERT(0);
28780 return WDI_STATUS_MEM_FAILURE;
28781 }
28782
28783 /*-------------------------------------------------------------------------
28784 Unpack HAL Response Message - the header was already extracted by the
28785 main Response Handling procedure
28786 -------------------------------------------------------------------------*/
28787 /*-------------------------------------------------------------------------
28788 Extract response and send it to UMAC
28789 -------------------------------------------------------------------------*/
28790
28791 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28792 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028794 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028795 gpFwWlanFeatCaps->featCaps[0],
28796 gpFwWlanFeatCaps->featCaps[1],
28797 gpFwWlanFeatCaps->featCaps[2],
28798 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028799 );
28800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28801 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028802 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28803
28804 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28805 if (wdiFeatureCapsExchangeCb != NULL)
28806 wdiFeatureCapsExchangeCb(NULL, NULL);
28807
28808 return WDI_STATUS_SUCCESS;
28809}
28810
Mohit Khanna4a70d262012-09-11 16:30:12 -070028811#ifdef WLAN_FEATURE_11AC
28812WDI_Status
28813WDI_ProcessUpdateVHTOpModeRsp
28814(
28815 WDI_ControlBlockType* pWDICtx,
28816 WDI_EventInfoType* pEventData
28817)
28818{
28819 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28820 WDI_Status wdiStatus;
28821 eHalStatus halStatus;
28822
28823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28824
28825 /*-------------------------------------------------------------------------
28826 Sanity check
28827 -------------------------------------------------------------------------*/
28828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28829 ( NULL == pEventData->pEventData))
28830 {
28831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028832 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028833 WDI_ASSERT(0);
28834 return WDI_STATUS_E_FAILURE;
28835 }
28836 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28837
28838 /*-------------------------------------------------------------------------
28839 Extract response and send it to UMAC
28840 -------------------------------------------------------------------------*/
28841 halStatus = *((eHalStatus*)pEventData->pEventData);
28842 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28843
28844 /*Notify UMAC*/
28845 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28846
28847 return WDI_STATUS_SUCCESS;
28848}
28849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028850/**
28851 @brief WDI_getHostWlanFeatCaps
28852 WDI API that returns whether the feature passed to it as enum value in
28853 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28854 variable storing host capability bitmap to find this. This can be used by
28855 other moduels to decide certain things like call different APIs based on
28856 whether a particular feature is supported.
28857
28858 @param
28859
28860 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28861
28862 @see
28863 @return
28864 0 - if the feature is NOT supported in host
28865 any non-zero value - if the feature is SUPPORTED in host.
28866*/
28867wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28868{
28869 wpt_uint8 featSupported = 0;
28870 if (gpHostWlanFeatCaps != NULL)
28871 {
28872 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28873 }
28874 else
28875 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028877 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028878 }
28879 return featSupported;
28880}
28881
28882/**
28883 @brief WDI_getFwWlanFeatCaps
28884 WDI API that returns whether the feature passed to it as enum value in
28885 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28886 variable storing host capability bitmap to find this. This can be used by
28887 other moduels to decide certain things like call different APIs based on
28888 whether a particular feature is supported.
28889
28890 @param
28891
28892 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28893 in wlan_hal_msg.h.
28894
28895 @see
28896 @return
28897 0 - if the feature is NOT supported in FW
28898 any non-zero value - if the feature is SUPPORTED in FW.
28899*/
28900wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28901{
28902 wpt_uint8 featSupported = 0;
28903 if (gpFwWlanFeatCaps != NULL)
28904 {
28905 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28906 }
28907 else
28908 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028910 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028911 }
28912 return featSupported;
28913}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028914
28915#ifdef WLAN_FEATURE_11AC
28916WDI_Status
28917WDI_ProcessUpdateVHTOpModeReq
28918(
28919 WDI_ControlBlockType* pWDICtx,
28920 WDI_EventInfoType* pEventData
28921)
28922{
28923 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28924 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28925 wpt_uint8* pSendBuffer = NULL;
28926 wpt_uint16 usDataOffset = 0;
28927 wpt_uint16 usSendSize = 0;
28928
28929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28930
28931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028932 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028933
28934 /*-------------------------------------------------------------------------
28935 Sanity check
28936 -------------------------------------------------------------------------*/
28937 if (( NULL == pEventData ) ||
28938 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28939 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28940 {
28941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028942 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028943 WDI_ASSERT(0);
28944 return WDI_STATUS_E_FAILURE;
28945 }
28946
28947 /*-----------------------------------------------------------------------
28948 Get message buffer
28949 -----------------------------------------------------------------------*/
28950 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28951 sizeof(WDI_UpdateVHTOpMode),
28952 &pSendBuffer, &usDataOffset, &usSendSize))||
28953 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28954 {
28955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28956 "Unable to get send buffer in update vht opMode req");
28957 WDI_ASSERT(0);
28958 return WDI_STATUS_E_FAILURE;
28959 }
28960
28961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028962 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028963
28964 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28965 sizeof(WDI_UpdateVHTOpMode));
28966
28967 /*-------------------------------------------------------------------------
28968 Send Start Request to HAL
28969 -------------------------------------------------------------------------*/
28970 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28971 wdiVHTOpModeCb,
28972 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28973
28974}
28975
28976WDI_Status
28977WDI_UpdateVHTOpModeReq
28978(
28979 WDI_UpdateVHTOpMode *pData,
28980 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28981 void* pUserData
28982)
28983{
28984 WDI_EventInfoType wdiEventData;
28985
28986 /*------------------------------------------------------------------------
28987 Sanity Check
28988 ------------------------------------------------------------------------*/
28989 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28990 {
28991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28992 "WDI API call before module is initialized - Fail request");
28993
28994 return WDI_STATUS_E_NOT_ALLOWED;
28995 }
28996
28997 /*------------------------------------------------------------------------
28998 Fill in Event data and post to the Main FSM
28999 ------------------------------------------------------------------------*/
29000 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29001 wdiEventData.pEventData = pData;
29002 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29003 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29004 wdiEventData.pUserData = pUserData;
29005
29006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029007 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029008
29009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29010
29011}
29012#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029013
29014/**
29015 @brief WDI_TransportChannelDebug -
29016 Display DXE Channel debugging information
29017 User may request to display DXE channel snapshot
29018 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029019
Jeff Johnsonb88db982012-12-10 13:34:59 -080029020 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029021 @param debugFlags : Enable stall detect features
29022 defined by WPAL_DeviceDebugFlags
29023 These features may effect
29024 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029025 @see
29026 @return none
29027*/
29028void WDI_TransportChannelDebug
29029(
29030 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029031 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029032)
29033{
Mihir Shete40a55652014-03-02 14:14:47 +053029034 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029035 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029036}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029037/**
29038 @brief WDI_SsrTimerCB
29039 Callback function for SSR timer, if this is called then the graceful
29040 shutdown for Riva did not happen.
29041
29042 @param pUserData : user data to timer
29043
29044 @see
29045 @return none
29046*/
29047void
29048WDI_SsrTimerCB
29049(
29050 void *pUserData
29051)
29052{
29053 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29055
29056 if (NULL == pWDICtx )
29057 {
29058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029059 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029060 WDI_ASSERT(0);
29061 return;
29062 }
29063 wpalRivaSubystemRestart();
29064
29065 return;
29066
29067}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029068
29069/**
29070 @brief WDI_SetEnableSSR -
29071 This API is called to enable/disable SSR on WDI timeout.
29072
29073 @param enableSSR : enable/disable SSR
29074
29075 @see
29076 @return none
29077*/
29078void WDI_SetEnableSSR(wpt_boolean enableSSR)
29079{
29080 gWDICb.bEnableSSR = enableSSR;
29081}
Leo Chang9056f462013-08-01 19:21:11 -070029082
29083
29084#ifdef FEATURE_WLAN_LPHB
29085/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029086 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029087 This function will be invoked when FW detects low power
29088 heart beat failure
29089
29090 @param pWDICtx : wdi context
29091 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029092 @see
29093 @return Result of the function call
29094*/
29095WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029096WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029097(
29098 WDI_ControlBlockType* pWDICtx,
29099 WDI_EventInfoType* pEventData
29100)
29101{
29102 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029103 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29105
29106 /*-------------------------------------------------------------------------
29107 Sanity check
29108 -------------------------------------------------------------------------*/
29109 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29110 (NULL == pEventData->pEventData))
29111 {
29112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29113 "%s: Invalid parameters", __func__);
29114 WDI_ASSERT(0);
29115 return WDI_STATUS_E_FAILURE;
29116 }
29117
29118 /*-------------------------------------------------------------------------
29119 Extract indication and send it to UMAC
29120 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029121 wpalMemoryCopy(&lphbIndicationParam,
29122 pEventData->pEventData,
29123 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029124
Leo Changd9df8aa2013-09-26 13:32:26 -070029125 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029126 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029127 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029128 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029129 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029130 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029131 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029132 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029133 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029134 /*Notify UMAC*/
29135 if (pWDICtx->wdiLowLevelIndCB)
29136 {
29137 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29138 }
29139
29140 return WDI_STATUS_SUCCESS;
29141}
29142
29143/**
29144 @brief WDI_ProcessLphbCfgRsp -
29145 LPHB configuration response from FW
29146
29147 @param pWDICtx : wdi context
29148 pEventData : indication data
29149
29150 @see
29151 @return Result of the function call
29152*/
29153WDI_Status WDI_ProcessLphbCfgRsp
29154(
29155 WDI_ControlBlockType* pWDICtx,
29156 WDI_EventInfoType* pEventData
29157)
29158{
29159 WDI_Status wdiStatus;
29160 eHalStatus halStatus;
29161 WDI_LphbCfgCb wdiLphbCfgCb;
29162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29163
29164 /*-------------------------------------------------------------------------
29165 Sanity check
29166 -------------------------------------------------------------------------*/
29167 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29168 (NULL == pEventData->pEventData))
29169 {
29170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29171 "%s: Invalid parameters", __func__);
29172 WDI_ASSERT(0);
29173 return WDI_STATUS_E_FAILURE;
29174 }
29175
29176 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29177
29178 /*-------------------------------------------------------------------------
29179 Extract response and send it to UMAC
29180 -------------------------------------------------------------------------*/
29181 halStatus = *((eHalStatus*)pEventData->pEventData);
29182 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29183
29184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29185 "LPHB Cfg Rsp Return status %d", wdiStatus);
29186 /*Notify UMAC*/
29187 if (NULL != wdiLphbCfgCb)
29188 {
29189 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29190 }
29191
29192 return WDI_STATUS_SUCCESS;
29193}
29194
29195/**
29196 @brief WDI_ProcessLPHBConfReq -
29197 LPHB configuration request to FW
29198
29199 @param pWDICtx : wdi context
29200 pEventData : indication data
29201
29202 @see
29203 @return none
29204*/
29205WDI_Status WDI_ProcessLPHBConfReq
29206(
29207 WDI_ControlBlockType* pWDICtx,
29208 WDI_EventInfoType* pEventData
29209)
29210{
29211 WDI_LPHBReq *pLphbReqParams;
29212 WDI_Status wdiStatus;
29213 wpt_uint8* pSendBuffer = NULL;
29214 wpt_uint16 usDataOffset = 0;
29215 wpt_uint16 usSendSize = 0;
29216 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29218
29219 /*-------------------------------------------------------------------------
29220 Sanity check
29221 -------------------------------------------------------------------------*/
29222 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29223 {
29224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29225 "%s: Invalid parameters in Suspend ind",__func__);
29226 WDI_ASSERT(0);
29227 return WDI_STATUS_E_FAILURE;
29228 }
29229
29230 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29231
29232 /*-----------------------------------------------------------------------
29233 Get message buffer
29234 -----------------------------------------------------------------------*/
29235 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29236 WDI_LPHB_CFG_REQ,
29237 sizeof(tHalLowPowerHeartBeatReqMsg),
29238 &pSendBuffer, &usDataOffset, &usSendSize))||
29239 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29240 {
29241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29242 "Unable to get send buffer in LPHB Ind ");
29243 WDI_ASSERT(0);
29244 return WDI_STATUS_E_FAILURE;
29245 }
29246
29247 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29248 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29249
29250 halLphbReqRarams->lowPowerHeartBeatCmdType =
29251 (tANI_U16)(++pLphbReqParams->cmd);
29252 switch ((tANI_U16)pLphbReqParams->cmd)
29253 {
29254 case WDI_LPHB_SET_EN_PARAMS_INDID:
29255 halLphbReqRarams->sessionIdx =
29256 pLphbReqParams->params.lphbEnableReq.session;
29257 halLphbReqRarams->options.control.heartBeatEnable =
29258 pLphbReqParams->params.lphbEnableReq.enable;
29259 halLphbReqRarams->options.control.heartBeatType =
29260 pLphbReqParams->params.lphbEnableReq.item;
29261 break;
29262
29263 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29264 halLphbReqRarams->sessionIdx =
29265 pLphbReqParams->params.lphbTcpParamReq.session;
29266 halLphbReqRarams->options.tcpParams.timeOutSec =
29267 pLphbReqParams->params.lphbTcpParamReq.timeout;
29268 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29269 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29270 sizeof(v_U32_t));
29271 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29272 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29273 sizeof(v_U32_t));
29274
29275 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29276 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29277 WDI_MAC_ADDR_LEN);
29278
29279 halLphbReqRarams->options.tcpParams.hostPort =
29280 pLphbReqParams->params.lphbTcpParamReq.src_port;
29281 halLphbReqRarams->options.tcpParams.destPort =
29282 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029283 halLphbReqRarams->options.tcpParams.timePeriodSec =
29284 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29285 halLphbReqRarams->options.tcpParams.tcpSn =
29286 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029287 break;
29288
29289 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29290 halLphbReqRarams->sessionIdx =
29291 pLphbReqParams->params.lphbTcpFilterReq.session;
29292 halLphbReqRarams->options.tcpUdpFilter.offset =
29293 pLphbReqParams->params.lphbTcpFilterReq.offset;
29294 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29295 pLphbReqParams->params.lphbTcpFilterReq.length;
29296 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29297 pLphbReqParams->params.lphbTcpFilterReq.filter,
29298 WDI_LPHB_FILTER_LEN);
29299 break;
29300
29301 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29302 halLphbReqRarams->sessionIdx =
29303 pLphbReqParams->params.lphbUdpParamReq.session;
29304 halLphbReqRarams->options.udpParams.timeOutSec =
29305 pLphbReqParams->params.lphbUdpParamReq.timeout;
29306 halLphbReqRarams->options.udpParams.timePeriodSec =
29307 pLphbReqParams->params.lphbUdpParamReq.interval;
29308 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29309 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29310 sizeof(v_U32_t));
29311 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29312 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29313 sizeof(v_U32_t));
29314
29315 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29316 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29317 WDI_MAC_ADDR_LEN);
29318
29319 halLphbReqRarams->options.udpParams.hostPort =
29320 pLphbReqParams->params.lphbUdpParamReq.src_port;
29321 halLphbReqRarams->options.udpParams.destPort =
29322 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29323 break;
29324
29325 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29326 halLphbReqRarams->sessionIdx =
29327 pLphbReqParams->params.lphbUdpFilterReq.session;
29328 halLphbReqRarams->options.tcpUdpFilter.offset =
29329 pLphbReqParams->params.lphbUdpFilterReq.offset;
29330 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29331 pLphbReqParams->params.lphbUdpFilterReq.length;
29332 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29333 pLphbReqParams->params.lphbUdpFilterReq.filter,
29334 WDI_LPHB_FILTER_LEN);
29335 break;
29336
29337 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29338 /* NA */
29339 break;
29340
29341 default:
29342 break;
29343 }
29344
29345 /*-------------------------------------------------------------------------
29346 Send Suspend Request to HAL
29347 -------------------------------------------------------------------------*/
29348 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29349 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29350
29351 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29352 usSendSize, pWDICtx->pfncRspCB,
29353 pWDICtx->pReqStatusUserData,
29354 WDI_LPHB_CFG_RESP);
29355
29356 return wdiStatus;
29357}
29358
29359/**
29360 @brief WDI_LPHBConfReq -
29361 LPHB configuration request API
29362
29363 @param lphbconfParam : configuration parameter
29364 usrData : client context
29365 lphbCfgCb : callback function pointer
29366
29367 @see
29368 @return Success or fail status code
29369*/
29370WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29371 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29372{
29373 WDI_EventInfoType wdiEventData;
29374
29375 /*------------------------------------------------------------------------
29376 Sanity Check
29377 ------------------------------------------------------------------------*/
29378 if (eWLAN_PAL_FALSE == gWDIInitialized)
29379 {
29380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29381 "WDI API call before module is initialized - Fail request");
29382
29383 return WDI_STATUS_E_NOT_ALLOWED;
29384 }
29385
29386 /*------------------------------------------------------------------------
29387 Fill in Event data and post to the Main FSM
29388 ------------------------------------------------------------------------*/
29389 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29390 wdiEventData.pEventData = lphbconfParam;
29391 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29392 wdiEventData.pCBfnc = lphbCfgCb;
29393 wdiEventData.pUserData = usrData;
29394
29395 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29396}
29397#endif /* FEATURE_WLAN_LPHB */
29398
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029399/**
29400 @brief WDI_ProcessIbssPeerInactivityInd
29401 Process peer inactivity indication coming from HAL
29402
29403 @param pWDICtx: pointer to the WLAN DAL context
29404 pEventData: pointer to the event information structure
29405 @see
29406 @return Result of the function call
29407*/
29408WDI_Status
29409WDI_ProcessIbssPeerInactivityInd
29410(
29411 WDI_ControlBlockType* pWDICtx,
29412 WDI_EventInfoType* pEventData
29413)
29414{
29415 WDI_LowLevelIndType wdiInd;
29416 tIbssPeerInactivityIndMsg halIbssIndMsg;
29417
29418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29419
29420 /*-------------------------------------------------------------------------
29421 Sanity check
29422 -------------------------------------------------------------------------*/
29423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29424 ( NULL == pEventData->pEventData ))
29425 {
29426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29427 "%s: Invalid parameters", __func__);
29428 WDI_ASSERT( 0 );
29429 return WDI_STATUS_E_FAILURE;
29430 }
29431
29432 /*-------------------------------------------------------------------------
29433 Extract indication and send it to UMAC
29434 -------------------------------------------------------------------------*/
29435 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29436 pEventData->pEventData,
29437 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29438
29439 /*Fill in the indication parameters*/
29440 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29441
29442 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29443 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29444
29445 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29446 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29447
29448 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29449 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29450 sizeof(tSirMacAddr));
29451
29452 /*Notify UMAC*/
29453 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29454
29455 return WDI_STATUS_SUCCESS;
29456
29457} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029458
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029459/**
29460*@brief WDI_RateUpdateInd will be called when the upper MAC
29461 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029462
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029463
29464 @param wdiRateUpdateIndParams:
29465
29466
29467 @see
29468 @return Result of the function call
29469*/
29470WDI_Status
29471WDI_RateUpdateInd
29472(
29473 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29474)
29475{
29476 WDI_EventInfoType wdiEventData;
29477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29478
29479 /*------------------------------------------------------------------------
29480 Sanity Check
29481 ------------------------------------------------------------------------*/
29482 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29483 {
29484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29485 "WDI API call before module is initialized - Fail request");
29486
29487 return WDI_STATUS_E_NOT_ALLOWED;
29488 }
29489
29490 /*------------------------------------------------------------------------
29491 Fill in Event data and post to the Main FSM
29492 ------------------------------------------------------------------------*/
29493 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29494 wdiEventData.pEventData = wdiRateUpdateIndParams;
29495 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29496 wdiEventData.pCBfnc = NULL;
29497 wdiEventData.pUserData = NULL;
29498
29499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29500
29501}/* WDI_RateUpdateInd */
29502
29503/**
29504 @brief Process Rate Update Indication and post it to HAL
29505
29506 @param pWDICtx: pointer to the WLAN DAL context
29507 pEventData: pointer to the event information structure
29508
29509 @see
29510 @return Result of the function call
29511*/
29512WDI_Status
29513WDI_ProcessRateUpdateInd
29514(
29515 WDI_ControlBlockType* pWDICtx,
29516 WDI_EventInfoType* pEventData
29517)
29518{
29519 wpt_uint8* pSendBuffer = NULL;
29520 wpt_uint16 usDataOffset = 0;
29521 wpt_uint16 usSendSize = 0;
29522 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29523 tHalRateUpdateInd *pRateUpdateInd;
29524 WDI_Status wdiStatus;
29525
29526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29527
29528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29529 "%s", __func__);
29530
29531 /*-------------------------------------------------------------------------
29532 Sanity check
29533 -------------------------------------------------------------------------*/
29534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29535 {
29536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29537 "%s: Invalid parameters", __func__);
29538 WDI_ASSERT(0);
29539 return WDI_STATUS_E_FAILURE;
29540 }
29541 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29542 /*-----------------------------------------------------------------------
29543 Get message buffer
29544 -----------------------------------------------------------------------*/
29545
29546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29547 WDI_RATE_UPDATE_IND,
29548 sizeof(tHalRateUpdateParams),
29549 &pSendBuffer, &usDataOffset, &usSendSize))||
29550 ( usSendSize < (usDataOffset +
29551 sizeof(tHalRateUpdateParams) )))
29552 {
29553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29554 "Unable to get send buffer in Rate Update Indication %p ",
29555 pEventData);
29556 WDI_ASSERT(0);
29557 return WDI_STATUS_E_FAILURE;
29558 }
29559
29560 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29561
29562 /* Copy the bssid */
29563 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29564 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29565
29566 /* Copy the tx flags */
29567 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29568 pwdiRateUpdateInd->ucastDataRateTxFlag;
29569 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29570 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29571 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29572 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29573 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29574 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29575
29576 /* Copy the tx rates */
29577 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29578 pwdiRateUpdateInd->ucastDataRate;
29579 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29580 pwdiRateUpdateInd->reliableMcastDataRate;
29581 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29582 pwdiRateUpdateInd->mcastDataRate24GHz;
29583 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29584 pwdiRateUpdateInd->mcastDataRate5GHz;
29585
29586 /*-------------------------------------------------------------------------
29587 Send Rate Update Indication to HAL
29588 -------------------------------------------------------------------------*/
29589 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29590 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29591
29592 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29593
29594 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29595 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29596
29597} /* WDI_ProcessRateUpdateInd */
29598
29599#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029600/**
29601 @brief Process stop batch indication from WDA
29602
29603 @param pWDICtx: pointer to the WLAN DAL context
29604 pEventData: pointer to the event information structure
29605
29606 @see
29607 @return Result of the function call
29608*/
29609WDI_Status
29610WDI_ProcessStopBatchScanInd
29611(
29612 WDI_ControlBlockType* pWDICtx,
29613 WDI_EventInfoType* pEventData
29614)
29615{
29616 wpt_uint8* pSendBuffer = NULL;
29617 wpt_uint16 usDataOffset = 0;
29618 wpt_uint16 usSendSize = 0;
29619 WDI_Status wdiStatus;
29620 tHalBatchScanStopIndParam *pHalInd = NULL;
29621 WDI_StopBatchScanIndType *pWdiInd = NULL;
29622
29623
29624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29625
29626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29627 "%s", __func__);
29628
29629 /*-------------------------------------------------------------------------
29630 Sanity check
29631 -------------------------------------------------------------------------*/
29632
29633 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29634 {
29635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29636 "%s: Invalid parameters", __func__);
29637 WDI_ASSERT(0);
29638 return WDI_STATUS_E_FAILURE;
29639 }
29640 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29641 /*-----------------------------------------------------------------------
29642 Get message buffer
29643 -----------------------------------------------------------------------*/
29644
29645 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29646 WDI_STOP_BATCH_SCAN_IND,
29647 sizeof(tHalBatchScanStopIndParam),
29648 &pSendBuffer, &usDataOffset, &usSendSize))||
29649 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29650 {
29651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29652 "Unable to get send buffer in stop batch scan ind %p ",
29653 pEventData);
29654 WDI_ASSERT(0);
29655 return WDI_STATUS_E_FAILURE;
29656 }
29657
29658 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29659 pHalInd->param = pWdiInd->param;
29660
29661 pWDICtx->pReqStatusUserData = NULL;
29662 pWDICtx->pfncRspCB = NULL;
29663 /*-------------------------------------------------------------------------
29664 Send Stop batch scan indication to HAL
29665 -------------------------------------------------------------------------*/
29666 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29667 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29668}
29669
29670/**
29671 @brief This API is called to trigger batch scan results from FW
29672
29673 @param pWDICtx: pointer to the WLAN DAL context
29674 pEventData: pointer to the event information structure
29675
29676 @see
29677 @return Result of the function call
29678*/
29679WDI_Status
29680WDI_ProcessTriggerBatchScanResultInd
29681(
29682 WDI_ControlBlockType* pWDICtx,
29683 WDI_EventInfoType* pEventData
29684)
29685{
29686 WDI_Status wdiStatus;
29687 wpt_uint8* pSendBuffer = NULL;
29688 wpt_uint16 usDataOffset = 0;
29689 wpt_uint16 usSendSize = 0;
29690 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29691 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29692
29693
29694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29695
29696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29697 "%s", __func__);
29698
29699 /*-------------------------------------------------------------------------
29700 Sanity check
29701 -------------------------------------------------------------------------*/
29702
29703 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29704 {
29705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29706 "%s: Invalid parameters", __func__);
29707 WDI_ASSERT(0);
29708 return WDI_STATUS_E_FAILURE;
29709 }
29710 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29711 /*-----------------------------------------------------------------------
29712 Get message buffer
29713 -----------------------------------------------------------------------*/
29714
29715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29716 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29717 sizeof(tHalBatchScanTriggerResultParam),
29718 &pSendBuffer, &usDataOffset, &usSendSize))||
29719 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29720 {
29721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29722 "Unable to get send buffer in stop batch scan ind %p ",
29723 pEventData);
29724 WDI_ASSERT(0);
29725 return WDI_STATUS_E_FAILURE;
29726 }
29727
29728 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29729 pHalInd->param = pWdiInd->param;
29730
29731 pWDICtx->pReqStatusUserData = NULL;
29732 pWDICtx->pfncRspCB = NULL;
29733 /*-------------------------------------------------------------------------
29734 Send trigger batch scan result indication to HAL
29735 -------------------------------------------------------------------------*/
29736 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29737 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29738}
29739
29740
29741/**
29742 @brief Process set batch scan response from FW
29743
29744 @param pWDICtx: pointer to the WLAN DAL context
29745 pEventData: pointer to the event information structure
29746
29747 @see
29748 @return Result of the function call
29749*/
29750WDI_Status
29751WDI_ProcessSetBatchScanRsp
29752(
29753 WDI_ControlBlockType* pWDICtx,
29754 WDI_EventInfoType* pEventData
29755)
29756{
29757 WDI_SetBatchScanCb wdiSetBatchScanCb;
29758 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29759
29760 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29762
29763 /*sanity check*/
29764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29765 ( NULL == pEventData->pEventData))
29766 {
29767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29768 "%s: Invalid parameters", __func__);
29769 WDI_ASSERT(0);
29770 return WDI_STATUS_E_FAILURE;
29771 }
29772
29773 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29774 if ( NULL == wdiSetBatchScanCb)
29775 {
29776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29777 "%s: call back function is NULL", __func__);
29778 WDI_ASSERT(0);
29779 return WDI_STATUS_E_FAILURE;
29780 }
29781
29782 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29783
29784 if (NULL == pSetBatchScanRsp)
29785 {
29786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029787 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029788 pWDICtx, pEventData, pEventData->pEventData);
29789 WDI_ASSERT(0);
29790 return WDI_STATUS_E_FAILURE;
29791 }
29792
Sunil Duttbd736ed2014-05-26 21:19:41 +053029793 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029794 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29795
29796 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29797
Sunil Duttbd736ed2014-05-26 21:19:41 +053029798 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029799 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29800
29801 wpalMemoryFree(pSetBatchScanRsp);
29802
29803 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029804}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053029805
29806/**
29807 @brief Process batch scan result indication from FW
29808
29809 @param pWDICtx: pointer to the WLAN DAL context
29810 pEventData: pointer to the event information structure
29811
29812 @see
29813 @return Result of the function call
29814*/
29815WDI_Status
29816WDI_ProcessBatchScanResultInd
29817(
29818 WDI_ControlBlockType* pWDICtx,
29819 WDI_EventInfoType* pEventData
29820)
29821{
29822 void *pBatchScanResultInd;
29823 WDI_LowLevelIndType wdiInd;
29824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29825
Sunil Duttbd736ed2014-05-26 21:19:41 +053029826 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053029827 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29828 ( NULL == pEventData->pEventData))
29829 {
29830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29831 "%s: Invalid parameters", __func__);
29832 WDI_ASSERT(0);
29833 return WDI_STATUS_E_FAILURE;
29834 }
29835
Sunil Duttbd736ed2014-05-26 21:19:41 +053029836 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029837 pBatchScanResultInd = (void *)pEventData->pEventData;
29838
Sunil Duttbd736ed2014-05-26 21:19:41 +053029839 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053029840 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29841
29842 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29843
Sunil Duttbd736ed2014-05-26 21:19:41 +053029844 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029845 if (pWDICtx->wdiLowLevelIndCB)
29846 {
29847 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29848 }
29849 else
29850 {
29851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29852 "%s: WDILowLevelIndCb is null", __func__);
29853 WDI_ASSERT(0);
29854 return WDI_STATUS_E_FAILURE;
29855 }
29856
29857 return WDI_STATUS_SUCCESS;
29858} /*End of WDI_ProcessBatchScanResultInd*/
29859
Sunil Duttbd736ed2014-05-26 21:19:41 +053029860#ifdef WLAN_FEATURE_LINK_LAYER_STATS
29861/**
29862 @brief Process Link Layer Statistics Result indication from FW
29863
29864 @param pWDICtx: pointer to the WLAN DAL context
29865 pEventData: pointer to the event information structure
29866
29867 @see
29868 @return Result of the function call
29869*/
29870WDI_Status
29871WDI_ProcessLinkLayerStatsResultsInd
29872(
29873 WDI_ControlBlockType* pWDICtx,
29874 WDI_EventInfoType* pEventData
29875)
29876{
29877 void *pLinkLayerStatsInd;
29878 WDI_LowLevelIndType wdiInd;
29879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29880
29881 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29882 "%s: Event RESULTS Indication", __func__);
29883
29884 /* sanity check */
29885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29886 ( NULL == pEventData->pEventData))
29887 {
29888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29889 "%s: Invalid parameters", __func__);
29890 WDI_ASSERT(0);
29891 return WDI_STATUS_E_FAILURE;
29892 }
29893
29894 /* extract response and send it to UMAC */
29895 pLinkLayerStatsInd = (void *)pEventData->pEventData;
29896
29897 /* Fill in the indication parameters */
29898 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
29899
29900 wdiInd.wdiIndicationData.pLinkLayerStatsResults = pLinkLayerStatsInd;
29901
29902 /* Notify UMAC */
29903 if (pWDICtx->wdiLowLevelIndCB)
29904 {
29905 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29906 }
29907 else
29908 {
29909 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29910 "%s: WDILowLevelIndCb is null", __func__);
29911 WDI_ASSERT(0);
29912 return WDI_STATUS_E_FAILURE;
29913 }
29914
29915 return WDI_STATUS_SUCCESS;
29916} /* End of WDI_ProcessLinkLayerStatsResultsInd */
29917#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
29918
Rajeev79dbe4c2013-10-05 11:03:42 +053029919/**
29920 @brief WDI_ProcessSetBatchScanReq -
29921 Set batch scan request to FW
29922
29923 @param pWDICtx : wdi context
29924 pEventData : indication data
29925
29926 @see
29927 @return none
29928*/
29929WDI_Status WDI_ProcessSetBatchScanReq
29930(
29931 WDI_ControlBlockType* pWDICtx,
29932 WDI_EventInfoType* pEventData
29933)
29934{
29935 WDI_SetBatchScanReqType *pWdiReq;
29936 WDI_Status wdiStatus;
29937 wpt_uint8* pSendBuffer = NULL;
29938 wpt_uint16 usDataOffset = 0;
29939 wpt_uint16 usSendSize = 0;
29940 tHalBatchScanSetParams *pHalReq;
29941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29942
29943 /*sanity check*/
29944 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29945 {
29946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29947 "%s: Invalid parameters in set batch scan request", __func__);
29948 WDI_ASSERT(0);
29949 return WDI_STATUS_E_FAILURE;
29950 }
29951
29952
29953 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29954
29955
29956 /*get message buffer*/
29957 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29958 WDI_SET_BATCH_SCAN_REQ,
29959 sizeof(tHalBatchScanSetParams),
29960 &pSendBuffer, &usDataOffset, &usSendSize))||
29961 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29962 {
29963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29964 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29965 WDI_ASSERT(0);
29966 return WDI_STATUS_E_FAILURE;
29967 }
29968
29969 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29970
29971 pHalReq->rtt = pWdiReq->rtt;
29972 pHalReq->rfBand = pWdiReq->rfBand;
29973 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29974 pHalReq->scanInterval = pWdiReq->scanFrequency;
29975 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29976
29977 /*send set batch scan request to fw*/
29978 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29979 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29980
29981 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29982 usSendSize, pWDICtx->pfncRspCB,
29983 pWDICtx->pReqStatusUserData,
29984 WDI_SET_BATCH_SCAN_RESP);
29985
29986 return wdiStatus;
29987}
29988
29989/**
29990 @brief WDI_SetBatchScanReq
29991 This API is called to set batch scan request in FW
29992
29993 @param pBatchScanReqParam : pointer to set batch scan re param
29994 usrData : Client context
29995 setBatchScanRspCb : set batch scan resp callback
29996 @see
29997 @return SUCCESS or FAIL
29998*/
29999WDI_Status WDI_SetBatchScanReq
30000(
30001 void *pBatchScanReqParam,
30002 void *usrData,
30003 WDI_SetBatchScanCb setBatchScanRspCb
30004)
30005{
30006 WDI_EventInfoType wdiEventData;
30007
30008 /*sanity check*/
30009 if (eWLAN_PAL_FALSE == gWDIInitialized)
30010 {
30011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30012 "WDI API call before module is initialized - Fail request");
30013
30014 return WDI_STATUS_E_NOT_ALLOWED;
30015 }
30016
30017 /* fill in event data and post to the main FSM */
30018 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30019 wdiEventData.pEventData = pBatchScanReqParam;
30020 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30021 wdiEventData.pCBfnc = setBatchScanRspCb;
30022 wdiEventData.pUserData = usrData;
30023
30024 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30025}
30026
30027/**
30028 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30029
30030 @param None
30031
30032 @see
30033
30034 @return Status of the request
30035*/
30036WDI_Status
30037WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30038{
30039 WDI_EventInfoType wdiEventData;
30040
30041 /*-------------------------------------------------------------------------
30042 Sanity Check
30043 ------------------------------------------------------------------------*/
30044 if (eWLAN_PAL_FALSE == gWDIInitialized)
30045 {
30046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30047 "WDI API call before module is initialized - Fail request!");
30048
30049 return WDI_STATUS_E_NOT_ALLOWED;
30050 }
30051
30052 /*-------------------------------------------------------------------------
30053 Fill in Event data and post to the Main FSM
30054 ------------------------------------------------------------------------*/
30055 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30056 wdiEventData.pEventData = pWdiReq;
30057 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30058 wdiEventData.pCBfnc = NULL;
30059 wdiEventData.pUserData = NULL;
30060
30061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30062}
30063
30064/**
30065 @brief WDI_TriggerBatchScanResultInd
30066 This API is called to pull batch scan result from FW
30067
30068 @param pWdiReq : pointer to get batch scan ind param
30069 @see
30070 @return SUCCESS or FAIL
30071*/
30072WDI_Status WDI_TriggerBatchScanResultInd
30073(
30074 WDI_TriggerBatchScanResultIndType *pWdiReq
30075)
30076{
30077 WDI_EventInfoType wdiEventData;
30078 /*-------------------------------------------------------------------------
30079 Sanity Check
30080 ------------------------------------------------------------------------*/
30081 if (eWLAN_PAL_FALSE == gWDIInitialized)
30082 {
30083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30084 "WDI API call before module is initialized - Fail request!");
30085
30086 return WDI_STATUS_E_NOT_ALLOWED;
30087 }
30088
30089 /*-------------------------------------------------------------------------
30090 Fill in Event data and post to the Main FSM
30091 ------------------------------------------------------------------------*/
30092 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30093 wdiEventData.pEventData = pWdiReq;
30094 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30095 wdiEventData.pCBfnc = NULL;
30096 wdiEventData.pUserData = NULL;
30097
30098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30099}
Rajeev79dbe4c2013-10-05 11:03:42 +053030100#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030101
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030102/**
30103 @brief Process Update Channel Rsp function (called when a response is
30104 being received over the bus from HAL)
30105
30106 @param pWDICtx: pointer to the WLAN DAL context
30107 pEventData: pointer to the event information structure
30108
30109 @see
30110 @return Result of the function call
30111*/
30112WDI_Status
30113WDI_ProcessUpdateChanRsp
30114(
30115 WDI_ControlBlockType* pWDICtx,
30116 WDI_EventInfoType* pEventData
30117)
30118{
30119 WDI_Status wdiStatus;
30120 eHalStatus halStatus;
30121 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30123
30124 /*-------------------------------------------------------------------------
30125 Sanity check
30126 -------------------------------------------------------------------------*/
30127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30128 ( NULL == pEventData->pEventData))
30129 {
30130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30131 "%s: Invalid parameters", __func__);
30132 WDI_ASSERT(0);
30133 return WDI_STATUS_E_FAILURE;
30134 }
30135
30136 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30137
30138 /*-------------------------------------------------------------------------
30139 Extract response and send it to UMAC
30140 -------------------------------------------------------------------------*/
30141 halStatus = *((eHalStatus*)pEventData->pEventData);
30142 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30143
30144 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30145
30146 return WDI_STATUS_SUCCESS;
30147}/*WDI_ProcessUpdateChanRsp*/
30148
Leo Chang0b0e45a2013-12-15 15:18:55 -080030149#ifdef FEATURE_WLAN_CH_AVOID
30150/**
30151 @brief v -WDI_ProcessChAvoidInd
30152
30153
30154 @param pWDICtx : wdi context
30155 pEventData : indication data
30156 @see
30157 @return Result of the function call
30158*/
30159WDI_Status
30160WDI_ProcessChAvoidInd
30161(
30162 WDI_ControlBlockType* pWDICtx,
30163 WDI_EventInfoType* pEventData
30164)
30165{
30166 WDI_LowLevelIndType wdiInd;
30167 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30168 wpt_uint16 rangeLoop;
30169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30170
30171 /*-------------------------------------------------------------------------
30172 Sanity check
30173 -------------------------------------------------------------------------*/
30174 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30175 (NULL == pEventData->pEventData))
30176 {
30177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30178 "%s: Invalid parameters", __func__);
30179 WDI_ASSERT(0);
30180 return WDI_STATUS_E_FAILURE;
30181 }
30182
30183 /*-------------------------------------------------------------------------
30184 Extract indication and send it to UMAC
30185 -------------------------------------------------------------------------*/
30186 wpalMemoryCopy(&chAvoidIndicationParam,
30187 pEventData->pEventData,
30188 sizeof(tHalAvoidFreqRangeIndParams));
30189
30190 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30191 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30192 chAvoidIndicationParam.avoidCnt;
30193 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30194 (void *)chAvoidIndicationParam.avoidRange,
30195 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30196 sizeof(WDI_ChAvoidFreqType));
30197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30198 "%s: band count %d", __func__,
30199 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30200 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30201 {
30202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30203 "%s: srart freq %d, end freq %d", __func__,
30204 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30205 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30206 }
30207
30208 /*Notify UMAC*/
30209 if (pWDICtx->wdiLowLevelIndCB)
30210 {
30211 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30212 }
30213
30214 return WDI_STATUS_SUCCESS;
30215}
30216#endif /* FEATURE_WLAN_CH_AVOID */
30217
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030218/**
30219 @brief Process OBSS Start scan result indication
30220
30221 @param pWDICtx: pointer to the WLAN DAL context
30222 pEventData: pointer to the event information structure
30223
30224 @see
30225 @return Result of the function call
30226*/
30227WDI_Status
30228WDI_ProcessHT40OBSSScanInd
30229(
30230 WDI_ControlBlockType* pWDICtx,
30231 WDI_EventInfoType* pEventData
30232)
30233{
30234 wpt_uint8* pSendBuffer = NULL;
30235 wpt_uint16 usDataOffset = 0;
30236 wpt_uint16 usSendSize = 0;
30237 wpt_uint16 usLen = 0;
30238 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30239 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30240 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30241 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30242
30243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30244
30245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30246 "%s", __func__);
30247
30248 /*-------------------------------------------------------------------------
30249 Sanity check
30250 -------------------------------------------------------------------------*/
30251 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30252 {
30253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30254 "%s: Invalid parameters", __func__);
30255 WDI_ASSERT(0);
30256 return WDI_STATUS_E_FAILURE;
30257 }
30258 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30259
30260 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30261 /*-----------------------------------------------------------------------
30262 Get message buffer
30263 -----------------------------------------------------------------------*/
30264
30265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30266 WDI_START_HT40_OBSS_SCAN_IND,
30267 sizeof(tHT40ObssScanIndType),
30268 &pSendBuffer, &usDataOffset, &usSendSize))||
30269 ( usSendSize < (usDataOffset + usLen )))
30270 {
30271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30272 "Unable to get send buffer in HT40 OBSS Start req %p ",
30273 pEventData);
30274 WDI_ASSERT(0);
30275 return WDI_STATUS_E_FAILURE;
30276 }
30277 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30278 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30279 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30280 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30281 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30282 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30283 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30284 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30285 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30286 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30287 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30288 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30289 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30290 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30291 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30292 pHT40ObssScanInd->OBSSScanActivityThreshold =
30293 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30294 pHT40ObssScanInd->selfStaIdx =
30295 pwdiHT40OBSSScanInd->selfStaIdx;
30296 pHT40ObssScanInd->bssIdx =
30297 pwdiHT40OBSSScanInd->bssIdx;
30298 pHT40ObssScanInd->fortyMHZIntolerent =
30299 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30300 pHT40ObssScanInd->channelCount =
30301 pwdiHT40OBSSScanInd->channelCount;
30302
30303 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30304 WDI_ROAM_SCAN_MAX_CHANNELS);
30305 pHT40ObssScanInd->ieFieldLen =
30306 pwdiHT40OBSSScanInd->ieFieldLen;
30307
30308 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30309 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30310 pWDICtx->pReqStatusUserData = NULL;
30311 pWDICtx->pfncRspCB = NULL;
30312
30313 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30314 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30315
30316 /*-------------------------------------------------------------------------
30317 Send OBSS Start Indication to HAL
30318 -------------------------------------------------------------------------*/
30319 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30320 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30321
30322} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30323
30324
30325/**
30326 @brief wdi_HT40OBSSScanInd
30327 This API is called to start OBSS scan
30328
30329 @param pWdiReq : pointer to get ind param
30330 @see
30331 @return SUCCESS or FAIL
30332*/
30333WDI_Status WDI_HT40OBSSScanInd
30334(
30335 WDI_HT40ObssScanParamsType *pWdiReq
30336)
30337{
30338 WDI_EventInfoType wdiEventData;
30339
30340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30341 "%s", __func__);
30342 /*-------------------------------------------------------------------------
30343 Sanity Check
30344 ------------------------------------------------------------------------*/
30345 if (eWLAN_PAL_FALSE == gWDIInitialized)
30346 {
30347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30348 "WDI API call before module is initialized - Fail request!");
30349
30350 return WDI_STATUS_E_NOT_ALLOWED;
30351 }
30352
30353 /*-------------------------------------------------------------------------
30354 Fill in Event data and post to the Main FSM
30355 ------------------------------------------------------------------------*/
30356 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30357 wdiEventData.pEventData = pWdiReq;
30358 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30359 wdiEventData.pCBfnc = NULL;
30360 wdiEventData.pUserData = NULL;
30361
30362
30363 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30364}
30365
30366/**
30367 @brief Process OBSS Stop scan result
30368
30369 @param pWDICtx: pointer to the WLAN DAL context
30370 pEventData: pointer to the event information structure
30371
30372 @see
30373 @return Result of the function call
30374*/
30375WDI_Status
30376WDI_ProcessHT40OBSSStopScanInd
30377(
30378 WDI_ControlBlockType* pWDICtx,
30379 WDI_EventInfoType* pEventData
30380)
30381{
30382 wpt_uint8* pSendBuffer = NULL;
30383 wpt_uint16 usDataOffset = 0;
30384 wpt_uint16 usSendSize = 0;
30385 wpt_uint16 usLen = 0;
30386 wpt_uint8 *wdiBssIdx = 0;
30387 tANI_U8 *bssIdx = 0;
30388 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30389
30390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30391
30392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30393 "%s", __func__);
30394
30395 /*-------------------------------------------------------------------------
30396 Sanity check
30397 -------------------------------------------------------------------------*/
30398 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30399 {
30400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30401 "%s: Invalid parameters", __func__);
30402 WDI_ASSERT(0);
30403 return WDI_STATUS_E_FAILURE;
30404 }
30405 bssIdx = (wpt_uint8*)pEventData->pEventData;
30406 /*-----------------------------------------------------------------------
30407 Get message buffer
30408 -----------------------------------------------------------------------*/
30409
30410 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30411 WDI_STOP_HT40_OBSS_SCAN_IND,
30412 sizeof(tANI_U8),
30413 &pSendBuffer, &usDataOffset, &usSendSize))||
30414 ( usSendSize < (usDataOffset + usLen )))
30415 {
30416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30417 "Unable to get send buffer in HT40 OBSS Start req %p ",
30418 pEventData);
30419 WDI_ASSERT(0);
30420 return WDI_STATUS_E_FAILURE;
30421 }
30422
30423 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30424 bssIdx = wdiBssIdx;
30425
30426 pWDICtx->pReqStatusUserData = NULL;
30427 pWDICtx->pfncRspCB = NULL;
30428
30429 /*-------------------------------------------------------------------------
30430 Send DHCP Start Indication to HAL
30431 -------------------------------------------------------------------------*/
30432 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30433 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30434} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30435
30436/**
30437 @brief WDI_HT40OBSSStopScanInd
30438 This API is called to start OBSS scan
30439 @param pWdiReq : pointer to get ind param
30440 @see
30441 @return SUCCESS or FAIL
30442*/
30443WDI_Status WDI_HT40OBSSStopScanInd
30444(
30445 wpt_uint8 bssIdx
30446)
30447{
30448 WDI_EventInfoType wdiEventData;
30449
30450 /*-------------------------------------------------------------------------
30451 Sanity Check
30452 ------------------------------------------------------------------------*/
30453 if (eWLAN_PAL_FALSE == gWDIInitialized)
30454 {
30455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30456 "WDI API call before module is initialized - Fail request!");
30457
30458 return WDI_STATUS_E_NOT_ALLOWED;
30459 }
30460
30461 /*-------------------------------------------------------------------------
30462 Fill in Event data and post to the Main FSM
30463 ------------------------------------------------------------------------*/
30464 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30465 wdiEventData.pEventData = &bssIdx;
30466 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30467 wdiEventData.pCBfnc = NULL;
30468 wdiEventData.pUserData = NULL;
30469
30470 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30471}
30472
c_hpothu86041002014-04-14 19:06:51 +053030473WDI_Status
30474WDI_printRegInfo
30475(
30476 WDI_ControlBlockType* pWDICtx,
30477 WDI_EventInfoType* pEventData
30478)
30479{
30480 tHalRegDebugInfo *pRegTable;
30481 tHalRegDebugInfoParams *pRegParams;
30482 uint32 cnt=0;
30483
30484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30485 "%s: ", __func__);
30486 /*-------------------------------------------------------------------------
30487 Sanity check
30488 -------------------------------------------------------------------------*/
30489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30490 ( NULL == pEventData->pEventData))
30491 {
30492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30493 "%s: Invalid parameters", __func__);
30494 WDI_ASSERT(0);
30495 return WDI_STATUS_E_FAILURE;
30496 }
30497
30498 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30499
30500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30501 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30502 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30503
30504 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30505
30506 if (pRegParams->regCount <= 0)
30507 {
30508 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30509 "%s incorrect parameters passed", __func__);
30510 return WDI_STATUS_E_FAILURE;
30511 }
30512
30513 while(pRegParams->regCount--)
30514 {
30515 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30516 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30517 cnt++;
30518 }
30519
30520 return WDI_STATUS_SUCCESS;
30521}
c_hpothu92367912014-05-01 15:18:17 +053030522
30523/*
30524 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30525 * send the response to PE with beacon miss count
30526 * received from WDI.
30527 */
30528WDI_Status
30529WDI_ProcessGetBcnMissRateRsp
30530(
30531 WDI_ControlBlockType* pWDICtx,
30532 WDI_EventInfoType* pEventData
30533)
30534{
30535 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30536 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30537
30538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30539 "In %s",__func__);
30540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30541
30542 /*-------------------------------------------------------------------------
30543 Sanity check
30544 -------------------------------------------------------------------------*/
30545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30546 ( NULL == pEventData->pEventData))
30547 {
30548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30549 "%s: Invalid parameters", __func__);
30550 WDI_ASSERT(0);
30551 return WDI_STATUS_E_FAILURE;
30552 }
30553
30554 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30555 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30556
30557 /*Notify UMAC*/
30558 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30559 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30560 return WDI_STATUS_SUCCESS;
30561}
30562
30563/*
30564 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30565 * Request to WDI to get missed beacon rate.
30566 */
30567WDI_Status
30568WDI_ProcessGetBcnMissRateReq
30569(
30570 WDI_ControlBlockType* pWDICtx,
30571 WDI_EventInfoType* pEventData
30572)
30573{
30574 wpt_uint8* pSendBuffer = NULL;
30575 wpt_uint16 usDataOffset = 0;
30576 wpt_uint16 usSendSize = 0;
30577 wpt_uint8 ucCurrentBSSSesIdx = 0;
30578 WDI_BSSSessionType* pBSSSes = NULL;
30579 wpt_macAddr macBSSID;
30580 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30581 tHalBcnMissRateReqParams halBcnMissRateReq;
30582
30583/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30584
30585 /*-------------------------------------------------------------------------
30586 Sanity check
30587 -------------------------------------------------------------------------*/
30588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30589 ( NULL == pEventData->pCBfnc ) )
30590 {
30591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30592 "%s: Invalid parameters", __func__);
30593 WDI_ASSERT(0);
30594 return WDI_STATUS_E_FAILURE;
30595 }
30596
30597 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30598
30599 wpalMutexAcquire(&pWDICtx->wptMutex);
30600
30601 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
30602 pEventData->pEventData, &pBSSSes);
30603 if ( NULL == pBSSSes )
30604 {
30605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30606 "%s: Association sequence for this BSS does not yet exist. macBSSID"
30607 MAC_ADDRESS_STR, __func__, MAC_ADDR_ARRAY(macBSSID));
30608 wpalMutexRelease(&pWDICtx->wptMutex);
30609 return WDI_STATUS_E_NOT_ALLOWED;
30610 }
30611 wpalMutexRelease(&pWDICtx->wptMutex);
30612
30613 /*-----------------------------------------------------------------------
30614 Get message buffer
30615 -----------------------------------------------------------------------*/
30616 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30617 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
30618 sizeof(tHalBcnMissRateReqParams),
30619 &pSendBuffer, &usDataOffset, &usSendSize)) ||
30620 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
30621 {
30622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30623 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
30624 pEventData);
30625 WDI_ASSERT(0);
30626 return WDI_STATUS_E_FAILURE;
30627 }
30628
30629 pWDICtx->wdiReqStatusCB = NULL;
30630 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30631
30632 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
30633
30634 wpalMemoryCopy( pSendBuffer+usDataOffset,
30635 &halBcnMissRateReq,
30636 sizeof(tHalBcnMissRateReqParams));
30637 /*-------------------------------------------------------------------------
30638 Send Get STA Request to HAL
30639 -------------------------------------------------------------------------*/
30640 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
30641 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
30642}
30643
30644/**
30645 @brief WDI_GetBcnMissRate
30646
30647 @param pUserData: user data will be passed back with the
30648 callback
30649 WDI_GetBcnMissRateCb: callback for passing back the response
30650 of the get stats operation received from the device
30651 bssid: bssid, to send bssIdx to FW
30652
30653 @return SUCCESS or FAIL
30654*/
30655WDI_Status WDI_GetBcnMissRate( void *pUserData,
30656 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
30657 tANI_U8 *bssid )
30658{
30659 WDI_EventInfoType wdiEventData;
30660
30661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30662
30663 /*------------------------------------------------------------------------
30664 Sanity Check
30665 ------------------------------------------------------------------------*/
30666 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30667 {
30668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30669 "WDI API call before module is initialized - Fail request");
30670
30671 return WDI_STATUS_E_NOT_ALLOWED;
30672 }
30673
30674 /*------------------------------------------------------------------------
30675 Fill in Event data and post to the Main FSM
30676 ------------------------------------------------------------------------*/
30677 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
30678 wdiEventData.pEventData = bssid;
30679 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
30680 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
30681 wdiEventData.pUserData = pUserData;
30682
30683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30684}
Sunil Duttbd736ed2014-05-26 21:19:41 +053030685#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30686
30687/**
30688 @brief WDI_LLStatsSetReq
30689 This API is called to set link layer stats request in FW
30690
30691 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
30692 wdiLLStatsSetRspCb : set link layer stats resp callback
30693 usrData : Client context
30694 @see
30695 @return SUCCESS or FAIL
30696*/
30697WDI_Status
30698WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
30699 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
30700 void* pUserData)
30701{
30702 WDI_EventInfoType wdiEventData;
30703
30704 /*------------------------------------------------------------------------
30705 Sanity Check
30706 ------------------------------------------------------------------------*/
30707 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30708 {
30709 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30710 "WDI API call before module is initialized - Fail request");
30711
30712 return WDI_STATUS_E_NOT_ALLOWED;
30713 }
30714
30715 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
30716 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
30717 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
30718 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
30719 wdiEventData.pUserData = pUserData;
30720
30721 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30722}
30723
30724/**
30725 @brief WDI_ProcessLLStatsSetReq -
30726 Set Link Layer Stats request to FW
30727
30728 @param pWDICtx : wdi context
30729 pEventData : indication data
30730
30731 @see
30732 @return none
30733*/
30734WDI_Status
30735WDI_ProcessLLStatsSetReq
30736(
30737 WDI_ControlBlockType* pWDICtx,
30738 WDI_EventInfoType* pEventData
30739)
30740{
30741 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
30742 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
30743 wpt_uint8* pSendBuffer = NULL;
30744 wpt_uint16 usSendSize = 0;
30745 wpt_uint16 usDataOffset = 0;
30746 tHalMacLlSetStatsReqParams halLLStatsSetParams;
30747
30748 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30749 ( NULL == pEventData->pCBfnc ))
30750 {
30751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30752 "%s: Invalid parameters", __func__);
30753 WDI_ASSERT(0);
30754 return WDI_STATUS_E_FAILURE;
30755 }
30756
30757 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
30758 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
30759
30760 /*-----------------------------------------------------------------------
30761 Get message buffer
30762 ! TO DO : proper conversion into the HAL Message Request Format
30763 -----------------------------------------------------------------------*/
30764 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30765 pWDICtx,
30766 WDI_LL_STATS_SET_REQ,
30767 sizeof(tHalMacLlSetStatsReqParams),
30768 &pSendBuffer, &usDataOffset,
30769 &usSendSize))||
30770 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
30771 {
30772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30773 "Unable to get send buffer in %s %p %p %p", __func__,
30774 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
30775 WDI_ASSERT(0);
30776 return WDI_STATUS_E_FAILURE;
30777 }
30778
30779
30780
30781 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
30782 halLLStatsSetParams.sta_id = pwdiLLStatsSetReqParams->staId;
30783 halLLStatsSetParams.mpdu_size_threshold =
30784 pwdiLLStatsSetReqParams->mpduSizeThreshold;
30785 halLLStatsSetParams.aggressive_statistics_gathering =
30786 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
30787
30788 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30789 " halLLStatsSetParams.req_id = %u",
30790 halLLStatsSetParams.req_id);
30791 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30792 " halLLStatsSetParams.sta_id = %u",
30793 halLLStatsSetParams.sta_id);
30794 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30795 " halLLStatsSetParams.mpdu_size_threshold = %u",
30796 halLLStatsSetParams.mpdu_size_threshold);
30797 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30798 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
30799 halLLStatsSetParams.aggressive_statistics_gathering);
30800
30801 wpalMemoryCopy(pSendBuffer+usDataOffset,
30802 &halLLStatsSetParams,
30803 sizeof(halLLStatsSetParams));
30804
30805 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30806
30807 /*-------------------------------------------------------------------------
30808 Send Clear Link Layer Stats Request to HAL
30809 -------------------------------------------------------------------------*/
30810 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30811 wdiLLStatsSetCb, pEventData->pUserData,
30812 WDI_LL_STATS_SET_RSP);
30813}
30814
30815/**
30816 @brief WDI_LLStatsGetReq
30817 This API is called to get link layer stats request in FW
30818
30819 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
30820 wdiLLStatsGetRspCb : get link layer stats resp callback
30821 usrData : Client context
30822 @see
30823 @return SUCCESS or FAIL
30824*/
30825WDI_Status
30826WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
30827 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
30828 void* pUserData)
30829{
30830 WDI_EventInfoType wdiEventData;
30831
30832 /*------------------------------------------------------------------------
30833 Sanity Check
30834 ------------------------------------------------------------------------*/
30835 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30836 {
30837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30838 "WDI API call before module is initialized - Fail request");
30839
30840 return WDI_STATUS_E_NOT_ALLOWED;
30841 }
30842
30843 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
30844 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
30845 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
30846 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
30847 wdiEventData.pUserData = pUserData;
30848
30849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30850}
30851
30852/**
30853 @brief WDI_ProcessLLStatsGetReq -
30854 Get Link Layer Stats request to FW
30855
30856 @param pWDICtx : wdi context
30857 pEventData : indication data
30858
30859 @see
30860 @return none
30861*/
30862WDI_Status
30863WDI_ProcessLLStatsGetReq
30864(
30865 WDI_ControlBlockType* pWDICtx,
30866 WDI_EventInfoType* pEventData
30867)
30868{
30869 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
30870 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
30871 wpt_uint8* pSendBuffer = NULL;
30872 wpt_uint16 usSendSize = 0;
30873 wpt_uint16 usDataOffset = 0;
30874 tHalMacLlGetStatsReqParams halLLStatsGetParams;
30875
30876 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30877 ( NULL == pEventData->pCBfnc ))
30878 {
30879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30880 "%s: Invalid parameters", __func__);
30881 WDI_ASSERT(0);
30882 return WDI_STATUS_E_FAILURE;
30883 }
30884
30885 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
30886 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
30887
30888 /*-----------------------------------------------------------------------
30889 Get message buffer
30890 ! TO DO : proper conversion into the HAL Message Request Format
30891 -----------------------------------------------------------------------*/
30892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30893 pWDICtx,
30894 WDI_LL_STATS_GET_REQ,
30895 sizeof(tHalMacLlGetStatsReqParams),
30896 &pSendBuffer, &usDataOffset,
30897 &usSendSize))||
30898 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
30899 {
30900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30901 "Unable to get send buffer in %s %p %p %p", __func__,
30902 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
30903 WDI_ASSERT(0);
30904 return WDI_STATUS_E_FAILURE;
30905 }
30906
30907 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
30908 halLLStatsGetParams.sta_id = pwdiLLStatsGetReqParams->staId;
30909 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
30910
30911 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30912 " halLLStatsGetParams.req_id = %u",
30913 halLLStatsGetParams.req_id);
30914 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30915 " halLLStatsGetParams.staId = %u",
30916 halLLStatsGetParams.sta_id);
30917 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30918 " halLLStatsGetParams.Mask = %u",
30919 halLLStatsGetParams.param_id_mask);
30920
30921 wpalMemoryCopy(pSendBuffer+usDataOffset,
30922 &halLLStatsGetParams,
30923 sizeof(halLLStatsGetParams));
30924
30925 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30926
30927 /*-------------------------------------------------------------------------
30928 Send Clear Link Layer Stats Request to HAL
30929 -------------------------------------------------------------------------*/
30930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30931 wdiLLStatsGetCb, pEventData->pUserData,
30932 WDI_LL_STATS_GET_RSP);
30933}
30934
30935/**
30936 @brief WDI_LLStatsClearReq
30937 This API is called to clear link layer stats request in FW
30938
30939 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
30940 wdiLLStatsSetRspCb : clear link layer stats resp callback
30941 usrData : Client context
30942 @see
30943 @return SUCCESS or FAIL
30944*/
30945WDI_Status
30946WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
30947 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
30948 void* pUserData)
30949{
30950 WDI_EventInfoType wdiEventData;
30951
30952 /*------------------------------------------------------------------------
30953 Sanity Check
30954 ------------------------------------------------------------------------*/
30955 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30956 {
30957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30958 "WDI API call before module is initialized - Fail request");
30959
30960 return WDI_STATUS_E_NOT_ALLOWED;
30961 }
30962
30963 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
30964 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
30965 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
30966 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
30967 wdiEventData.pUserData = pUserData;
30968
30969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30970 "%s:%d Enter", __func__, __LINE__);
30971
30972 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30973}
30974
30975/**
30976 @brief WDI_ProcessLLStatsClearReq -
30977 Clear Link Layer Stats request to FW
30978
30979 @param pWDICtx : wdi context
30980 pEventData : indication data
30981
30982 @see
30983 @return none
30984*/
30985WDI_Status
30986WDI_ProcessLLStatsClearReq
30987(
30988 WDI_ControlBlockType* pWDICtx,
30989 WDI_EventInfoType* pEventData
30990)
30991{
30992 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
30993 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
30994 wpt_uint8* pSendBuffer = NULL;
30995 wpt_uint16 usSendSize = 0;
30996 wpt_uint16 usDataOffset = 0;
30997 tHalMacLlClearStatsReqParams halLLStatsClearParams;
30998
30999 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31000 ( NULL == pEventData->pCBfnc ))
31001 {
31002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31003 "%s: Invalid parameters", __func__);
31004 WDI_ASSERT(0);
31005 return WDI_STATUS_E_FAILURE;
31006 }
31007
31008 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31009 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31010
31011 /*-----------------------------------------------------------------------
31012 Get message buffer
31013 ! TO DO : proper conversion into the HAL Message Request Format
31014 -----------------------------------------------------------------------*/
31015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31016 pWDICtx,
31017 WDI_LL_STATS_CLEAR_REQ,
31018 sizeof(tHalMacLlClearStatsReqParams),
31019 &pSendBuffer, &usDataOffset,
31020 &usSendSize))||
31021 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31022 {
31023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31024 "Unable to get send buffer in %s %p %p %p", __func__,
31025 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31026 WDI_ASSERT(0);
31027 return WDI_STATUS_E_FAILURE;
31028 }
31029
31030 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
31031 halLLStatsClearParams.sta_id = pwdiLLStatsClearReqParams->staId;
31032 halLLStatsClearParams.stats_clear_req_mask =
31033 pwdiLLStatsClearReqParams->statsClearReqMask;
31034 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31035
31036 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31037 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31038 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31039 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31040 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31041 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31042 halLLStatsClearParams.stats_clear_req_mask);
31043 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31044 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31045
31046 wpalMemoryCopy(pSendBuffer+usDataOffset,
31047 &halLLStatsClearParams,
31048 sizeof(halLLStatsClearParams));
31049
31050 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31051
31052 /*-------------------------------------------------------------------------
31053 Send Clear Link Layer Stats Request to HAL
31054 -------------------------------------------------------------------------*/
31055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31056 wdiLLStatsClearCb, pEventData->pUserData,
31057 WDI_LL_STATS_CLEAR_RSP);
31058}
31059#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031060
31061#ifdef WLAN_FEATURE_EXTSCAN
31062
31063/**
31064 @brief Process EXTSCAN BUffer full indication from FW
31065
31066 @param pWDICtx: pointer to the WLAN DAL context
31067 pEventData: pointer to the event information structure
31068
31069 @see
31070 @return Result of the function call
31071*/
31072WDI_Status
31073WDI_ProcessEXTScanProgressInd
31074(
31075 WDI_ControlBlockType* pWDICtx,
31076 WDI_EventInfoType* pEventData
31077)
31078{
31079 WDI_LowLevelIndType wdiInd;
31080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31081
31082 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31083 "%s: ", __func__);
31084
31085 /* sanity check */
31086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31087 ( NULL == pEventData->pEventData))
31088 {
31089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31090 "%s: Invalid parameters", __func__);
31091 WDI_ASSERT(0);
31092 return WDI_STATUS_E_FAILURE;
31093 }
31094
31095 /* Fill in the indication parameters */
31096 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31097
31098 /* extract response and send it to UMAC */
31099 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31100
31101 /* Notify UMAC */
31102 if (pWDICtx->wdiLowLevelIndCB)
31103 {
31104 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31105 }
31106 else
31107 {
31108 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31109 "%s: WDILowLevelIndCb is null", __func__);
31110 WDI_ASSERT(0);
31111 return WDI_STATUS_E_FAILURE;
31112 }
31113 return WDI_STATUS_SUCCESS;
31114
31115} /* End of WDI_ProcessEXTScanProgressInd */
31116
31117
31118/**
31119 @brief Process EXTScan Scan Available indication from FW
31120
31121 @param pWDICtx: pointer to the WLAN DAL context
31122 pEventData: pointer to the event information structure
31123
31124 @see
31125 @return Result of the function call
31126*/
31127WDI_Status
31128WDI_ProcessEXTScanScanAvailableInd
31129(
31130 WDI_ControlBlockType* pWDICtx,
31131 WDI_EventInfoType* pEventData
31132)
31133{
31134 WDI_LowLevelIndType wdiInd;
31135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31136
31137 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31138 "%s: ", __func__);
31139
31140 /* sanity check */
31141 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31142 ( NULL == pEventData->pEventData))
31143 {
31144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31145 "%s: Invalid parameters", __func__);
31146 WDI_ASSERT(0);
31147 return WDI_STATUS_E_FAILURE;
31148 }
31149
31150
31151
31152 /* Fill in the indication parameters */
31153 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31154
31155 /* extract response and send it to UMAC */
31156 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31157
31158 /* Notify UMAC */
31159 if (pWDICtx->wdiLowLevelIndCB)
31160 {
31161 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31162 }
31163 else
31164 {
31165 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31166 "%s: WDILowLevelIndCb is null", __func__);
31167 WDI_ASSERT(0);
31168 return WDI_STATUS_E_FAILURE;
31169 }
31170 return WDI_STATUS_SUCCESS;
31171} /* End of WDI_ProcessEXTScanScanDoneInd */
31172
31173/**
31174 @brief Process EXTScan Result Indication indication from FW
31175
31176 @param pWDICtx: pointer to the WLAN DAL context
31177 pEventData: pointer to the event information structure
31178
31179 @see
31180 @return Result of the function call
31181*/
31182WDI_Status
31183WDI_ProcessEXTScanResultInd
31184(
31185 WDI_ControlBlockType* pWDICtx,
31186 WDI_EventInfoType* pEventData
31187)
31188{
31189 WDI_LowLevelIndType wdiInd;
31190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31191
31192 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31193 "%s: ", __func__);
31194
31195 /* sanity check */
31196 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31197 ( NULL == pEventData->pEventData))
31198 {
31199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31200 "%s: Invalid parameters", __func__);
31201 WDI_ASSERT(0);
31202 return WDI_STATUS_E_FAILURE;
31203 }
31204
31205 /* Fill in the indication parameters */
31206 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31207
31208 /* extract response and send it to UMAC */
31209 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31210
31211 /* Notify UMAC */
31212 if (pWDICtx->wdiLowLevelIndCB)
31213 {
31214 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31215 }
31216 else
31217 {
31218 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31219 "%s: WDILowLevelIndCb is null", __func__);
31220 WDI_ASSERT(0);
31221 return WDI_STATUS_E_FAILURE;
31222 }
31223 return WDI_STATUS_SUCCESS;
31224} /* End of WDI_ProcessEXTScanResultInd */
31225
31226/**
31227 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31228
31229 @param pWDICtx: pointer to the WLAN DAL context
31230 pEventData: pointer to the event information structure
31231
31232 @see
31233 @return Result of the function call
31234*/
31235WDI_Status
31236WDI_ProcessEXTScanBssidHotListResultInd
31237(
31238 WDI_ControlBlockType* pWDICtx,
31239 WDI_EventInfoType* pEventData
31240)
31241{
31242 WDI_LowLevelIndType wdiInd;
31243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31244
31245 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31246 "%s: ", __func__);
31247
31248 /* sanity check */
31249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31250 ( NULL == pEventData->pEventData))
31251 {
31252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31253 "%s: Invalid parameters", __func__);
31254 WDI_ASSERT(0);
31255 return WDI_STATUS_E_FAILURE;
31256 }
31257
31258 /* Fill in the indication parameters */
31259 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31260
31261 /* extract response and send it to UMAC */
31262 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31263
31264 /* Notify UMAC */
31265 if (pWDICtx->wdiLowLevelIndCB)
31266 {
31267 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31268 }
31269 else
31270 {
31271 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31272 "%s: WDILowLevelIndCb is null", __func__);
31273 WDI_ASSERT(0);
31274 return WDI_STATUS_E_FAILURE;
31275 }
31276 return WDI_STATUS_SUCCESS;
31277} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31278
31279/**
31280 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31281
31282 @param pWDICtx: pointer to the WLAN DAL context
31283 pEventData: pointer to the event information structure
31284
31285 @see
31286 @return Result of the function call
31287*/
31288WDI_Status
31289WDI_ProcessEXTScanSignfRssiResultInd
31290(
31291 WDI_ControlBlockType* pWDICtx,
31292 WDI_EventInfoType* pEventData
31293)
31294{
31295 WDI_LowLevelIndType wdiInd;
31296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31297
31298 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31299 "%s: ", __func__);
31300
31301 /* sanity check */
31302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31303 ( NULL == pEventData->pEventData))
31304 {
31305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31306 "%s: Invalid parameters", __func__);
31307 WDI_ASSERT(0);
31308 return WDI_STATUS_E_FAILURE;
31309 }
31310
31311 /* Fill in the indication parameters */
31312 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
31313
31314 /* extract response and send it to UMAC */
31315 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31316
31317 /* Notify UMAC */
31318 if (pWDICtx->wdiLowLevelIndCB)
31319 {
31320 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31321 }
31322 else
31323 {
31324 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31325 "%s: WDILowLevelIndCb is null", __func__);
31326 WDI_ASSERT(0);
31327 return WDI_STATUS_E_FAILURE;
31328 }
31329 return WDI_STATUS_SUCCESS;
31330} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
31331
31332/**
31333 @brief WDI_EXTScanGetCapabilitiesReq
31334
31335 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
31336 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
31337 of the Req operation received from the device
31338 pUserData: user data will be passed back with the callback
31339
31340 @return SUCCESS or FAIL
31341*/
31342WDI_Status
31343WDI_EXTScanGetCapabilitiesReq(
31344 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
31345 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
31346 void* pUserData)
31347{
31348 WDI_EventInfoType wdiEventData;
31349
31350 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31351 "%s: %d ",__func__, __LINE__);
31352 /*------------------------------------------------------------------------
31353 Sanity Check
31354 ------------------------------------------------------------------------*/
31355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31356 {
31357 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31358 "WDI API call before module is initialized - Fail request");
31359
31360 return WDI_STATUS_E_NOT_ALLOWED;
31361 }
31362
31363 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
31364 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
31365 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
31366 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
31367 wdiEventData.pUserData = pUserData;
31368
31369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31370}
31371
31372/**
31373 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
31374 Extended Scan Get Capability request to FW
31375
31376 @param pWDICtx : wdi context
31377 pEventData : indication data
31378
31379 @see
31380 @return none
31381*/
31382WDI_Status
31383WDI_ProcessEXTScanGetCapabilitiesReq
31384(
31385 WDI_ControlBlockType* pWDICtx,
31386 WDI_EventInfoType* pEventData
31387)
31388{
31389 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
31390 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
31391 wpt_uint8* pSendBuffer = NULL;
31392 wpt_uint16 usSendSize = 0;
31393 wpt_uint16 usDataOffset = 0;
31394 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
31395
31396 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31397 "%s: %d Enter",__func__, __LINE__);
31398
31399 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31400 ( NULL == pEventData->pCBfnc ))
31401 {
31402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31403 "%s: Invalid parameters", __func__);
31404 WDI_ASSERT(0);
31405 return WDI_STATUS_E_FAILURE;
31406 }
31407
31408 pwdiEXTScanGetCapabilitiesReqParams =
31409 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
31410 wdiEXTScanGetCapabilitiesRspCb =
31411 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
31412
31413 /*-----------------------------------------------------------------------
31414 Get message buffer
31415 ! TO DO : proper conversion into the HAL Message Request Format
31416 -----------------------------------------------------------------------*/
31417 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31418 pWDICtx,
31419 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
31420 sizeof(halEXTScanGetCapReqParams),
31421 &pSendBuffer, &usDataOffset,
31422 &usSendSize))||
31423 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
31424 {
31425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31426 "Unable to get send buffer in %s %p %p %p", __func__,
31427 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
31428 wdiEXTScanGetCapabilitiesRspCb);
31429 WDI_ASSERT(0);
31430 return WDI_STATUS_E_FAILURE;
31431 }
31432
31433 halEXTScanGetCapReqParams.requestId =
31434 pwdiEXTScanGetCapabilitiesReqParams->requestId;
31435 halEXTScanGetCapReqParams.sessionId =
31436 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
31437
31438 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31439 " requestId %u "
31440 " sessionId %u ",
31441 halEXTScanGetCapReqParams.requestId,
31442 halEXTScanGetCapReqParams.sessionId);
31443
31444 wpalMemoryCopy(pSendBuffer+usDataOffset,
31445 &halEXTScanGetCapReqParams,
31446 sizeof(halEXTScanGetCapReqParams));
31447
31448 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31449
31450
31451 /*-------------------------------------------------------------------------
31452 Send EXTScan Stop Request to HAL
31453 -------------------------------------------------------------------------*/
31454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31455 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
31456 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
31457}
31458
31459/**
31460 @brief WDI_EXTScanGetCachedResultsReq
31461
31462 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
31463 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
31464 of the Req operation received from the device
31465 pUserData: user data will be passed back with the callback
31466
31467 @return SUCCESS or FAIL
31468*/
31469
31470WDI_Status
31471WDI_EXTScanGetCachedResultsReq(
31472 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
31473 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
31474 void* pUserData)
31475{
31476 WDI_EventInfoType wdiEventData;
31477
31478 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31479 "%s: %d Enter",__func__, __LINE__);
31480 /*------------------------------------------------------------------------
31481 Sanity Check
31482 ------------------------------------------------------------------------*/
31483 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31484 {
31485 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31486 "WDI API call before module is initialized - Fail request");
31487
31488 return WDI_STATUS_E_NOT_ALLOWED;
31489 }
31490
31491 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
31492 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
31493 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
31494 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
31495 wdiEventData.pUserData = pUserData;
31496
31497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31498}
31499
31500/**
31501 @brief WDI_ProcessEXTScanGetCachedResultsReq -
31502 Extended Scan Get Cached Result request to FW
31503
31504 @param pWDICtx : wdi context
31505 pEventData : indication data
31506
31507 @see
31508 @return none
31509*/
31510WDI_Status
31511WDI_ProcessEXTScanGetCachedResultsReq
31512(
31513 WDI_ControlBlockType* pWDICtx,
31514 WDI_EventInfoType* pEventData
31515)
31516{
31517 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
31518 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
31519 wpt_uint8* pSendBuffer = NULL;
31520 wpt_uint16 usSendSize = 0;
31521 wpt_uint16 usDataOffset = 0;
31522 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
31523
31524 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31525 "%s: %d Enter",__func__, __LINE__);
31526
31527 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31528 ( NULL == pEventData->pCBfnc ))
31529 {
31530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31531 "%s: Invalid parameters", __func__);
31532 WDI_ASSERT(0);
31533 return WDI_STATUS_E_FAILURE;
31534 }
31535
31536 pwdiEXTScanGetCachedResultsReqParams =
31537 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
31538 wdiEXTScanGetCachedResultsCb =
31539 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
31540
31541 /*-----------------------------------------------------------------------
31542 Get message buffer
31543 ! TO DO : proper conversion into the HAL Message Request Format
31544 -----------------------------------------------------------------------*/
31545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31546 pWDICtx,
31547 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
31548 sizeof(tHalExtScanGetScanReq),
31549 &pSendBuffer, &usDataOffset,
31550 &usSendSize))||
31551 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
31552 {
31553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31554 "Unable to get send buffer in %s %p %p %p", __func__,
31555 pEventData, pwdiEXTScanGetCachedResultsReqParams,
31556 wdiEXTScanGetCachedResultsCb);
31557 WDI_ASSERT(0);
31558 return WDI_STATUS_E_FAILURE;
31559 }
31560
31561 halEXTScanGetScanReqParams.requestId =
31562 pwdiEXTScanGetCachedResultsReqParams->requestId;
31563 halEXTScanGetScanReqParams.sessionId =
31564 pwdiEXTScanGetCachedResultsReqParams->sessionId;
31565 halEXTScanGetScanReqParams.flush =
31566 pwdiEXTScanGetCachedResultsReqParams->flush;
31567
31568 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31569 " requestId %u "
31570 " sessionId %u "
31571 " flush %u ",
31572 halEXTScanGetScanReqParams.requestId,
31573 halEXTScanGetScanReqParams.sessionId,
31574 halEXTScanGetScanReqParams.flush);
31575
31576 wpalMemoryCopy(pSendBuffer+usDataOffset,
31577 &halEXTScanGetScanReqParams,
31578 sizeof(halEXTScanGetScanReqParams));
31579
31580 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31581
31582
31583 /*-------------------------------------------------------------------------
31584 Send EXTScan Stop Request to HAL
31585 -------------------------------------------------------------------------*/
31586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31587 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
31588 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
31589}
31590
31591/**
31592 @brief WDI_EXTScanStopReq
31593
31594 @param WDI_EXTScanStopReqParams: Req parameter for the FW
31595 WDI_EXTScanStopRspCb: callback for passing back the response
31596 of the Req operation received from the device
31597 pUserData: user data will be passed back with the callback
31598
31599 @return SUCCESS or FAIL
31600*/
31601WDI_Status
31602WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
31603 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
31604 void* pUserData)
31605{
31606 WDI_EventInfoType wdiEventData;
31607
31608 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31609 "%s: %d ",__func__, __LINE__);
31610 /*------------------------------------------------------------------------
31611 Sanity Check
31612 ------------------------------------------------------------------------*/
31613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31614 {
31615 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31616 "WDI API call before module is initialized - Fail request");
31617
31618 return WDI_STATUS_E_NOT_ALLOWED;
31619 }
31620
31621 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
31622 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
31623 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
31624 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
31625 wdiEventData.pUserData = pUserData;
31626
31627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31628}
31629
31630/**
31631 @brief WDI_ProcessEXTScanStopReq -
31632 Extended Scan Stop request to FW
31633
31634 @param pWDICtx : wdi context
31635 pEventData : indication data
31636
31637 @see
31638 @return none
31639*/
31640WDI_Status
31641WDI_ProcessEXTScanStopReq
31642(
31643 WDI_ControlBlockType* pWDICtx,
31644 WDI_EventInfoType* pEventData
31645)
31646{
31647 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
31648 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
31649 wpt_uint8* pSendBuffer = NULL;
31650 wpt_uint16 usSendSize = 0;
31651 wpt_uint16 usDataOffset = 0;
31652 tHalExtScanStopReq halEXTScanStopReqParams;
31653
31654 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31655 "%s: %d ",__func__, __LINE__);
31656
31657 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31658 ( NULL == pEventData->pCBfnc ))
31659 {
31660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31661 "%s: Invalid parameters", __func__);
31662 WDI_ASSERT(0);
31663 return WDI_STATUS_E_FAILURE;
31664 }
31665
31666 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
31667 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
31668
31669 /*-----------------------------------------------------------------------
31670 Get message buffer
31671 ! TO DO : proper conversion into the HAL Message Request Format
31672 -----------------------------------------------------------------------*/
31673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31674 pWDICtx,
31675 WDI_EXTSCAN_STOP_REQ,
31676 sizeof(tHalExtScanStopReq),
31677 &pSendBuffer, &usDataOffset,
31678 &usSendSize))||
31679 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
31680 {
31681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31682 "Unable to get send buffer in %s %p %p %p", __func__,
31683 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
31684 WDI_ASSERT(0);
31685 return WDI_STATUS_E_FAILURE;
31686 }
31687
31688 halEXTScanStopReqParams.requestId =
31689 pwdiEXTScanStopReqParams->requestId;
31690 halEXTScanStopReqParams.sessionId =
31691 pwdiEXTScanStopReqParams->sessionId;
31692
31693 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31694 " halEXTScanStopReqParams.requestId %u "
31695 " halEXTScanStopReqParams.sessionId %u ",
31696 halEXTScanStopReqParams.requestId,
31697 halEXTScanStopReqParams.sessionId);
31698
31699 wpalMemoryCopy(pSendBuffer+usDataOffset,
31700 &halEXTScanStopReqParams,
31701 sizeof(halEXTScanStopReqParams));
31702
31703 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31704
31705
31706 /*-------------------------------------------------------------------------
31707 Send EXTScan Stop Request to HAL
31708 -------------------------------------------------------------------------*/
31709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31710 wdiEXTScanStopCb, pEventData->pUserData,
31711 WDI_EXTSCAN_STOP_RSP);
31712}
31713
31714/**
31715 @brief WDI_EXTScanStartReq
31716
31717 @param WDI_EXTScanStartReqParams: Req parameter for the FW
31718 WDI_EXTScanStartRspCb: callback for passing back the response
31719 of the Req operation received from the device
31720 pUserData: user data will be passed back with the callback
31721
31722 @return SUCCESS or FAIL
31723*/
31724WDI_Status
31725WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
31726 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
31727 void* pUserData)
31728{
31729 WDI_EventInfoType wdiEventData;
31730
31731 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31732 "%s: %d Enter",__func__, __LINE__);
31733 /*------------------------------------------------------------------------
31734 Sanity Check
31735 ------------------------------------------------------------------------*/
31736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31737 {
31738 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31739 "WDI API call before module is initialized - Fail request");
31740
31741 return WDI_STATUS_E_NOT_ALLOWED;
31742 }
31743
31744 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
31745 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
31746 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
31747 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
31748 wdiEventData.pUserData = pUserData;
31749
31750 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31751}
31752
31753/**
31754 @brief WDI_ProcessEXTScanStartReq -
31755 Extended Scan Start Request to FW
31756
31757 @param pWDICtx : wdi context
31758 pEventData : indication data
31759
31760 @see
31761 @return none
31762*/
31763WDI_Status
31764WDI_ProcessEXTScanStartReq
31765(
31766 WDI_ControlBlockType* pWDICtx,
31767 WDI_EventInfoType* pEventData
31768)
31769{
31770 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
31771 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
31772 wpt_uint8* pSendBuffer = NULL;
31773 wpt_uint16 usSendSize = 0;
31774 wpt_uint16 usDataOffset = 0;
31775 tpHalExtScanStartReq pHalExtScanStartReqParams;
31776 int i = 0;
31777 int j = 0;
31778
31779 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31780 "%s: %d Enter",__func__, __LINE__);
31781
31782 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31783 ( NULL == pEventData->pCBfnc ))
31784 {
31785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31786 "%s: Invalid parameters", __func__);
31787 WDI_ASSERT(0);
31788 return WDI_STATUS_E_FAILURE;
31789 }
31790
31791 pwdiEXTScanStartReqParams =
31792 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
31793 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
31794
31795 /*-----------------------------------------------------------------------
31796 Get message buffer
31797 ! TO DO : proper conversion into the HAL Message Request Format
31798 -----------------------------------------------------------------------*/
31799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31800 pWDICtx,
31801 WDI_EXTSCAN_START_REQ,
31802 sizeof(tHalExtScanStartReq),
31803 &pSendBuffer, &usDataOffset,
31804 &usSendSize))||
31805 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
31806 {
31807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31808 "Unable to get send buffer in %s %p %p %p", __func__,
31809 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
31810 WDI_ASSERT(0);
31811 return WDI_STATUS_E_FAILURE;
31812 }
31813
31814 pHalExtScanStartReqParams =
31815 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
31816
31817 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
31818 pHalExtScanStartReqParams->maxApPerScan =
31819 pwdiEXTScanStartReqParams->maxAPperScan;
31820 pHalExtScanStartReqParams->reportThreshold =
31821 pwdiEXTScanStartReqParams->reportThreshold;
31822 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
31823 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
31824 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
31825
31826 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
31827 {
31828 pHalExtScanStartReqParams->bucketData[i].bucketId =
31829 pwdiEXTScanStartReqParams->buckets[i].bucket;
31830 pHalExtScanStartReqParams->bucketData[i].channelBand =
31831 pwdiEXTScanStartReqParams->buckets[i].band;
31832 pHalExtScanStartReqParams->bucketData[i].period =
31833 pwdiEXTScanStartReqParams->buckets[i].period;
31834 pHalExtScanStartReqParams->bucketData[i].reportEvents =
31835 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
31836 pHalExtScanStartReqParams->bucketData[i].numChannels =
31837 pwdiEXTScanStartReqParams->buckets[i].numChannels;
31838
31839 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
31840 {
31841 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
31842 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
31843 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
31844 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
31845 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
31846 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
31847 }
31848
31849 }
31850
31851
31852 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31853 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
31854 " sessionId %u numBuckets%u ",
31855 pHalExtScanStartReqParams->basePeriod,
31856 pHalExtScanStartReqParams->maxApPerScan,
31857 pHalExtScanStartReqParams->reportThreshold,
31858 pHalExtScanStartReqParams->requestId,
31859 pHalExtScanStartReqParams->sessionId,
31860 pHalExtScanStartReqParams->numBuckets);
31861
31862 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
31863 {
31864 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
31865 " %d) bucketId %u channelBand %u period %u "
31866 " reportEvents %u numChannels %u ",i,
31867 pHalExtScanStartReqParams->bucketData[i].bucketId,
31868 pHalExtScanStartReqParams->bucketData[i].channelBand,
31869 pHalExtScanStartReqParams->bucketData[i].period,
31870 pHalExtScanStartReqParams->bucketData[i].reportEvents,
31871 pHalExtScanStartReqParams->bucketData[i].numChannels);
31872
31873 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
31874 {
31875 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31876 "%d) channel %u dwellTimeMs %u passive %u ",j,
31877 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
31878 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
31879 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
31880 }
31881
31882 }
31883
Dino Mycle41bdc942014-06-10 11:30:24 +053031884 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31885
31886 /*-------------------------------------------------------------------------
31887 Send EXTSCAN Start Request to HAL
31888 -------------------------------------------------------------------------*/
31889 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31890 wdiEXTScanStartCb, pEventData->pUserData,
31891 WDI_EXTSCAN_START_RSP);
31892}
31893
31894/**
31895 @brief WDI_EXTScanSetBSSIDHotlistReq
31896
31897 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
31898 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
31899 of the Req operation received from the device
31900 pUserData: user data will be passed back with the callback
31901
31902 @return SUCCESS or FAIL
31903*/
31904WDI_Status
31905WDI_EXTScanSetBSSIDHotlistReq(
31906 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
31907 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
31908 void* pUserData)
31909{
31910 WDI_EventInfoType wdiEventData;
31911
31912 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31913 "%s: %d Enter ",__func__, __LINE__);
31914 /*------------------------------------------------------------------------
31915 Sanity Check
31916 ------------------------------------------------------------------------*/
31917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31918 {
31919 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31920 "WDI API call before module is initialized - Fail request");
31921
31922 return WDI_STATUS_E_NOT_ALLOWED;
31923 }
31924
31925 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
31926 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
31927 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
31928 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
31929 wdiEventData.pUserData = pUserData;
31930
31931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31932}
31933
31934/**
31935 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
31936 Extended Scan Set BSSSID Hotlist Request to FW
31937
31938 @param pWDICtx : wdi context
31939 pEventData : indication data
31940
31941 @see
31942 @return none
31943*/
31944WDI_Status
31945WDI_ProcessEXTScanSetBSSIDHotlistReq
31946(
31947 WDI_ControlBlockType* pWDICtx,
31948 WDI_EventInfoType* pEventData
31949)
31950{
31951 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
31952 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
31953 wpt_uint8* pSendBuffer = NULL;
31954 wpt_uint16 usSendSize = 0;
31955 wpt_uint16 usDataOffset = 0;
31956 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
31957 int i;
31958
31959 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31960 "%s: %d Enter",__func__, __LINE__);
31961
31962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31963 ( NULL == pEventData->pCBfnc ))
31964 {
31965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31966 "%s: Invalid parameters", __func__);
31967 WDI_ASSERT(0);
31968 return WDI_STATUS_E_FAILURE;
31969 }
31970
31971 pwdiEXTScanSetBSSIDHotlistReqParams =
31972 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
31973 wdiEXTScanSetBSSIDHotlistRspCb =
31974 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
31975
31976 /*-----------------------------------------------------------------------
31977 Get message buffer
31978 ! TO DO : proper conversion into the HAL Message Request Format
31979 -----------------------------------------------------------------------*/
31980 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31981 pWDICtx,
31982 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
31983 sizeof(tHalBssidHotlistSetReq),
31984 &pSendBuffer, &usDataOffset,
31985 &usSendSize))||
31986 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
31987 {
31988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31989 "Unable to get send buffer in %s %p %p %p", __func__,
31990 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
31991 wdiEXTScanSetBSSIDHotlistRspCb);
31992 WDI_ASSERT(0);
31993 return WDI_STATUS_E_FAILURE;
31994 }
31995 pHalBssidHotlistSetReqParams =
31996 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
31997
31998 pHalBssidHotlistSetReqParams->requestId =
31999 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32000
32001 pHalBssidHotlistSetReqParams->sessionId =
32002 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32003
32004 pHalBssidHotlistSetReqParams->numAp =
32005 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32006
32007 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32008
32009 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32010 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32011 WDI_MAC_ADDR_LEN);
32012
32013 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32014 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32015
32016 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32017 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32018
32019 pHalBssidHotlistSetReqParams->ap[i].channel =
32020 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32021
32022 }
32023
32024 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32025 "ReqID %u sessionId %u numAp %u ",
32026 pHalBssidHotlistSetReqParams->requestId,
32027 pHalBssidHotlistSetReqParams->sessionId,
32028 pHalBssidHotlistSetReqParams->numAp);
32029
32030 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32031
32032 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32033 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32034 __func__, __LINE__, i,
32035 pHalBssidHotlistSetReqParams->ap[i].bssid,
32036 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32037 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32038 pHalBssidHotlistSetReqParams->ap[i].channel);
32039
32040 }
32041
32042 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32043
32044
32045 /*-------------------------------------------------------------------------
32046 Send EXTScan Stop Request to HAL
32047 -------------------------------------------------------------------------*/
32048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32049 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32050 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32051}
32052
32053/**
32054 @brief WDI_EXTScanResetBSSIDHotlistReq
32055
32056 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32057 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32058 of the Req operation received from the device
32059 pUserData: user data will be passed back with the callback
32060
32061 @return SUCCESS or FAIL
32062*/
32063WDI_Status
32064WDI_EXTScanResetBSSIDHotlistReq(
32065 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32066 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32067 void* pUserData)
32068{
32069 WDI_EventInfoType wdiEventData;
32070
32071 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32072 "%s: %d",__func__, __LINE__);
32073 /*------------------------------------------------------------------------
32074 Sanity Check
32075 ------------------------------------------------------------------------*/
32076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32077 {
32078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32079 "WDI API call before module is initialized - Fail request");
32080
32081 return WDI_STATUS_E_NOT_ALLOWED;
32082 }
32083
32084 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32085 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32086 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32087 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32088 wdiEventData.pUserData = pUserData;
32089
32090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32091}
32092
32093/**
32094 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32095 Extended Scan reset BSSID hotlist Request to FW
32096
32097 @param pWDICtx : wdi context
32098 pEventData : indication data
32099
32100 @see
32101 @return none
32102*/
32103WDI_Status
32104WDI_ProcessEXTScanResetBSSIDHotlistReq
32105(
32106 WDI_ControlBlockType* pWDICtx,
32107 WDI_EventInfoType* pEventData
32108)
32109{
32110 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32111 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32112 wpt_uint8* pSendBuffer = NULL;
32113 wpt_uint16 usSendSize = 0;
32114 wpt_uint16 usDataOffset = 0;
32115 tpHalHotlistResetReq pHalHotlistResetReqParams;
32116
32117 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32118 "%s: %d",__func__, __LINE__);
32119
32120 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32121 ( NULL == pEventData->pCBfnc ))
32122 {
32123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32124 "%s: Invalid parameters", __func__);
32125 WDI_ASSERT(0);
32126 return WDI_STATUS_E_FAILURE;
32127 }
32128
32129 pwdiEXTScanResetBSSIDHotlistReqParams =
32130 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32131 wdiEXTScanResetBSSIDHotlistRspCb =
32132 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32133
32134 /*-----------------------------------------------------------------------
32135 Get message buffer
32136 ! TO DO : proper conversion into the HAL Message Request Format
32137 -----------------------------------------------------------------------*/
32138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32139 pWDICtx,
32140 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32141 sizeof(tHalHotlistResetReq),
32142 &pSendBuffer, &usDataOffset,
32143 &usSendSize))||
32144 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32145 {
32146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32147 "Unable to get send buffer in %s %p %p %p", __func__,
32148 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32149 wdiEXTScanResetBSSIDHotlistRspCb);
32150 WDI_ASSERT(0);
32151 return WDI_STATUS_E_FAILURE;
32152 }
32153 pHalHotlistResetReqParams =
32154 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32155
32156 pHalHotlistResetReqParams->requestId =
32157 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32158
32159 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32160
32161 /*-------------------------------------------------------------------------
32162 Send EXTScan Stop Request to HAL
32163 -------------------------------------------------------------------------*/
32164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32165 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32166 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32167}
32168
32169/**
32170 @brief WDI_EXTScanSetSignfRSSIChangeReq
32171
32172 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32173 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32174 of the Req operation received from the device
32175 pUserData: user data will be passed back with the callback
32176
32177 @return SUCCESS or FAIL
32178*/
32179WDI_Status
32180WDI_EXTScanSetSignfRSSIChangeReq(
32181 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32182 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32183 void* pUserData)
32184{
32185 WDI_EventInfoType wdiEventData;
32186
32187 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32188 "%s: %d ",__func__, __LINE__);
32189 /*------------------------------------------------------------------------
32190 Sanity Check
32191 ------------------------------------------------------------------------*/
32192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32193 {
32194 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32195 "WDI API call before module is initialized - Fail request");
32196
32197 return WDI_STATUS_E_NOT_ALLOWED;
32198 }
32199
32200 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32201 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32202 wdiEventData.uEventDataSize =
32203 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32204 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32205 wdiEventData.pUserData = pUserData;
32206
32207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32208}
32209
32210/**
32211 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32212 Extended Scan set Significant RSSI change Request to FW
32213
32214 @param pWDICtx : wdi context
32215 pEventData : indication data
32216
32217 @see
32218 @return none
32219*/
32220WDI_Status
32221WDI_ProcessEXTScanSetSignifRSSIChangeReq
32222(
32223 WDI_ControlBlockType* pWDICtx,
32224 WDI_EventInfoType* pEventData
32225)
32226{
32227 WDI_EXTScanSetSignfRSSIChangeReqParams*
32228 pwdiEXTScanSetSignfRSSIChangeReqParams;
32229 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32230 wpt_uint8* pSendBuffer = NULL;
32231 wpt_uint16 usSendSize = 0;
32232 wpt_uint16 usDataOffset = 0;
32233 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32234 int i;
32235
32236 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32237 "%s: %d Enter",__func__, __LINE__);
32238
32239 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32240 ( NULL == pEventData->pCBfnc ))
32241 {
32242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32243 "%s: Invalid parameters", __func__);
32244 WDI_ASSERT(0);
32245 return WDI_STATUS_E_FAILURE;
32246 }
32247
32248 pwdiEXTScanSetSignfRSSIChangeReqParams =
32249 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32250 wdiEXTScanSetSignfRSSIChangeRspCb =
32251 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32252
32253 /*-----------------------------------------------------------------------
32254 Get message buffer
32255 ! TO DO : proper conversion into the HAL Message Request Format
32256 -----------------------------------------------------------------------*/
32257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32258 pWDICtx,
32259 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32260 sizeof(tHalSigRssiSetReq),
32261 &pSendBuffer, &usDataOffset,
32262 &usSendSize))||
32263 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32264 {
32265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32266 "Unable to get send buffer in %s %p %p %p", __func__,
32267 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32268 wdiEXTScanSetSignfRSSIChangeRspCb);
32269 WDI_ASSERT(0);
32270 return WDI_STATUS_E_FAILURE;
32271 }
32272
32273 pHalSigRssiSetReqParams =
32274 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32275
32276 pHalSigRssiSetReqParams->requestId =
32277 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32278 pHalSigRssiSetReqParams->sessionId =
32279 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32280 pHalSigRssiSetReqParams->rssiSampleSize =
32281 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32282 pHalSigRssiSetReqParams->lostApSampleSize =
32283 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32284 pHalSigRssiSetReqParams->minBreaching =
32285 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
32286 pHalSigRssiSetReqParams->numAp =
32287 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
32288
32289
32290 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
32291
32292 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
32293 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
32294 WDI_MAC_ADDR_LEN);
32295
32296 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
32297 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
32298
32299 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
32300 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
32301
32302 pHalSigRssiSetReqParams->ap[i].channel =
32303 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
32304
32305 }
32306
32307
32308 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32309 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
32310 " minBreaching %u numAp %u ",
32311 pHalSigRssiSetReqParams->requestId,
32312 pHalSigRssiSetReqParams->sessionId,
32313 pHalSigRssiSetReqParams->rssiSampleSize,
32314 pHalSigRssiSetReqParams->lostApSampleSize,
32315 pHalSigRssiSetReqParams->minBreaching,
32316 pHalSigRssiSetReqParams->numAp);
32317
32318 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
32319
32320 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32321 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32322 i,
32323 pHalSigRssiSetReqParams->ap[i].bssid,
32324 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
32325 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
32326 pHalSigRssiSetReqParams->ap[i].channel);
32327
32328 }
32329
32330 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32331
32332
32333 /*-------------------------------------------------------------------------
32334 Send EXTScan Stop Request to HAL
32335 -------------------------------------------------------------------------*/
32336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32337 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
32338 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
32339}
32340
32341/**
32342 @brief WDI_EXTScanResetSignfRSSIChangeReq
32343
32344 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
32345 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
32346 of the Req operation received from the device
32347 pUserData: user data will be passed back with the callback
32348
32349 @return SUCCESS or FAIL
32350*/
32351WDI_Status
32352WDI_EXTScanResetSignfRSSIChangeReq(
32353 WDI_EXTScanResetSignfRSSIChangeReqParams*
32354 pwdiEXTScanResetSignfRSSIChangeReqParams,
32355 WDI_EXTScanResetSignfRSSIChangeRspCb
32356 wdiEXTScanResetSignfRSSIChangeRspCb,
32357 void* pUserData)
32358{
32359 WDI_EventInfoType wdiEventData;
32360
32361 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32362 "%s: %d ",__func__, __LINE__);
32363 /*------------------------------------------------------------------------
32364 Sanity Check
32365 ------------------------------------------------------------------------*/
32366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32367 {
32368 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32369 "WDI API call before module is initialized - Fail request");
32370
32371 return WDI_STATUS_E_NOT_ALLOWED;
32372 }
32373
32374 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
32375 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
32376 wdiEventData.uEventDataSize =
32377 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
32378 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
32379 wdiEventData.pUserData = pUserData;
32380
32381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32382}
32383
32384/**
32385 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
32386 Extended Scana reset Significant RSSI change Request to FW
32387
32388 @param pWDICtx : wdi context
32389 pEventData : indication data
32390
32391 @see
32392 @return none
32393*/
32394WDI_Status
32395WDI_ProcessEXTScanResetSignfRSSIChangeReq
32396(
32397 WDI_ControlBlockType* pWDICtx,
32398 WDI_EventInfoType* pEventData
32399)
32400{
32401 WDI_EXTScanResetSignfRSSIChangeReqParams*
32402 pwdiEXTScanResetSignfRSSIChangeReqParams;
32403 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32404 wpt_uint8* pSendBuffer = NULL;
32405 wpt_uint16 usSendSize = 0;
32406 wpt_uint16 usDataOffset = 0;
32407 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
32408
32409 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32410 "%s: %d ",__func__, __LINE__);
32411
32412 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32413 ( NULL == pEventData->pCBfnc ))
32414 {
32415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32416 "%s: Invalid parameters", __func__);
32417 WDI_ASSERT(0);
32418 return WDI_STATUS_E_FAILURE;
32419 }
32420
32421 pwdiEXTScanResetSignfRSSIChangeReqParams =
32422 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
32423 wdiEXTScanResetSignfRSSIChangeRspCb =
32424 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32425
32426 /*-----------------------------------------------------------------------
32427 Get message buffer
32428 ! TO DO : proper conversion into the HAL Message Request Format
32429 -----------------------------------------------------------------------*/
32430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32431 pWDICtx,
32432 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
32433 sizeof(tHalSigRssiResetReq),
32434 &pSendBuffer, &usDataOffset,
32435 &usSendSize))||
32436 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
32437 {
32438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32439 "Unable to get send buffer in %s %p %p %p", __func__,
32440 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
32441 wdiEXTScanResetSignfRSSIChangeRspCb);
32442 WDI_ASSERT(0);
32443 return WDI_STATUS_E_FAILURE;
32444 }
32445 pHalSigRssiResetReqParams =
32446 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
32447
32448 pHalSigRssiResetReqParams->requestId =
32449 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
32450
32451 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32452
32453
32454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32455 wdiEXTScanResetSignfRSSIChangeRspCb,
32456 pEventData->pUserData,
32457 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
32458}
32459
32460/**
32461 @brief Process Extended Scan Start Rsp function (called when a response
32462 is being received over the bus from HAL)
32463
32464 @param pWDICtx: pointer to the WLAN DAL context
32465 pEventData: pointer to the event information structure
32466
32467 @see
32468 @return Result of the function call
32469*/
32470WDI_Status
32471WDI_ProcessEXTScanStartRsp
32472(
32473 WDI_ControlBlockType* pWDICtx,
32474 WDI_EventInfoType* pEventData
32475)
32476{
32477 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
32478
32479 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32480 "%s: %d",__func__, __LINE__);
32481 /*-------------------------------------------------------------------------
32482 Sanity check
32483 -------------------------------------------------------------------------*/
32484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32485 ( NULL == pEventData->pEventData))
32486 {
32487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32488 "%s: Invalid parameters", __func__);
32489 WDI_ASSERT(0);
32490 return WDI_STATUS_E_FAILURE;
32491 }
32492
32493 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32494 if ( NULL == wdiEXTScanStartRspCb)
32495 {
32496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32497 "%s: Callback function Invalid", __func__);
32498 WDI_ASSERT(0);
32499 return WDI_STATUS_E_FAILURE;
32500 }
32501
32502 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
32503
32504 return WDI_STATUS_SUCCESS;
32505}
32506
32507
32508/**
32509 @brief Process Extended Scan Stop Rsp function (called when a response
32510 is being received over the bus from HAL)
32511
32512 @param pWDICtx: pointer to the WLAN DAL context
32513 pEventData: pointer to the event information structure
32514
32515 @see
32516 @return Result of the function call
32517*/
32518WDI_Status
32519WDI_ProcessEXTScanStopRsp
32520(
32521 WDI_ControlBlockType* pWDICtx,
32522 WDI_EventInfoType* pEventData
32523)
32524{
32525 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
32526
32527 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32528 "%s: %d",__func__, __LINE__);
32529
32530
32531 /*-------------------------------------------------------------------------
32532 Sanity check
32533 -------------------------------------------------------------------------*/
32534 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32535 ( NULL == pEventData->pEventData))
32536 {
32537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32538 "%s: Invalid parameters", __func__);
32539 WDI_ASSERT(0);
32540 return WDI_STATUS_E_FAILURE;
32541 }
32542
32543 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32544 if ( NULL == wdiEXTScanStopRspCb)
32545 {
32546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32547 "%s: Callback function Invalid", __func__);
32548 WDI_ASSERT(0);
32549 return WDI_STATUS_E_FAILURE;
32550 }
32551
32552 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32553
32554 return WDI_STATUS_SUCCESS;
32555}
32556
32557/**
32558 @brief Process Extended Scan Get Cached Rsp function (called when a response
32559 is being received over the bus from HAL)
32560
32561 @param pWDICtx: pointer to the WLAN DAL context
32562 pEventData: pointer to the event information structure
32563
32564 @see
32565 @return Result of the function call
32566*/
32567WDI_Status
32568WDI_ProcessEXTScanGetCachedResultsRsp
32569(
32570 WDI_ControlBlockType* pWDICtx,
32571 WDI_EventInfoType* pEventData
32572)
32573{
32574 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
32575
32576 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32577 "%s: %d Enter",__func__, __LINE__);
32578
32579
32580 /*-------------------------------------------------------------------------
32581 Sanity check
32582 -------------------------------------------------------------------------*/
32583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32584 ( NULL == pEventData->pEventData))
32585 {
32586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32587 "%s: Invalid parameters", __func__);
32588 WDI_ASSERT(0);
32589 return WDI_STATUS_E_FAILURE;
32590 }
32591
32592 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32593 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
32594 {
32595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32596 "%s: Callback function Invalid", __func__);
32597 WDI_ASSERT(0);
32598 return WDI_STATUS_E_FAILURE;
32599 }
32600
32601 wdiEXTScanGetCachedResultsRspCb(
32602 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32603
32604 return WDI_STATUS_SUCCESS;
32605}
32606
32607/**
32608 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
32609 is being received over the bus from HAL)
32610
32611 @param pWDICtx: pointer to the WLAN DAL context
32612 pEventData: pointer to the event information structure
32613
32614 @see
32615 @return Result of the function call
32616*/
32617WDI_Status
32618WDI_ProcessEXTScanGetCapabilitiesRsp
32619(
32620 WDI_ControlBlockType* pWDICtx,
32621 WDI_EventInfoType* pEventData
32622)
32623{
32624 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32625
32626 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32627 "%s: %d ",__func__, __LINE__);
32628
32629
32630 /*-------------------------------------------------------------------------
32631 Sanity check
32632 -------------------------------------------------------------------------*/
32633 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32634 ( NULL == pEventData->pEventData))
32635 {
32636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32637 "%s: Invalid parameters", __func__);
32638 WDI_ASSERT(0);
32639 return WDI_STATUS_E_FAILURE;
32640 }
32641
32642 wdiEXTScanGetCapabilitiesRspCb =
32643 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
32644 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
32645 {
32646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32647 "%s: Callback function Invalid", __func__);
32648 WDI_ASSERT(0);
32649 return WDI_STATUS_E_FAILURE;
32650 }
32651
32652 wdiEXTScanGetCapabilitiesRspCb(
32653 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32654
32655 return WDI_STATUS_SUCCESS;
32656}
32657
32658/**
32659 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
32660 response is being received over the bus from HAL)
32661
32662 @param pWDICtx: pointer to the WLAN DAL context
32663 pEventData: pointer to the event information structure
32664
32665 @see
32666 @return Result of the function call
32667*/
32668WDI_Status
32669WDI_ProcessEXTScanSetHotlistBSSIDRsp
32670(
32671 WDI_ControlBlockType* pWDICtx,
32672 WDI_EventInfoType* pEventData
32673)
32674{
32675 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32676
32677 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32678 "%s: %d ",__func__, __LINE__);
32679
32680
32681 /*-------------------------------------------------------------------------
32682 Sanity check
32683 -------------------------------------------------------------------------*/
32684 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32685 ( NULL == pEventData->pEventData))
32686 {
32687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32688 "%s: Invalid parameters", __func__);
32689 WDI_ASSERT(0);
32690 return WDI_STATUS_E_FAILURE;
32691 }
32692
32693 wdiEXTScanSetBSSIDHotlistRspCb =
32694 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32695 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
32696 {
32697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32698 "%s: Callback function Invalid", __func__);
32699 WDI_ASSERT(0);
32700 return WDI_STATUS_E_FAILURE;
32701 }
32702
32703 wdiEXTScanSetBSSIDHotlistRspCb(
32704 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32705
32706 return WDI_STATUS_SUCCESS;
32707}
32708
32709/**
32710 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
32711 when a response is being received over the bus from HAL)
32712
32713 @param pWDICtx: pointer to the WLAN DAL context
32714 pEventData: pointer to the event information structure
32715
32716 @see
32717 @return Result of the function call
32718*/
32719WDI_Status
32720WDI_ProcessEXTScanResetHotlistBSSIDRsp
32721(
32722 WDI_ControlBlockType* pWDICtx,
32723 WDI_EventInfoType* pEventData
32724)
32725{
32726 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32727
32728 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32729 "%s: %d ",__func__, __LINE__);
32730
32731
32732 /*-------------------------------------------------------------------------
32733 Sanity check
32734 -------------------------------------------------------------------------*/
32735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32736 ( NULL == pEventData->pEventData))
32737 {
32738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32739 "%s: Invalid parameters", __func__);
32740 WDI_ASSERT(0);
32741 return WDI_STATUS_E_FAILURE;
32742 }
32743
32744 wdiEXTScanResetBSSIDHotlistRspCb =
32745 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32746 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
32747 {
32748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32749 "%s: Callback function Invalid", __func__);
32750 WDI_ASSERT(0);
32751 return WDI_STATUS_E_FAILURE;
32752 }
32753
32754 wdiEXTScanResetBSSIDHotlistRspCb(
32755 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32756
32757 return WDI_STATUS_SUCCESS;
32758}
32759
32760/**
32761 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
32762 when a response is being received over the bus from HAL)
32763
32764 @param pWDICtx: pointer to the WLAN DAL context
32765 pEventData: pointer to the event information structure
32766
32767 @see
32768 @return Result of the function call
32769*/
32770WDI_Status
32771WDI_ProcessEXTScanSetSignfRSSIChangeRsp
32772(
32773 WDI_ControlBlockType* pWDICtx,
32774 WDI_EventInfoType* pEventData
32775)
32776{
32777 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32778
32779 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32780 "%s: %d",__func__, __LINE__);
32781
32782
32783 /*-------------------------------------------------------------------------
32784 Sanity check
32785 -------------------------------------------------------------------------*/
32786 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32787 ( NULL == pEventData->pEventData))
32788 {
32789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32790 "%s: Invalid parameters", __func__);
32791 WDI_ASSERT(0);
32792 return WDI_STATUS_E_FAILURE;
32793 }
32794
32795 wdiEXTScanSetSignfRSSIChangeRspCb =
32796 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32797 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
32798 {
32799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32800 "%s: Callback function Invalid", __func__);
32801 WDI_ASSERT(0);
32802 return WDI_STATUS_E_FAILURE;
32803 }
32804
32805 wdiEXTScanSetSignfRSSIChangeRspCb(
32806 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32807
32808 return WDI_STATUS_SUCCESS;
32809}
32810
32811/**
32812 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
32813 (called when a response is being received over the bus from HAL)
32814
32815 @param pWDICtx: pointer to the WLAN DAL context
32816 pEventData: pointer to the event information structure
32817
32818 @see
32819 @return Result of the function call
32820*/
32821WDI_Status
32822WDI_ProcessEXTScanResetSignfRSSIChangeRsp
32823(
32824 WDI_ControlBlockType* pWDICtx,
32825 WDI_EventInfoType* pEventData
32826)
32827{
32828 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32829
32830 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32831 "%s: %d Enter",__func__, __LINE__);
32832
32833
32834 /*-------------------------------------------------------------------------
32835 Sanity check
32836 -------------------------------------------------------------------------*/
32837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32838 ( NULL == pEventData->pEventData))
32839 {
32840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32841 "%s: Invalid parameters", __func__);
32842 WDI_ASSERT(0);
32843 return WDI_STATUS_E_FAILURE;
32844 }
32845
32846 wdiEXTScanResetSignfRSSIChangeRspCb =
32847 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32848 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
32849 {
32850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32851 "%s: Callback function Invalid", __func__);
32852 WDI_ASSERT(0);
32853 return WDI_STATUS_E_FAILURE;
32854 }
32855
32856 wdiEXTScanResetSignfRSSIChangeRspCb(
32857 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32858
32859 return WDI_STATUS_SUCCESS;
32860}
32861#endif /* WLAN_FEATURE_EXTSCAN */